Grains概念
Grains是SaltStack的一个组件,存放在SaltStack的minion
端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。
由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
信息查询,可用作CMDB。
在target中使用,匹配minion。
在state系统中使用,配置管理模块
信息查询
用于查询minion端的IP、FQDN等信息。
默认可用的grains:
# salt '*' grains.ls
查看每一项的值:
# salt '*' grains.items
取单项的值:
# salt server3 grains.item ipv4
# salt server3 grains.item fqdn
2.3.
自定义grains项
在/etc/salt/minion中定义:
# vim /etc/salt/minion
grains:
roles:
- apache
- httpd
重启salt-minion,否则数据不会更新:
# systemctl restart salt-minion
在/etc/salt/grains中定义:
# vim /etc/salt/grains:
deployment: datacenter1
同步数据:
# salt server3 saltutil.sync_grains
查询自定义项:
# salt server3 grains.item deployment
1.
编写grains模块
在salt-master端创建_grains目录:
# mkdir /srv/salt/_grains
# vim /srv/salt/_grains/my_grain.py
def my_grain():
grains = {}
grains['roles'] = 'nginx'
grains['hello'] = 'world'
return grains
# salt '*' saltutil.sync_grains #同步grains到minion端
grains匹配运用
在target中匹配minion:
# salt -G roles:apache cmd.run hostname
在top文件中匹配:
# vim /srv/salt/top.sls
base:
'roles:apache':
- match: grain
- apache.install
pillar概念
pillar和grains一样也是一个数据系统,但是应用场景不同。
pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
pillar更加适合在配置管理中运用。
声明pillar
定义pillar基础目录:
# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
# mkdir /srv/pillar
重启salt-master服务:
# /etc/init.d/salt-master restart
自定义pillar项
# vim /srv/pillar/top.sls
base:
'*':
- packages
# vim /srv/pillar/apache.sls
{% if grains['fqdn'] == 'server3' %}
package: httpd
{% elif grains['fqdn'] == 'server2' %}
package: mairadb
{% endif %}
刷新pillar数据:
# salt '*' saltutil.refresh_pillar
查询pillar数据:
# salt '*' pillar.items
# salt '*' grains.item roles
pillar数据匹配(如何使用)
命令行中匹配:
# salt -I 'roles:apache' test.ping
state系统中使用:
# vim /srv/salt/apache.sls
apache:
pkg.installed:
- name: {{ pillar['package'] }}