1. 程式人生 > >zabbix系列之使用ansible批量部署zabbix客戶端(二)

zabbix系列之使用ansible批量部署zabbix客戶端(二)

zabbix_agent ansible 批量部署客戶端

ansible

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客戶端(二)