前提:此文檔僅支持在CentOS上安裝zabbix_agent。
環(huán)境:
salt-master: 172.16.0.197
salt-minions: 172.16.0.225, 172.16.0.233, 172.16.0.234, 172.16.0.226, 172.16.0.236
一、準備工作
salt-master
- 安裝salt-master
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M
- 編輯/etc/salt/master
file_roots:
base:
- /srv/salt/base/
pillar_roots:
base:
- /srv/pillar/base/
- 啟動salt-master
centos6
service salt-master start
centos7
systemctl start salt-master - 首先在每臺需要安裝zabbix_agent的機器上部署salt-minion
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P
- 修改/etc/salt/minion文件
#master: salt
master: 172.16.0.197
啟動salt-minion
centos6
service salt-minion start
centos7
systemctl start salt-minion在salt-master上用salt-key -A將各minion添加認證
然后用salt '*' test.ping測試,都顯示為True
[root@localhost ~]# salt '*' test.ping
172.16.0.225:
True
172.16.0.233:
True
172.16.0.234:
True
172.16.0.236:
True
172.16.0.226:
True
二、部署
- 準備目錄
mkdir -p /srv/salt/base/init/files
init目錄用來表示這個目錄下的文件是用來系統(tǒng)初始化的,也就是沒個系統(tǒng)必須具備的
files目錄用來存放一些安裝包和配置文件
將zabbix-3.4.8.tar.gz和zabbix_agentd.conf保存到files目錄下,tar包可以官網(wǎng)下載,zabbix_agentd.conf可以從已經(jīng)安裝過的機器中拷貝過來 - 通過Pillar來設置Zabbix Server值
[root@localhost ~]# vim /srv/pillar/base/top.sls
base:
'*':
- zabbix
[root@localhost ~]# vim /srv/pillar/base/zabbix.sls
zabbix-agent:
Zabbix_Server: 172.16.0.174
- 創(chuàng)建啟動zabbix_agentd的用戶
[root@localhost ~]# mkdir /srv/salt/base/user
[root@localhost ~]# vim /usr/salt/base/user/zabbix.sls
zabbix-user-group:
group.present:
- name: zabbix
- gid: 1000
user.present:
- name: zabbix
- fullname: zabbix
- shell: /sbin/nologin
- uid: 1000
- gid: 1000
- 安裝依賴包
[root@localhost ~]# vim /srv/salt/base/init/pkg-init.sls
pkg-init:
pkg.installed:
- names:
- gcc
- gcc-c++
- glibc
- openssl
- openssl-devel
- pcre-devel
這里還可以添加你需要安裝的一些基礎包
- 編寫安裝文件
[root@mycat ~]# cat /srv/salt/base/init/zabbix_agent.sls
include:
- user.zabbix
zabbix-install:
file.managed:
- name: /usr/local/src/zabbix-3.4.8.tar.gz
- source: salt://init/files/zabbix-3.4.8.tar.gz
- mode: 755
- user: zabbix
- group: zabbix
cmd.run:
- name: cd /usr/local/src && tar zxf zabbix-3.4.8.tar.gz && cd zabbix-3.4.8 && ./configure --prefix=/usr/local/zabbix --enable-agent && make install
- unless: test -d /usr/local/zabbix
- require:
- user: zabbix-user-group
- file: zabbix-install
zabbix-agent:
file.managed:
- name: /usr/local/zabbix/etc/zabbix_agentd.conf
- source: salt://init/files/zabbix_agentd.conf
- template: jinja
- defaults:
Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}
Hostname: {{ grains['fqdn'] }}
- require:
- file: zabbix-install
zabbix_agentd.conf.d:
file.directory:
- name: /usr/local/zabbix/etc/zabbix_agentd.conf.d
- watch_in:
- service: zabbix-agent
- require:
- file: zabbix-agent
zabbix_agentd-start:
cmd.run:
- name: echo "/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf" >> /etc/rc.d/rc.local && /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
- require:
- file: zabbix-install
- watch:
- file: zabbix-agent
- 修改zabbix_agentd.conf文件
[root@mycat ~]# vim /srv/salt/base/init/files/zabbix_agentd.conf
Server={{ Server }} #修改此行
Hostname= {{ Hostname }} #修改此行
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d #添加或者修改此行
- 創(chuàng)建env_init.sls把初始環(huán)境的.sls文件都包含進來,這邊我們只有一個zabbix和一組依賴包
[root@localhost ~]# vim /srv/salt/base/init/env_init.sls
include:
- init.pkg-init
- init.zabbix_agent
- 在top.sls里面給Minion指定狀態(tài)
[root@localhost ~]# vim /srv/salt/base/top.sls
base:
'*':
- init.env_init
- 執(zhí)行命令
在執(zhí)行前,先進行測試
[root@localhost ~]# salt '*' state.highstate test=True
在所有Minion上執(zhí)行狀態(tài)
[root@localhost ~]# salt '*' state.highstate