一、Grains工具:(静态)
- Saltstack里的Grains功能,讲的是minion端的静态变量,在master端通过Grains可以获得minion对应的变量值。
1.打开server2的grains工具包
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
120 grains:
121 roles:
122 - apache
[root@server2 salt]# systemctl restart salt-minion
测试查看
[root@server1 ~]# salt server2 grains.item roles 获取对应的变量值
server2:
----------
roles:
- apache
2.直接写在grains文件中
[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# vim grains
[root@server3 salt]# cat grains
roles: nginx
[root@server3 salt]# systemctl restart salt-minion.service
3.主节点统一指定角色
[root@server1 ~]# mkdir /srv/salt/_grains
[root@server1 ~]# cd /srv/salt/_grains/
[root@server1 _grains]# vim my_grains.py
[root@server1 _grains]# cat my_grains.py
#! /usr/bin/env python
def my_grains():
grains = {'foo':'bar','hello':'world'}
grains['salt'] = 'stack'
return grains
查看效果
4,在脚本中引入grains角色
[root@server1 _grains]# cd /srv/salt/
[root@server1 salt]# vim top.sls
[root@server1 salt]# cat top.sls
base:
'roles:apache':
- match: grain
- apache.service
'roles:nginx':
- match: grain
- nginx.service
[root@server1 salt]# salt server[2,3] state.highstate
二、pillar工具的配置(动态)
1.在主节点上开启pillar功能
[root@server1 salt]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
[root@server1 salt]# mkdir /srv/pillar
[root@server1 salt]# systemctl restart salt-master
2.在脚本中引入pillar角色
[root@server1 salt]# cd /srv/pillar/
[root@server1 pillar]# ls
[root@server1 pillar]# vim vars.sls 指定角色安装指定服务
[root@server1 pillar]# cat vars.sls
{% if grains['fqdn'] == 'server2' %} 如果主机名等于server2
webserver: apache
state: master
{% elif grains['fqdn'] == 'server3' %} 如果主机名等于server3
webserver: nginx
state: backup
{% endif %}
[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls
base:
'*':
- vars 执行此目录下的所有.vars脚本
测试: