您的位置:首页 > 其它

salt 使用state文件来配置zabbix客户端文件

2017-11-23 15:54 323 查看
转载:http://www.cnblogs.com/LYCong/p/7879805.html

salt 调用pillar数据配置zabbix_agentd的配置文件

先拷贝zabbix的安装包到minion端

[root@cong-33 src]# scp zabbix-3.0.12.tar.gz 192.168.1.126:/usr/local/src/           ##我的机器做了密钥互信,所以不用密码


这里先不用salt安装zabbix,(还不会。。。。)

解压,编译安装zabbix

 

[root@cong-55 src]# tar xf zabbix-3.0.12.tar.gz
[root@cong-55 src]# cd zabbix-3.0.12
[root@cong-55 zabbix-3.0.12]# ./configure --prefix=/usr/local/zabbix/ --enable-agent

[root@cong-55 zabbix-3.0.12]# make && make install


 
在master的file_roots目录下配置好zabbix_agentd的配置文件

[root@cong-33 salt]# cat /srv/salt/file/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
LogRemoteCommands=1
Server=192.168.1.33
ServerActive=192.168.1.33
Hostname={{ hostname }}
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
[root@cong-33 salt]#


再编写pillar文件设置获取minion的hostname内容

[root@cong-33 salt]# cat /srv/salt/pillar/top.sls
base:
'*':
- ip
- user
- uid
- httpd
- hostname
[root@cong-33 salt]# cat /srv/salt/pillar/hostname.sls
hostname: {{ grains['nodename'] }}
[root@cong-33 salt]# salt 'cong-55' pillar.item hostname      ##记得刷新pillar到minion端
cong-55:
----------
hostname:
cong-55
[root@cong-33 salt]#


master端编写sls文件来拷贝zabbix_agentd的配置文件到minion

[root@cong-33 salt]# cat /srv/salt/zabbix_agentd.sls
zabbix_agentd:  ##sls的执行ID,可自定义
file.managed:
- source: salt://file/zabbix/zabbix_agentd.conf  ##源文件路径
- name: /usr/local/zabbix/etc/zabbix_agentd.conf  ##目标文件路径
- template: jinja
- defaults:
hostname: {{ pillar['hostname'] }}  ##设置hostname的key,在文件中可以调用这个key的值
[root@cong-33 salt]#


单独执行sls文件

[root@cong-33 salt]# salt 'cong-55' state.sls zabbix_agentd      ##后面的文件名可以不加sls的后缀
cong-55:
----------
ID: zabbix_agentd
Function: file.managed
Name: /usr/local/zabbix/etc/zabbix_agentd.conf
Result: True
Comment: File /usr/local/zabbix/etc/zabbix_agentd.conf updated
Started: 12:17:57.332941
Duration: 184.585 ms
Changes:
----------
diff:      ##因为编译好的zabbix_agentd配置文件是有内容的,salt把文件替换会显示增加和减少的内容
---
。。。。。。。。
-# TLSPSKFile=
+EnableRemoteCommands=1
+LogRemoteCommands=1
+Server=192.168.1.33
+ServerActive=192.168.1.33
+Hostname=cong-55
+UnsafeUserParameters=1
+Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

Summary for cong-55
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 184.585 ms
[root@cong-33 salt]#


 
在minoin端查看
文件已经替换了,而且hostname也填充进去了

[root@cong-55 salt]# cat /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
EnableRemoteCommands=1
LogRemoteCommands=1
Server=192.168.1.33
ServerActive=192.168.1.33
Hostname=cong-55
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
[root@cong-55 salt]#


 
修改sls文件,让其可以执行更多的操作
配置拷贝过去后执行zabbix_agentd启动脚本,启动zabbix_agentd 服务

[root@cong-33 salt]# cat zabbix_agentd.sls
zabbix_agentd_conf:
file.managed:
- source: salt://file/zabbix/zabbix_agentd.conf
- name: /usr/local/zabbix/etc/zabbix_agentd.conf
- template: jinja
- defaults:
hostname: {{ pillar['hostname'] }}
zabbix_agentd:
file.managed:
- source: salt://file/zabbix/zabbix_agentd      ##zabbix_agentd启动脚本,拷贝到minion端
- name: /etc/init.d/zabbix_agentd
- mode: 755
service.running:           ##运行zabbix_agentd服务
- name: zabbix_agentd
- require:           ##依赖,如果下面的文件存在,才会执行启动服务
- file: /etc/init.d/zabbix_agentd

