一、环境说明
机器 IP 主机名 Master 192.168.0.23 minion.saltstack.com Minion 192.168.0.35 minion-node2.saltstack.com
二、查看安装zabbix_agentd所需目录
[root@minion salt]# tree ├── master ├── pillar #pillar工作目录 │ ├── init │ │ └── zabbix_agent.sls #pillar定义的值 │ | | └── top.sls #pillar入口文件 └── states #state工作目录 ├── init │ ├── files │ │ └── zabbix_agentd.conf #作为标准配置文件,所有minion都已这个为准,内容得跟这个一样 │ | │ └── zabbix_agent.sls #定义各种关系 └── top.sls #state入口文件
三、配置Pillar
定义Pillar工作路径
vim /etc/salt/master pillar_roots: base: - /etc/salt/pillar
配置pillar入口文件
vim /etc/salt/pillar/top.sls base: #ID声明,自定义的 'minion-node2.saltstack.com': #远程主机ID - init.zabbix_agent #配置文件在pillar工作目录(/etc/salt/pillar)下的/init/zabbix_agent.sls
定义pillar值
#此配置文件对应的是states目录(/etc/salt/states/init/)中zabbix_agent.sls中的pillar段 vim /etc/salt/pillar/init/zabbix_agent.sls zabbix-agent: Zabbix_Server: 192.168.0.24
#映射Pyhton字典为: {'zabbix-agent': { 'Zabbix_Server':192.168.0.24 } }
四、配置states
定义states工作路径
file_roots: base: - /etc/salt/states prod: - /etc/salt/states/prod
定义states入口文件
vim /etc/salt/states/top.sls base: #ID声明,自定义的 '*': #远程主机ID - init.zabbix_agent #配置文件是states工作目录(/etc/salt/states)下的/init/zabbix_agent.sls
定义states配置文件
vim /etc/salt/states/init/zabbix_agent.sls zabbix_agent: #ID生命,自定义 pkg.installed: #安装软件 - name: zabbix22-agent file.managed: #管理文件模块 - name: /etc/zabbix_agentd.conf #把标准配置文件放在客户端的这个位置 - source: salt://init/files/zabbix_agentd.conf #把标准文件放在Master端这个位置(salt://代表states工作目录(/etc/salt/states)) - user: root #属主 - group: root #属组 - mode: 644 #权限 - template: jinja #表示zabbix_agentd.conf使用jinja模板 - defaults: Zabbix_Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }} #这个配置文件中Server段用了jinja模板语言,所以用pillar获取/etc/salt/pillar/init/zabbix_agent.sls的值 service.running: #服务管理 - name: zabbix-agentd #包名 - enable: True #开机启动 - reload: True #重载 - watch: - file: zabbix_agent #监控zabbix_agent这个ID下zabbix_agent.conf配置文件,是否发生改变
配置Master端zabbix_agentd.sls
vim /etc/salt/states/init/files/zabbix_agentd.conf Server={{ Zabbix_Server }} #把这段设置为jinja模板变量,表示这个值是变化的,pillar中定义为多少,minion端就应该是多少
五、测试
Master端
salt '*' state.highstate
NOTE:
- 查看Minion端的zabbix_agentd.conf文件中的ServerIP是不是在Master端/etc/salt/pillar/init/zabbix_agent.sls中配置的值