24.6 grains
-
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。
-
列出所有的grains项目名字:salt "client" grains.ls
-
列出所有grains项目以及值:salt "client" grains.items
grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。我们可以根据grains收集到的一些信息,做配置管理工作。
- grains支持自定义信息
1、在minion端上编辑配置文件;(增加自定义信息,格式是 键 : 值 形式)
[root@client ~]# [root@client ~]# vim /etc/salt/grains [root@client ~]# cat /etc/salt/grains role: nginx env: test
2、重启minion服务:systemctl restart salt-minion
3、回到master上,获取grains;salt '*' grains.item role env
[root@server ~]# salt '*' grains.item role env server: ---------- env: role: client: ---------- env: test role: nginx
获取不存在的grains信息,返回空值 [root@server ~]# salt '*' grains.item abcd efg server: ---------- abcd: efg: client: ---------- abcd: efg:
可以借助grains的一些属性信息来执行;可以起到一个匹配的作用;(salt -G role:nginx cmd.run 'hostname' )
[root@server ~]# salt -G role:nginx cmd.run 'hostname' client: client
24.7 saltstack – pillar
pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。
1、配置自定义pillar;vim /etc/salt/master
找到如下配置://去掉前面的#号
pillar_roots:
base: #此行前面有两个空格
- /srv/pillar #此行前面有4个空格
**注意保留空格**
2、重启salt-master服务;systemctl restart salt-master.service
3、创建/srv/pillar目录,并且编辑一个子配置文件用于测试;
[root@server ~]# mkdir /srv/pillar [root@server ~]# vim /srv/pillar/test.sls //添加的测试文件 [root@server ~]# cat /srv/pillar/test.sls conf: /etc/123.conf //添加的测试文件内容
4、编写主配置文件;vim /srv/pillar/top.sls
base: # 表示根
'client': # 主机名,缩进两个空格
- test # 加载哪个前缀的配置文件,缩进四个空格
5、重启salt-master服务;systemctl restart salt-master.service
6、当更改完pillar配置文件后,我们可以通过刷新pillar配置来获取新的pillar状态:salt '*' saltutil.refresh_pillar
[root@server ~]# salt '*' saltutil.refresh_pillar server: True client: True
- 验证:salt '*' pillar.item conf
[root@server ~]# salt '*' pillar.item conf client: ---------- conf: /etc/123.conf server: ---------- conf:
- pillar同样可以用来作为salt的匹配对象。比如 salt -I 'conf:/etc/123.conf' test.ping
[root@server ~]# salt -I 'conf:/etc/123.conf'