szs 发表于 2018-7-29 12:30:45

ansible自动化部署zabbix客户端

zabbix_client_install.yml内容  
# cat /etc/ansible/roles/zabbix_client_install.yml
  
---
  
- hosts: pltest
  
remote_user: root
  
gather_facts: True
  
roles:
  
    - zabbix_client_install
  

  
files包含在不同平台上已经编译好的zabbix客户端程序
  
handlers目录下定义了配置文件发生变化后触发重启进程(notify)
  
# cat /etc/ansible/roles/zabbix_client_install/handlers/main.yml
  
- name: restart zabbix_agentd
  
service: name=zabbix_agentd state=restarted
  

  
tasks下角色的任务列表
  
# cat /etc/ansible/roles/zabbix_client_install/tasks/main.yml
  
- include: copy.yml
  
- include: install.yml
  
- include: delete.yml
  

  
copy.yml文件中使用tags定义标签,when语句判断os版本,复制对应版本的客户端程序。
  
tags用于让用户选择运行或路过playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过tags跳过此些代码片断。
  
在task后添加when子句即可使用条件测试;when语句支持Jinja2表达式语法。
  
when语句中还可以使用facts或playbook中定义的变量。
  
# cat /etc/ansible/roles/zabbix_client_install/tasks/copy.yml
  
- name: Create zabbix user in centos client
  
tags:
  
    - create_user
  
user: name={{ zabbix_user }} state=present createhome=no shell=/sbin/nologin
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7 or ansible_distribution_major_version|int == 6
  
- name: Copy zabbix client software to centos client
  
tags:
  
    - copy_files
  
copy: src=files/zabbix_agent_centos7.tgz dest=/tmp/zabbix_agent_centos7.tgz owner=root group=root
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7
  
- name: Copy zabbix client software to centos client
  
tags:
  
    - copy_files
  
copy: src=files/zabbix_agent_centos6.tgz dest=/tmp/zabbix_agent_centos6.tgz owner=root group=root
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 6
  
- name: Uncompression zabbix client software to centos client
  
tags:
  
    - un_files
  
shell: tar xf /tmp/zabbix_agent_centos7.tgz -C {{ zabbix_dir }}/
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7
  
- name: Uncompression zabbix client software to centos client
  
tags:
  
    - un_files
  
shell: tar xf /tmp/zabbix_agent_centos6.tgz -C {{ zabbix_dir }}/
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 6
  
- name: Copy zabbix start script to centos client
  
tags:
  
    - copy_script
  
template: src=zabbix_agentd_centos7 dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7
  
- name: Copy zabbix start script to centos client
  
tags:
  
    - copy_script
  
template: src=zabbix_agentd_centos6 dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 6
  
- name: Copy zabbix config to centos client
  
tags:
  
    - copy_config
  
template: src=zabbix_agentd_centos7.conf dest={{ zabbix_dir }}/zabbix/etc/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644
  
notify:
  
    - restart zabbix_agentd
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7
  
- name: Copy zabbix config to centos client
  
tags:
  
    - copy_config
  
template: src=zabbix_agentd_centos6.conf dest={{ zabbix_dir }}/zabbix/etc/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644
  
notify:
  
    - restart zabbix_agentd
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 6
  

  
install.yml修改目录权限,启动服务
  
# cat /etc/ansible/roles/zabbix_client_install/tasks/install.yml
  
- name: Modify Zabbix Dir Permission In Centos Client
  
tags:
  
    - change_perm
  
file: path={{ zabbix_dir }}/zabbix owner={{ zabbix_user }} group={{ zabbix_user }} mode=0755
  
- name: Add Start Zabbix Service In Centos Client
  
tags:
  
    - add_start_script
  
shell: chkconfig --add zabbix_agentd
  
- name: Start Zabbix Service In Centos Client
  
tags:
  
    - start_server
  
service: name=zabbix_agentd state=started
  

  
delete.yml安装完删除软件包
  
# cat /etc/ansible/roles/zabbix_client_install/tasks/delete.yml
  
- name: Delete zabbix compression software in centos client
  
tags:
  
    - delete_files
  
file: path=/tmp/zabbix_agent_centos7.tgz state=absent
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 7
  
- name: Delete zabbix compression software in centos client
  
tags:
  
    - delete_files
  
file: path=/tmp/zabbix_agent_centos6.tgz state=absent
  
when: ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 6
  

  
templates目录下的模板文件
  
zabbix_agentd_centos{6|7}服务启动脚本
  
# cat /etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd_centos6
  
BASEDIR={{ zabbix_dir }}/zabbix
  
zabbix_agentd_centos{6|7}.conf配置文件
  
# cat /etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd_centos6.conf
  
Server={{ zabbix_server_ip }}
  
ServerActive={{ zabbix_server_ip }}
  
Hostname={{ ansible_default_ipv4.address }}
  

  
vars目录下定义变量文件
  
# cat /etc/ansible/roles/zabbix_client_install/vars/main.yml
  
zabbix_dir: /usr/local
  
zabbix_user: zabbix
  
zabbix_server_ip: 192.168.1.49
页: [1]
查看完整版本: ansible自动化部署zabbix客户端