天天看点

Ansible批量部署zabbix-agent

Ansible的目录树结构如下:

# tree zabbix/

1

2

3

4

5

6

7

8

9

10

11

12

<code>zabbix/</code>

<code>├── defaults</code>

<code>├── files</code>

<code>│   └── zabbix.</code><code>tar</code><code>.gz</code>

<code>├── handlers</code>

<code>├── meta</code>

<code>├── tasks</code>

<code>│   └── main.yml</code>

<code>├── templates</code>

<code>│   └── zabbix_agentd.conf.j2</code>

<code>└── vars</code>

<code>    </code><code>└── main.yaml</code>

zabbix.tar.gz:tar包是编译安装完zabbix后打的tar包

zabbix_agentd.conf.j2:编译安装完zabbix,copy的zabbix_agentd.conf文件,略微添加点东西,后面会展示。

zabbix_agentd:文件也是编译安装完zabbix,copy的启动脚本文件,修改了里面的zabbix_home变量。

zabbix playbook文件如下:

<code>cat</code> <code>zabbix.yml </code>

<code>- hosts: all</code>

<code>  </code><code>roles:</code>

<code>    </code><code>- zabbix</code>

tasks文件内容如下:

13

14

<code># cat main.yml </code>

<code>- name: </code><code>scp</code> <code>zabbix 到 client</code>

<code>  </code><code>copy: src=zabbix.</code><code>tar</code><code>.gz dest={{ zabbix_home }}</code>

<code>- name: </code><code>scp</code> <code>zabbix_aegntd 到 client</code>

<code>  </code><code>copy: src=</code><code>/tmp/zabbix_agentd</code> <code>dest=</code><code>/etc/init</code><code>.d/ mode=777</code>

<code>- name: </code><code>tar</code> <code>zxf zabbix.</code><code>tar</code><code>.gz 解压</code>

<code>  </code><code>shell: </code><code>cd</code> <code>{{ zabbix_home }} &amp;&amp; </code><code>tar</code> <code>-zxf zabbix.</code><code>tar</code><code>.gz</code>

<code>- name: Copy zabbix_agent.conf Config </code><code>file</code>

<code>  </code><code>template: &gt;</code>

<code>        </code><code>src=zabbix_agentd.conf.j2</code>

<code>        </code><code>dest=</code><code>/usr/local/zabbix/etc/zabbix_agentd</code><code>.conf</code>

<code>        </code><code>mode=0644 owner=root group=root</code>

<code>- name: restart zabbix</code>

<code>  </code><code>service: name=zabbix_agentd state=restarted</code>

vars的内容如下:

<code># cat main.yaml </code>

<code>zabbix_home: </code><code>/usr/local</code>

zabbix_agentd.conf.j2模板的文件内容如下:

<code>#grep -v '^#' zabbix_agentd.conf.j2  | grep -v '^$'</code>

<code>LogFile=</code><code>/tmp/zabbix_agentd</code><code>.log</code>

<code>EnableRemoteCommands=1</code>

<code>Server=10.74.246.70</code>

<code>ListenPort=10050</code>

<code>ServerActive=10.74.246.70</code>

<code>Hostname={{ ansible_default_ipv4.address }}</code>

<code>AllowRoot=1</code>

<code>Include=</code><code>/usr/local/zabbix/etc/zabbix_agentd</code><code>.conf.d/*.conf</code>

<code>UnsafeUserParameters=1</code>

<code>UserParameter=tomcat_port,</code><code>/usr/local/zabbix/share/zabbix/alertscripts/tomcat_port</code><code>.sh $1</code>

<code>UserParameter=tcp[*],</code><code>/usr/local/zabbix/share/zabbix/alertscripts/tcp_connection</code><code>.sh $1</code>

<code>UserParameter=nginx_port,</code><code>/usr/local/zabbix/share/zabbix/alertscripts/nginx_port</code><code>.sh $1</code>

<code>UserParameter=erro_log[*],</code><code>/usr/local/zabbix/share/zabbix/alertscripts/error_log</code><code>.sh $1</code>

然后就可以定义hosts文件,批量操作安装zabbix_agent。

对于某些特定的主机,需要批量推送特定的zabbix_agentd.conf文件,可以修改完zabbix_agentd.conf.j2模板,然后使用ansible推送:

<code>#ansible-playbook zabbix.yml --start-at-task='Copy zabbix_agent.conf Config file'</code>

当然也可以指定推送那些机器,后面-l指定就行

<code>#ansible-playbook zabbix.yml --start-at-task='Copy zabbix_agent.conf Config file' -l 192.168.121.128</code>

本文转自青衫解衣 51CTO博客,原文链接:http://blog.51cto.com/215687833/1897506