[关闭]
@cdmonkey 2016-07-08T09:17:41.000000Z 字数 2203 阅读 1018

Saltstack-Pillar

Saltstack


三、Pillar

http://ju.outofmemory.cn/entry/97124
http://docs.saltstack.cn/topics/pillar/index.html

G&P1.png-9kB

其作用就是于控制端为特定的被控节点定义你需要的任何的数据,该数据能够被“Salt”的其他组件使用。这里可以看出它的一个特点,Pillar数据是与特定的被控节点相关联的,也就是说每一个被控节点都只能看到自己的数据,所以可以用来传递敏感数据(它会使用独立的加密会话,也是为了保证敏感数据的安全性)。因而相比较于“Grains”,它的应用场景有所不同。

用来产生特定于被控端节点的任意数据的接口。Pillar中产生的数据几乎可以于“Salt”的任何组件中使用。

相对于“Grains”其存储的数据属于静态数据,前者存储的属于动态数据,是于控制端动态定义的。

显示所有默认的“Pillar”信息:

  1. [root@salt-master ~]# salt '*' pillar.items

1. 自定义

首先要在控制端节点的主配文件中开启“Pillar”的设定内容,换句话说我们自定义的数据是要存放于控制节点的,这一点与“Grains”截然不同,后者的自定义数据是存放于被控节点自己本地。

  1. [root@salt-master ~]# vim /etc/salt/master
  2. # 我们当前只定义基础环境:
  3. pillar_roots:
  4. base:
  5. - /etc/salt/pillar
  6. # 创建相应的目录:
  7. [root@salt-master ~]# mkdir /etc/salt/pillar

默认情况下,控制端的主配文件中的所有数据都添加到Pillar中,且对所有被控节点可用。如果要禁用这一功能,可以在控制端主配文件中添加如下内容,重启服务后生效:

  1. pillar_opts: False

接下来要创建入口文件top.sls(与状态管理很相似,Pillar也有“top file”,也使用相同的匹配方式将数据应用到被控节点上)。

  1. [root@salt-master ~]# cd /etc/salt/pillar/
  2. [root@salt-master pillar]# vim top.sls
  3. base:
  4. '*':
  5. - init.rsyslog
  6. # Create directory:
  7. [root@salt-master pillar]# mkdir /etc/salt/pillar/init
  8. [root@salt-master pillar]# cd init/
  9. [root@salt-master init]# vim rsyslog.sls
  10. # We need to use the Jinja template:
  11. {% if grains['osfinger'] == 'CentOS-6' %}
  12. syslog: rsyslog
  13. {% elif grains['osfinger'] == 'CentOS-5' %}
  14. syslog: syslog
  15. {% endif %}
  16. -------------------
  17. # 完成配置后需要重启控制端节点的服务进程:
  18. [root@salt-master ~]# /etc/init.d/salt-master restart

最后于控制节点上进行刷新操作:

  1. [root@salt-master ~]# salt '*' saltutil.refresh_pillar
  2. node2.cdmonkey.com:
  3. True
  4. node3.cdmonkey.com:
  5. True
  6. #然后我们就可以获取到相应的设定内容了:
  7. [root@salt-master ~]# salt '*' pillar.item syslog
  8. node2.cdmonkey.com:
  9. ----------
  10. syslog:
  11. rsyslog
  12. node3.cdmonkey.com:
  13. ----------
  14. syslog:
  15. rsyslog

2. 匹配目标

  1. [root@salt-master ~]# salt -I 'syslog:rsyslog' test.ping
  2. node3.cdmonkey.com:
  3. True
  4. node2.cdmonkey.com:
  5. True

四、Job ID

显示当前正在执行的“JID”:

  1. [root@salt-master ~]# salt '*' test.ping -v
  2. Executing job with jid 20150630083550047324
  3. -------------------------------------------
  4. node2.cdmonkey.com:
  5. True
  6. node3.cdmonkey.com:
  7. True

每次执行指令时都会有产生一个任务标识“JID”,以此代表你执行的操作。我们可以进一步针对这个任务标识对执行过的任务作进一步的管理。

显示当前正在进行中的任务:

  1. [root@salt-master ~]# salt '*' saltutil.running
  2. node2.cdmonkey.com:
  3. node3.cdmonkey.com:
  4. #由于当前没有正在运行的任务,所以没有任何显示。

停止当前正在进行中的任务:

  1. [root@salt-master ~]# salt '*' saltutil.kill_job 20150630083550044693
  2. node2.cdmonkey.com:
  3. node3.cdmonkey.com:
  4. Signal 9 send to job 20150630083550044693 at pid 5908
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注