Ansible的目录树结构以下:nginx
# tree zabbix/shell
zabbix/ ├── defaults ├── files │ └── zabbix.tar.gz ├── handlers ├── meta ├── tasks │ └── main.yml ├── templates │ └── zabbix_agentd.conf.j2 └── vars └── main.yaml
zabbix.tar.gz:tar包是编译安装完zabbix后打的tar包tomcat
zabbix_agentd.conf.j2:编译安装完zabbix,copy的zabbix_agentd.conf文件,略微添加点东西,后面会展现。bash
zabbix_agentd:文件也是编译安装完zabbix,copy的启动脚本文件,修改了里面的zabbix_home变量。tcp
zabbix playbook文件以下:ide
cat zabbix.yml - hosts: all roles: - zabbix
tasks文件内容以下:spa
# cat main.yml - name: scp zabbix 到 client copy: src=zabbix.tar.gz dest={{ zabbix_home }} - name: scp zabbix_aegntd 到 client copy: src=/tmp/zabbix_agentd dest=/etc/init.d/ mode=777 - name: tar zxf zabbix.tar.gz 解压 shell: cd {{ zabbix_home }} && tar -zxf zabbix.tar.gz - name: Copy zabbix_agent.conf Config file template: > src=zabbix_agentd.conf.j2 dest=/usr/local/zabbix/etc/zabbix_agentd.conf mode=0644 owner=root group=root - name: restart zabbix service: name=zabbix_agentd state=restarted
vars的内容以下:rest
# cat main.yaml zabbix_home: /usr/local
zabbix_agentd.conf.j2模板的文件内容以下:ip
#grep -v '^#' zabbix_agentd.conf.j2 | grep -v '^$' LogFile=/tmp/zabbix_agentd.log EnableRemoteCommands=1 Server=10.74.246.70 ListenPort=10050 ServerActive=10.74.246.70 Hostname={{ ansible_default_ipv4.address }} AllowRoot=1 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf UnsafeUserParameters=1 UserParameter=tomcat_port,/usr/local/zabbix/share/zabbix/alertscripts/tomcat_port.sh $1 UserParameter=tcp[*],/usr/local/zabbix/share/zabbix/alertscripts/tcp_connection.sh $1 UserParameter=nginx_port,/usr/local/zabbix/share/zabbix/alertscripts/nginx_port.sh $1 UserParameter=erro_log[*],/usr/local/zabbix/share/zabbix/alertscripts/error_log.sh $1
而后就能够定义hosts文件,批量操做安装zabbix_agent。it
对于某些特定的主机,须要批量推送特定的zabbix_agentd.conf文件,能够修改完zabbix_agentd.conf.j2模板,而后使用ansible推送:
#ansible-playbook zabbix.yml --start-at-task='Copy zabbix_agent.conf Config file'
固然也能够指定推送那些机器,后面-l指定就行
#ansible-playbook zabbix.yml --start-at-task='Copy zabbix_agent.conf Config file' -l 192.168.121.128