Ansible目錄結構
## ansible.cfg 此文件爲 ansible 的主配置文件
## hosts 用於定義主機組
## roles 定義不同的角色
## install_zabbix_agent.yml 用於安裝 zabbix_agent 的引導文件
## delete_zabbix_agent.yml 用於刪除已安裝的 zabbix_agent 的引導文件
[root@ansible-server ansible]# cd /etc/ansible/ ; tree
.
|-- hosts
|-- install_zabbix_agent.yml
`-- roles
`-- install_zabbix_agent <---------爲一個角色(目錄)
|-- files <---------用於存放將要拷貝到遠程主機的安裝包等
| |-- install_zabbix_client.sh <--------client安裝腳本
| `-- zabbix-4.0.6-agent_after_make_on_centos6.tar <--------官網下載agent,放至此目錄
|-- tasks <--------將要執行的所有任務,如果比較複雜,可以單獨定義不同的任務,最後在 main.yml 文件中引用即可
| `-- main.yml
|-- templates <--------模板目錄,這裏存放着一些可變的文件,即:每臺主機上的這些文件中的內容都不完全相同
| |-- zabbix_agentd
| `-- zabbix_agentd.conf
`-- vars <--------變量目錄,存放變量文件
`-- main.yml
===========================================================================================
Playbook 安裝軟件需要的步驟
1、定義 hosts( 給哪些主機安裝軟件 )
2、定義入口文件 install_zabbix_agent.yml
3、定義角色 install_zabbix_agent
以下爲相關文件內容,按tree目錄顯示位置存放下列文件即可:
# cat /etc/ansible/hosts
[webservers]
192.168.1.100
192.168.1.110
# cat install_zabbix_agent.yml
- hosts: webservers
remote_user: root
tasks:
- name: mkdir
shell: mkdir -p /tmp/zabbix
- name: touch Logfile
shell: cd /tmp/zabbix && touch zabbix.log
- name: copy zabbix.tar to clien
copy: src=/etc/ansible/roles/install_zabbix_agent/files/zabbix-4.0.6-agent_after_make_on_centos6.tar dest=/tmp/zabbix
- name: copy install_shell to client
copy: src=/etc/ansible/roles/install_zabbix_agent/files/install_zabbix_client.sh dest=/tmp/zabbix/install_zabbix_client.sh
notify: install shell
handlers:
- name: install shell
shell: /bin/bash /tmp/zabbix/install_zabbix_client.sh >/tmp/zabbix/zabbix.log 2>&1
[root@ansible-server files]# cat install_zabbix_client.sh
#!/bin/bash
set -x
yum -y install pcre-devel.x86_64
groupadd --system zabbix
useradd --system -g zabbix -M -s /sbin/nologin -c "Zabbix Monitoring" zabbix
cd /tmp/zabbix
tar -xf zabbix-4.0.6-agent.tar -C /tmp/zabbix
cd /tmp/zabbix/zabbix-4.0.6
make install
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
sed -i 's/Server=127.0.0.1/Server=10.10.100.10/' /usr/local/etc/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=10.10.100.10/' /usr/local/etc/zabbix_agentd.conf
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
service zabbix_agentd start
最後執行命令(run on ansible)
#ansible-playbook -vvv -i hosts install_zabbix_agent.yml
另外可在 zabbixServer 上測試
/usr/local/zabbix/bin/zabbix_get -s10.10.10.2 -p10050 -k "system.uname"