zabbix系列之使用ansible批量部署zabbix客戶端(二)
ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負責和被監控端實現通信;
(2)、host inventory:指定操作的主機,是一個配置文件裏面定義監控的主機;
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
ansible的特性:
(1)、no agents:不需要在被管控主機上安裝任何客戶端;
(2)、no server:無服務器端,使用時直接運行命令即可;
(3)、modules in any languages:基於模塊工作,可使用任意語言開發模塊;
(4)、yaml,not code:使用yaml語言定制劇本playbook;
(5)、ssh by default:基於SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
ansible優點
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
(2)、批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;
(3)、使用python編寫,維護更簡單,ruby語法過於復雜;
(4)、支持sudo。
Ansible企業應用:
主要架構功能:
Ansible Core. //核心功能
Modules:
Core Modules //核心功能
Customed Modules //自定義模塊
Host Inventory //主機庫和主機清單,用來定義要管理的主機
File
CMDB(配置管理數據)
PlayBooks //劇本,定義沒個主機扮演的角色
Hosts. //主機
roles. //角色
Connection Plugins. //連接插件,連接至被管控主機,完成並發連接,默認一次管理5臺,但是可以修改。
搭建環境(CentOS 7)
環境拓撲圖,如圖1所示
圖1
主機 | ip | 角色 |
centos1 | 192.168.15.11/24 | zabbix服務端+ansible |
centos2 | 192.168.15.12/24 | zabbix客戶端 |
centos3 | 192.168.15.13/24 | zabbix客戶端 |
centos4 | 192.168.15.14/24 | zabbix客戶端 |
開始搭建環境
1、先配置好各主機,把防火墻和selinux都關掉,由於是CentOS 7的最小化安裝,所以需要先安裝gcc,配置zabbix服務端到各zabbix客戶端的ssh免密鑰通信。
##安裝gcc yum install -y gcc* ##配置ssh免密通信 [root@centos1 ~]# ssh-keygen [root@centos1 ~]# ssh-copy-id 192.168.15.12 [root@centos1 ~]# ssh-copy-id 192.168.15.13 [root@centos1 ~]# ssh-copy-id 192.168.15.14
2、配置ansible
由於前面已經寫過如何安裝zabbix服務端了,所以這裏只寫ansible的配置
(1)、安裝ansible
##這裏使用yum安裝 [root@centos1 ~]# yum install -y ansible
(2)、定義主機組
[root@centos1 ~]# cd /etc/ansible/ [root@centos1 ansible]# ls ansible.cfg hosts roles [root@centos1 ansible]# vim hosts [zabbix_agent] 192.168.15.12 192.168.15.13 192.168.15.14 ##查看主機組內的主機 [root@centos1 ansible]# ansible zabbix_agent --list-hosts hosts (3): 192.168.15.12 192.168.15.13 192.168.15.14
(3)、測試能不能ping通各zabbix客戶端,如圖2所示
圖2
(4)、向所有主機推送修改好的hosts文件,如圖3所示
[root@centos1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.15.11 centos1 192.168.15.12 centos2 192.168.15.13 centos3 192.168.15.14 centos4
圖3
3、使用ansible推送安裝zabbix客戶端
為某一個服務提供配置文件時,配置文件對於不同的主機,需要提供的配置也不盡相同,具體是什麽,要依賴於此主機上的屬性才能生成,這時,使用模板是最為有效的。在這裏我們使用ansible的jinjia模板來部署ansible客戶端。
查看配置文件
[root@centos1 ~]# cd /etc/ansible/ [root@centos1 ansible]# cat zabbix_agent.yaml - hosts: zabbix_agent remote_user: root tasks: - name: install zabbix_agent packages yum: name={{ item }} state=latest with_items: - curl-devel - name: copy install_shell to clien copy: src=/etc/ansible/zabbix_agent.sh dest=/usr/local/src/zabbix_agent.sh - name: sent tar copy: src=/usr/local/src/zabbix-3.2.7.tar.gz dest=/usr/local/src/zabbix-3.2.7.tar.gz notify: install shell handlers: - name: install shell shell: /bin/bash /usr/local/src/zabbix_agent.sh
查看遠程執行的腳本
[root@centos1 ansible]# cat zabbix_agent.sh #!/bin/bash useradd zabbix -s /sbin/nologin cd /usr/local/src tar -xf zabbix-3.2.7.tar.gz cd zabbix-3.2.7 ./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix make && make install cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ chmod 700 /etc/init.d/zabbix_agentd sed -i -e 's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd\g' /etc/init.d/zabbix_agentd sed -i -e 's\Server=127.0.0.1\Server=2.15.37.28\g' /usr/local/zabbix/etc/zabbix_agentd.conf /etc/init.d/zabbix_agentd start chkconfig zabbix_agentd on
推送過程如圖4所示
圖4
查看zabbix客戶端是否在運行,如圖5所示
圖5
至此,使用ansible批量安裝zabbix客戶端就已經配置完成了。
註:
安裝部署單臺zabbix客戶端的腳本如下
[root@centos1 ~]# cat zabbix_agent.sh #!/bin/bash yum install -y gcc* ##安裝gcc yum install -y curl-devel ##安裝依賴包 useradd zabbix -s /sbin/nologin ##創建用戶 ##下載安裝包 cd /usr/local/src/ wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz tar -xf zabbix-3.2.7.tar.gz ##編譯安裝 cd zabbix-3.2.7 ./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix make && make install ##修改相關配置 cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ chmod 700 /etc/init.d/zabbix_agentd sed -i -e 's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd\g' /etc/init.d/zabbix_agentd sed -i -e 's\Server=127.0.0.1\Server=2.15.37.28\g' /usr/local/zabbix/etc/zabbix_agentd.conf /etc/init.d/zabbix_agentd start ##啟動 chkconfig zabbix_agentd on ##設為開機啟動
zabbix系列之使用ansible批量部署zabbix客戶端(二)