@cdmonkey
2016-07-08T17:17:41.000000Z
字数 2203
阅读 1094
Saltstack
http://ju.outofmemory.cn/entry/97124
http://docs.saltstack.cn/topics/pillar/index.html
其作用就是于控制端为特定的被控节点定义你需要的任何的数据,该数据能够被“Salt”的其他组件使用。这里可以看出它的一个特点,Pillar
数据是与特定的被控节点相关联的,也就是说每一个被控节点都只能看到自己的数据,所以可以用来传递敏感数据(它会使用独立的加密会话,也是为了保证敏感数据的安全性)。因而相比较于“Grains”,它的应用场景有所不同。
用来产生特定于被控端节点的任意数据的接口。Pillar
中产生的数据几乎可以于“Salt”的任何组件中使用。
相对于“Grains”其存储的数据属于静态数据,前者存储的属于动态数据,是于控制端动态定义的。
显示所有默认的“Pillar”信息:
[root@salt-master ~]# salt '*' pillar.items
首先要在控制端节点的主配文件中开启“Pillar”的设定内容,换句话说我们自定义的数据是要存放于控制节点的,这一点与“Grains”截然不同,后者的自定义数据是存放于被控节点自己本地。
[root@salt-master ~]# vim /etc/salt/master
# 我们当前只定义基础环境:
pillar_roots:
base:
- /etc/salt/pillar
# 创建相应的目录:
[root@salt-master ~]# mkdir /etc/salt/pillar
默认情况下,控制端的主配文件中的所有数据都添加到Pillar中,且对所有被控节点可用。如果要禁用这一功能,可以在控制端主配文件中添加如下内容,重启服务后生效:
pillar_opts: False
接下来要创建入口文件top.sls
(与状态管理很相似,Pillar也有“top file”,也使用相同的匹配方式将数据应用到被控节点上)。
[root@salt-master ~]# cd /etc/salt/pillar/
[root@salt-master pillar]# vim top.sls
base:
'*':
- init.rsyslog
# Create directory:
[root@salt-master pillar]# mkdir /etc/salt/pillar/init
[root@salt-master pillar]# cd init/
[root@salt-master init]# vim rsyslog.sls
# We need to use the Jinja template:
{% if grains['osfinger'] == 'CentOS-6' %}
syslog: rsyslog
{% elif grains['osfinger'] == 'CentOS-5' %}
syslog: syslog
{% endif %}
-------------------
# 完成配置后需要重启控制端节点的服务进程:
[root@salt-master ~]# /etc/init.d/salt-master restart
最后于控制节点上进行刷新操作:
[root@salt-master ~]# salt '*' saltutil.refresh_pillar
node2.cdmonkey.com:
True
node3.cdmonkey.com:
True
#然后我们就可以获取到相应的设定内容了:
[root@salt-master ~]# salt '*' pillar.item syslog
node2.cdmonkey.com:
----------
syslog:
rsyslog
node3.cdmonkey.com:
----------
syslog:
rsyslog
[root@salt-master ~]# salt -I 'syslog:rsyslog' test.ping
node3.cdmonkey.com:
True
node2.cdmonkey.com:
True
显示当前正在执行的“JID”:
[root@salt-master ~]# salt '*' test.ping -v
Executing job with jid 20150630083550047324
-------------------------------------------
node2.cdmonkey.com:
True
node3.cdmonkey.com:
True
每次执行指令时都会有产生一个任务标识“JID”,以此代表你执行的操作。我们可以进一步针对这个任务标识对执行过的任务作进一步的管理。
显示当前正在进行中的任务:
[root@salt-master ~]# salt '*' saltutil.running
node2.cdmonkey.com:
node3.cdmonkey.com:
#由于当前没有正在运行的任务,所以没有任何显示。
停止当前正在进行中的任务:
[root@salt-master ~]# salt '*' saltutil.kill_job 20150630083550044693
node2.cdmonkey.com:
node3.cdmonkey.com:
Signal 9 send to job 20150630083550044693 at pid 5908