Linux自动化工具之SaltStack Grains and Pillar
2020-02-24自动化运维90root404°c
A+ A-Grains是SaltStack组建中非常重要的组建之一.Grains信息是在Minions服务启动的时候汇报给Master. 主要纪录minion的一些静态信息, 如cpu、内存、磁盘、网络信息等。
grains vs pillar:
1.grains存储的是静态、不常变化的内容,pillar则相反
2.grains是存储在minion本地,而pillar存储在master本地
3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改
1 . 查看minion的全部静态变量.
[[email protected] master]# salt 'node2.90root.com' grains.ls
node2.90root.com:
- SSDs
- cpu_flags
- cpu_model
- cpuarch
... ...
2 . 列出key及vlaue
[[email protected] master]# salt 'node2.90root.com' grains.items

3 . 查看指定的key值
[[email protected] master]# salt 'node2.90root.com' grains.item cpu_model
[[email protected] master]# salt 'node2.90root.com' grains.item nodename

二、自定义grains.item
1 . 修改minion端的配置文件.
[[email protected] minion]# vim/etc/salt/minion
default_include: minion.d/*.conf #打开注释
2 . minion端/etc/salt/minion.d/目录下新建conf文件
[[email protected] minion]# vim /etc/salt/minion.d/90root.conf
grains:
90root: www.90root.com
user: 90root
roles:
- a
- b
[[email protected] minion]# /etc/init.d/salt-minion restart
[[email protected] master]# salt 'node2.90root.com' grains.item 90root
node2.90root.com:
----------
90root:
[[email protected] master]# salt 'node2.90root.com' grains.item roles
node2.90root.com:
----------
roles:
- a
- b
3. 通过Grains模块自定义Grains
[[email protected] master]# salt 'node2.90root.com' grains.append blog 'www.90root.com'
node2.90root.com:
----------
blog:
[[email protected] master]# salt 'node2.90root.com' grains.item blog ->查看grains信息
node2.90root.com:
----------
blog:
4. 使用grains.setvals同时设置多对grains信息
[[email protected] master]# salt 'node2.90root.com' grains.setvals "{'salt':'goog','blog':'www.90root.com'}"
node2.90root.com:
----------
blog:
salt:
goog
node2.90root.com:
----------
salt:
goog
5 . 通过Grains定位主机
[[email protected] ~]# salt -G 'os:Centos' test.ping #匹配minion端操作系统为Centos
[[email protected] ~]# salt -G 'fqdn:node2.90root.com' test.ping #匹配minion端fqdn为node2.90root.com的机器

6 . 自定义Granis
在minion端新建grains配置文件
[[email protected] ~]# vim/etc/salt/grains
cloud: 90root.com
[[email protected] ~]# /etc/init.d/salt-minion restart

master匹配nginx的主机
[[email protected] ~]# salt -G 'roles:nginx' test.ping

7. master通过调用salt刷新命令让minion端配置文件生效
[[email protected] ~]# vim /etc/salt/grains #在末尾增加
test: flush
[[email protected] ~]# salt '*' saltutil.sync_grains
[[email protected] ~]# salt -G 'test:flush' test.ping
Pillar也是saltstack组建中非常重要的组建之一, 是数据中心管理. Pillar在saltstack中主要的作用就是存储和定义配置管理中需要的一些数据, 比如版本号、用户名密码等信息。它的定义存储格式跟Grains类似. 都是YAML格式.
8 . 修改master端配置文件
[[email protected] ~]# vim /etc/salt/master
pillar_roots: #去掉注释
base: #去掉注释
- /etc/salt/pillar #定义pillar路径
[[email protected] ~]# mkdir /etc/salt/pillar
[[email protected] ~]# cd /etc/salt/pillar
[[email protected] pillar]# vim top.sls
base: ->指定环境
'*': ->Target(所有minion都称为Target)
- init.rsyslog
[[email protected] pillar]# mkdir init
[[email protected] pillar]# cd init
[[email protected] init]# vim rsyslog.sls
{% if grains['osrelease'] == '6.6' %}
syslog: rsyslog
{% elif grains['osrelease'] == '6.5' %}
syslog : rsyslog
{% endif %}
[[email protected] init]# salt '*' saltutil.refresh_pillar

[[email protected] init]# /etc/init.d/salt-master restart
[[email protected] init]# salt '*' pillar.item syslog
