曾伯顺 發表於 2023-7-22 00:00:00

saltstack应用之简化pillar配置步骤

<p>在之前的文章&lt;&lt;<span>saltstack应用之批量部署mysql&gt;&gt;</span>中有用到简化pillar配置步骤,这次把里面关于pillar的内容单独拿出来,可以更直观的理解pillar的使用。</p>
<h3><strong>定义</strong></h3>
<p>Pillar是Salt用来分发全局变量到所有minions的一个接口。不像是state tree, pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.官网详细介绍</p>
<h3>简化pillar配置步骤</h3>
<p>正常情况下,每个或每组minion在top.sls中单独配置,这样略显麻烦,可以使用py模式的sls文件来简化配置</p>
<p>1,要启用pillar,首先要修改master中的配置</p><pre class="brush:bash;toolbar:false">vim /etc/salt/master</pre><p></p><pre class="brush:bash;toolbar:false">pillar_roots:
base:
    - /srv/pillar</pre><p>2,重启salt master</p><pre class="brush:bash;toolbar:false">service salt-master restart</pre><p>3,建立top.sls,这里使用*号匹配所有的minion到custom</p><pre class="brush:bash;toolbar:false">touch /srv/pillar/top.sls
vim /srv/pillar/top.sls</pre><p></p><pre class="brush:bash;toolbar:false">‘*’:
- custom</pre><p></p>
<h3>编写custom/init.sls</h3>
<p></p><pre class="brush:bash;toolbar:false">touch /srv/pillar/custom/init.sls
vim /srv/pillar/custom/init.sls</pre><p></p><pre class="brush:bash;toolbar:false">#!py
#coding:utf-8
"""
返回minion对应的pillar信息
"""
import yaml
import os

def run():
"""
首先获取请求的salt id,例如id是:1.2.3.4-centos.game.web,然后根据获取的pillar_root组合成路径/srv/pillar/custom/1.2.3.4-centos.game.web
如果文件存在,利用yaml模块从文件中读取信息,返回字典
如果文件不存在,则返回空
"""
config={}
id=__opts__['id']
pillar_root=__opts__['pillar_roots']['base']
path='%s/custom/%s'%(pillar_root,id)
if os.path.isfile(path):
    s=open(path).read()
    config=yaml.load(s)
return config</pre><p>5,这样以后需要添加对应salt minion的pillar信息时,只要到custom目录下新建以salt id命名的文件,文件内容为yaml格式,就可以自动解析了,省去了到top.sls中添加配置的烦恼。例如 salt id为1.2.3.4-centos.game.web:</p><pre class="brush:bash;toolbar:false">touch /srv/pillar/custom/1.2.3.4-centos.game.web
vim /srv/pillar/custom/1.2.3.4-centos.game.web</pre><p></p><pre class="brush:bash;toolbar:false">age: 18
name: fox</pre><p>编写完后执行下面的命令就能看到age信息了。</p><pre class="brush:bash;toolbar:false">salt 1.2.3.4-centos.game.web pillar.item age</pre><p></p>
<h3>总结</h3>
<p>pillar系统还是非常灵活的,熟练的使用可以进一步提升自动化的程度。</p>
頁: [1]
查看完整版本: saltstack应用之简化pillar配置步骤