SaltStack学习笔记之安装zabbix_agentd(jinja和pillar)

一、环境说明

机器                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中配置的值

 

posted @ 2016-10-11 11:38  差点点温柔  阅读(433)  评论(0编辑  收藏  举报