[root@cong-33 salt]#


后面发现minion没有zabbix用户,zabbix不能运行在root用户上。
好,我们使用sls来添加zabbix用户,然后再启动zabbix-agentd服务
修改sls文件

[root@cong-33 salt]# cat zabbix_agentd.sls

zabbix_agentd_conf:      ##sls执行的一个ID,可以自定义,在添加用户的情况下,如果不知道添加用户的名称,自动会取ID的值做用户名
file.managed:           ##文件管理的函数,这里是拷贝文件到minion服务器
- source: salt://file/zabbix/zabbix_agentd.conf      ##指定源文件路径,这里是salt的file_roots的路径
- name: /usr/local/zabbix/etc/zabbix_agentd.conf      ##目标文件路径
- template: jinja
- defaults:
hostname: {{ pillar['hostname'] }}      ##设定一个变量名。在文件中可以继承这个变量的值
zabbix_agentd:
file.managed:
- source: salt://file/zabbix/zabbix_agentd
- name: /etc/init.d/zabbix_agentd
- mode: 755
service.running:      ##服务启动函数
- name: zabbix_agentd
- require:      ##依赖,如果下面的zabbix用户存在才会执行服务启动
- user: zabbix

user.present:      ##用户函数
- home: /usr/local/zabbix      ##用户家目录
- shell: /bin/nologin      ##用户shell环境
- name: zabbix      ##用户名称,如果不指定,会取ID的值
- uid: 188      ##uid
- gid: 188      ##gid
- require:      ##依赖下面的组名,组名存在才会执行这个添加用户的操作
- group: zabbix
group.present:      ##组函数
- name: zabbix      ##组名称
- gid: 188           ##组ID
- require:           ##依赖,下面这个文件存在,才会执行添加组的操作
- file: /usr/local/zabbix/etc/zabbix_agentd.conf
[root@cong-33 salt]#


执行sls文件

[root@cong-33 salt]# salt 'cong-55' state.sls zabbix_agentd
cong-55:
----------
ID: zabbix_agentd_conf
Function: file.managed
Name: /usr/local/zabbix/etc/zabbix_agentd.conf
Result: True
Comment: File /usr/local/zabbix/etc/zabbix_agentd.conf is in the correct state
Started: 15:54:28.866611
Duration: 57.703 ms
Changes:

----------
ID: zabbix_agentd
Function: file.managed
Name: /etc/init.d/zabbix-agent
Result: True
Comment: File /etc/init.d/zabbix-agent is in the correct state
Started: 15:54:28.924459
Duration: 16.151 ms
Changes:

----------
ID: zabbix_agentd
Function: group.present
Name: zabbix
Result: True
Comment: Group zabbix is present and up to date
Started: 15:54:28.948580
Duration: 1.704 ms
Changes:

----------
ID: zabbix_agentd
Function: user.present
Name: zabbix
Result: True
Comment: User zabbix is present and up to date
Started: 15:54:28.950437
Duration: 7.137 ms
Changes:

----------
ID: zabbix_agentd
Function: service.running
Name: zabbix-agent
Result: True
Comment: Started Service zabbix-agent
Started: 15:54:28.957773
Duration: 113.605 ms
Changes:

----------
zabbix-agent:
True

Summary for cong-55
------------
Succeeded: 5 (changed=1)
Failed: 0
------------
Total states run: 5
Total run time: 196.300 ms
[root@cong-33 salt]#


原本自己写的zabbix_agentd启动脚本,手动可以起来,但是使用sls文件起不来,
后来就使用zabbix  rpm包的启动脚本,修改一下就可以用来,但是注意一下目录的权限的一些配置要不会报错。
先手动执行看看行不行,在用sls来启动
服务起不来就看minion的salt日志,
 
 
因为zabbix的配置中,每个机器的IP,Hostname 都不一样,如果是大批量机器,那么手动就不合适了,
 
使用pillar来获取每个机器的IP,HostName,然后填写进zabbix的配置文件中,在拷贝过去
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