一、Grains工具:
Saltstack里的Grains功能,讲的是minion端的静态变量,在master端通过Grains可以获得minion对应的变量值。
1.打开server2的grains工具包
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
grains:
roles:
- httpd
[root@server2 salt]# systemctl restart salt-minion
[root@server1 salt]# salt server2 grains.item roles ##可以获得对应的变量值
[root@server1 salt]# mkdir /srv/salt/_grains
[root@server1 salt]# cd /srv/salt/_grains
[root@server1 _grains]# vim my_grains.py
#!/usr/bin/env python
def my_grains():
grains = {}
grains['roles'] = 'nginx'
grains['hello'] = 'world'
return grains
[root@server3 system]# yum install -y tree
[root@server3 system]# cd /var/cache
[root@server3 cache]# cd salt/
[root@server3 salt]# tree minion/
[root@server1 _grains]# salt server3 saltutil.sync_grains
[root@server1 _grains]# salt server3 grains.item roles
[root@server1 _grains]# salt server3 grains.item hello
[root@server1 salt]# ls
_grains httpd nginx top.sls users
[root@server1 salt]# vim top.sls
base:
'roles:httpd':
- match: grain
- httpd.service
'roles:nginx':
- match: grain
- nginx.service
[root@server1 salt]# salt server[2,3] state.highstate
[root@server1 pillar]# salt -G 'roles:httpd' test.ping
[root@server1 pillar]# salt -G 'roles:nginx' test.ping
二、pillar工具的配置
[root@server1 salt]# vim /etc/salt/master
843 pillar_roots:
844 base:
845 - /srv/pillar
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# mkdir /srv/pillar
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# cd /srv/pillar
[root@server1 pillar]# vim web.sls
[root@server1 pillar]# cat web.sls
{% if grains['fqdn'] == 'server2' %} 如果主机名字等于server2
webserver: httpd
{% elif grains['fqdn'] == 'server3' %} 如果主机名字等于server3
webserver: nginx
{% endif %}
[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls
base:
'*':
- web
[root@server1 pillar]# salt '*' pillar.items
[root@server1 pillar]# salt '*' saltutil.refresh_pillar
[root@server1 pillar]# salt -I 'webserver:nginx' test.ping
[root@server1 pillar]# salt -I 'webserver:httpd' test.ping