salt安装zabbix-agent(jinja变量使用pillar)

salt和pillar的工作目录如下:

[root@centos2 salt]# tree
.
├── conf
│   ├── zabbix_agentd.conf
│   └── zabbix_server.conf
├── cp.sls
├── test.py
├── top.sls
├── yum.sls
└── zabbix-3.0.0.tar.gz

[root@centos2 pillar]# pwd
/srv/pillar
[root@centos2 pillar]# tree
.
├── bbbb.sls
├── top.sls
├── tttt.sls
├── users.sls
└── zabbix.sls

zabbix配置文件放置在conf目录下:

[root@centos2 salt]# ll conf/
total 28
-rw-r--r-- 1 root root 10266 Aug 23 19:23 zabbix_agentd.conf
-rw-r--r-- 1 root root 14663 Feb 15  2016 zabbix_server.conf

首先去配置pillar,配置项目如下:

[root@centos2 pillar]# cat zabbix.sls 
{% set zabbix_version = '3.0.0' %}
{% set zabbix_prefix  = '/usr/local/services/zabbix-' + zabbix_version %}
{% set zabbix_agent_port = '10050' %}
{% set zabbix_server_ip = '192.168.220.130' %}
{% set zabbix_server_port = '10051' %}

{% set zabbix_packae_url = '/usr/local/services' %}

{% set zabbix_server_host = '103.38.29.254' %}




zabbix_erver: {{ zabbix_server_ip }}
agent_port: {{ zabbix_agent_port }}
server_port: {{ zabbix_server_port }}
package_url: {{ zabbix_packae_url }}

然后再top.sls文件中加入zabbix.sls,书写如下:

[root@centos2 pillar]# vim top.sls 
base:
  '*':
#    - bbbb
#    - users
#    - tttt
    - zabbix

查看设置的pillar值是否生效:

[root@centos2 pillar]# salt ubuntu  pillar.items
ubuntu:
    ----------
    agent_port:
        10050
    package_url:
        /usr/local/services
    server_port:
        10051
    zabbix_erver:
        192.168.220.130

现在pillar这里设这完成,然后我们去/srv/salt/目录下,这里我们要实现的目的是吧zabbix-agent部署到每一台机器上,用来分发的state文件我们命名为cp.sls:

#引入变量模板可以找个------{% import 'zabbix/configurate.jinja' as app %},里面的内容基本如下
[root@centos2 salt]# cat cp.sls 
{% set destination = '/usr/local/services' %}
send zabbix.tar.gz:
  file.managed:
    - name: {{ destination }}/zabbix-3.0.0.tar.gz
    - source: salt://zabbix-3.0.0.tar.gz
    - templete: jinja

send configuration file:
  file.managed:
    - name: /etc/zabbix_agentd.conf
    - source: salt://conf/zabbix_agentd.conf
    - template: jinja

这里用到了jinja语法, source: salt://conf/zabbix_agentd.conf是模板配置文件,这里要是不配置 - template: jinja,待会我们看模板配置文件的时候会无效过,获取不到pillar的值,然后我们去看看模板文件:

[root@centos2 salt]# vim conf/zabbix_agentd.conf
...

# Mandatory: no
# Default:
# Server=

Server= {{ salt['pillar.get']('zabbix_erver') }}

### Option: ListenPort
#       Agent will listen on this port for connections from the server.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# ListenPort=10050
...

{{ salt'pillar.get' }}是获取我们在pillar里面的zabbix_erver的值,这个值是zabbix服务端的ip地址:

[root@centos2 salt]# salt  ubuntu  pillar.get zabbix_erver
ubuntu:
    192.168.220.130

对于端口什么的设置,模板文件中获取的写法都是这样,比如还要修改端口,可在模板配置文件中端口号改成:

{{ salt['pillar.get']('zabbix_port') }}

就可以获取到你指定的端口号了,当然这些值已经我们在开始的时候配置到了pillar中了

[root@centos2 pillar]# pwd 
/srv/pillar
[root@centos2 pillar]# cat zabbix.sls 
{% set zabbix_version = '3.0.0' %}
{% set zabbix_prefix  = '/usr/local/services/zabbix-' + zabbix_version %}
{% set zabbix_agent_port = '10050' %}
{% set zabbix_server_ip = '192.168.220.130' %}
{% set zabbix_server_port = '10051' %}
{% set zabbix_packae_url = '/usr/local/services' %}
{% set zabbix_server_host = '103.38.29.254' %}
zabbix_erver: {{ zabbix_server_ip }}
agent_port: {{ zabbix_agent_port }}
server_port: {{ zabbix_server_port }}
package_url: {{ zabbix_packae_url }} 

都配置完成了执行下面命令,执行分发动作( test=true是测试有没有问题,没有报错就可以将其去掉):

[root@centos2 conf]# salt  '*'  state.sls  cp  saltenv=base  test=true

这样所有机器都有pillar定义的值
如果要还要追加权限配置的话,可以看上一篇

你可能感兴趣的:(salt安装zabbix-agent(jinja变量使用pillar))