SaltStack自动化批量部署Zabbix

2017年3月20日14:47:37 2 5,288 ℃

SaltStack环境设置

在本案例我们使用两个环境base和prod,base环境用来存放初始化的功能。prod环境用于放置生产的配置管理功能:

[root@master ~]# vim /etc/salt/master

file_roots:
  base:
    - /srv/salt/base
  prod:
    - /srv/salt/prod
#Pillar settings
pillar_roots:
  base:
    - /srv/pillar/base
  prod:
    - /srv/pillar/prod

请参照上面的配置进行Master配置文件的修改。为保证实验顺利完成,建议创建和本案例一致的配置和路径。

创建目录结构并重启salt-master,如下所示:

[root@master ~]# mkdir -pv /srv/salt/{base,prod}

[root@master ~]# mkdir -pv /srv/pillar/{base,prod}

[root@master ~]# /etc/init.d/salt-master restart

Zabbix Agent安装

如果你的监控系统使用的是Zabbix(推荐),那么所有的Minion都应该安装上Zabbix Agent,主要涉及SaltStack的pkg、file、service状态模块以及Pillar的使用。

通过使用Pillar来设置Zabbix Server的IP地址:

[root@master ~]# cat /srv/pillar/base/top.sls 

base:
  '*':
    - zabbix

[root@master ~]# cat /srv/pillar/base/zabbix.sls 

zabbix-agent:
  Zabbix_Server: 192.168.100.200

安装并启动Zabbix Agent:

[root@master ~]# cat /srv/salt/base/init/zabbix_agent.sls 

zabbix-agent:
  pkg.installed:
    - name: zabbix22-agent
  file.managed:
    - name: /etc/zabbix_agentd.conf
    - source: salt://init/files/zabbix_agentd.conf
    - template: jinja
    - defaults: 
    - Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}
    - require:
      - pkg: zabbix-agent
  service.running:
    - enable: True
    - watch:
      - pkg: zabbix-agent
      - file: zabbix-agent 
zabbix_agentd.conf.d:
  file.directory:
    - name: /etc/zabbix_agentd.conf.d
    - watch_in:
      - service: zabbix-agent
    - require:
      - pkg: zabbix-agent
      - file: zabbix-agent

注:zabbix_agentd.conf.d Zabbix配置文件目录用来存放用户自定义的配置。

编写完毕Zabbix Agent的部署后,请将zabbix_agentd.conf文件放置/srv/salt/base/init/files/目录下,同时修改如下:

Include=/etc/zabbix_agentd.conf.d/ #修改或增加

Server={{Server}} #修改此行

这样后期就可以将自定义的监控配置放在/etc/zabbix_agentd.conf.d/目录下。可以先在某一台机器上手动安装Zabbix Agent,然后把相关的文件复制到Salt Master。

初始化环境引用

目前已经把所有初始化所需要的功能都写好了,每个小功能都是一个sls文件。统一放置在init目录下,这样归类后很容易解读。那么怎样来使用呢?在top file里面把这些功能都列出了,可不是一个好主意,我们需要再编写一个sls把这些初始化的功能都包含进来:

[root@master ~]# cat /srv/salt/base/init/env_init.sls 

include:
  - init.zabbix_agent

现在我们就可以在top.sls里面给Minion指定状态并执行了:

[root@master ~]# cat /srv/salt/base/top.sls 

base:
  '*':
    - init.env_init

注意,在生产环境中,每次执行状态,强烈建议先进行测试,确定SaltStack会执行哪些操作然后再应用状态到服务器上:

[root@master ~]# salt '*' state.highstate test=True

在所有Minion上执行状态:

[root@master ~]# salt '*' state.highstate

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

    • avatar 嘿嘿嘿 1

      真是时光荏苒!

      • avatar 恩菲 0

        感觉不错哦,认真拜读咯!