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定义的值
如果要还要追加权限配置的话,可以看上一篇
网友评论