注:本篇博客参来自http://www.361way.com/saltstack-pillar/5107.html,感谢分享!
一、简介
grains用于存储静态不易变更的数据,而pillar一般用来存储动态的、敏感的数据;通过minion端和master端都可以配置设置或获取grains信息,而pillar信息只能在master端配置,再到 minion端执行。pillar默认使用sls文件进行数据存储(YAML格式),除此之外,pillar也同时支持多种后端的数据存储方式。例 如:mysql, mongodb, ldap, json, cobbler甚至是puppet。这无疑为开发中的接口提供了极大的便利。
pillar使用场景和常用命令
1、pillar常用的场景
- a、敏感数据:例如ssh key,加密证书等,由于pillar使用独立的加密session,可以确保这些敏感数据不被其他minion看到;
- b、不同变量:可以在pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在state中引用;
- c、用户版本等变量:可以在pillar中添加任何需要用到的数据,比如定义用户和UID的对应关系、软件版本和端口、minion的角色等等。
2、常用命令
salt ‘*’ sys.doc pilla | //查看与pillar有关的帮助信息 |
---|---|
salt ‘*’ pillar.items | //获取所有pillar items值 |
salt ‘*’ pillar.data | //等价于pillar.items |
salt ‘*’ saltutil.refresh_pillar | //刷新pillar值 |
salt ‘*’ saltutil.sync_all | //刷新pillar值,与refresh_pillar操作类似,但范围更大 |
salt ‘*’ sys.list_functions pillar | //列出所有的pillar相关函数方法 |
salt ‘*’ pillar.get xxx | //获取某项的值 |
salt ‘*’ pillar.raw | //内存中获取 |
二、实验环境
主机名 | ip | 服务 |
---|---|---|
server1 | 172.25.2.1/24 | salt-master,salt-minion |
server2 | 172.25.2.2/24 | salt-minion |
server3 | 172.25.2.3/24 | salt-minion |
三、示 例
//默认pillar使用的目录是/srv/pillar/,如果想要使用其他目录需要在master上的/etc/salt/master配置文件中修改路径。默认的主入口配置文件是top.sls 。
1.打开pillar模块
[root@server1 ~]# vim /etc/salt/master
2.创建目录
[root@server1 ~]# mkdir /srv/pillar
[root@server1 ~]# cd /srv/pillar
3.创建服务
[root@server1 pillar]# mkdir web //我们建一个目录,在此目录下进行
[root@server1 pillar]# cd web/
[root@server1 web]# vim install.sls
//判等条件,这里就用到了动态数据
[root@server1 pillar]# vim top.sls //在上级目录下
//这里要注意top.sls文件必须放在pillar目录下
[root@server1 pillar]# /etc/init.d/salt-master restart
//修改了配置文件,重启服务
Stopping salt-master daemon: [ OK ]
Starting salt-master daemon: [ OK ]
[root@server1 pillar]# salt '*' saltutil.refresh_pillar //刷新pillar值
server1:
True
server2:
True
server3:
True
[root@server1 pillar]# salt '*' pillar.items //查看
server1:
----------
server3:
----------
webserver:
nginx
server2:
----------
webserver:
httpd
还有好多实例,在后面的博客中会用到,也可以参考顶上的链接哟>_<