saltstack应用之简化pillar配置步骤
在之前的文章<<saltstack应用之批量部署mysql>>中有用到简化pillar配置步骤,这次把里面关于pillar的内容单独拿出来,可以更直观的理解pillar的使用。
定义
Pillar是Salt用来分发全局变量到所有minions的一个接口。不像是state tree, pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.官网详细介绍
简化pillar配置步骤
正常情况下,每个或每组minion在top.sls中单独配置,这样略显麻烦,可以使用py模式的sls文件来简化配置
1,要启用pillar,首先要修改master中的配置
1
|
vim
/
etc
/
salt
/
master
|
1
2
3
|
pillar_roots
:
base
:
-
/
srv
/
pillar
|
2,重启salt master
1
|
service
salt
-
master
restart
|
3,建立top.sls,这里使用*号匹配所有的minion到custom
1
2
|
touch
/
srv
/
pillar
/
top
.
sls
vim
/
srv
/
pillar
/
top
.
sls
|
1
2
|
‘
*’:
-
custom
|
编写custom/init.sls
1
2
|
touch
/
srv
/
pillar
/
custom
/
init
.
sls
vim
/
srv
/
pillar
/
custom
/
init
.
sls
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!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'
]
[
0
]
path
=
'%s/custom/%s'
%
(
pillar_root
,
id
)
if
os
.
path
.
isfile
(
path
)
:
s
=
open
(
path
)
.
read
(
)
config
=
yaml
.
load
(
s
)
return
config
|
5,这样以后需要添加对应salt minion的pillar信息时,只要到custom目录下新建以salt id命名的文件,文件内容为yaml格式,就可以自动解析了,省去了到top.sls中添加配置的烦恼。例如 salt id为1.2.3.4-centos.game.web:
1
2
|
touch
/
srv
/
pillar
/
custom
/
1.2.3.4
-
centos
.
game
.
web
vim
/
srv
/
pillar
/
custom
/
1.2.3.4
-
centos
.
game
.
web
|
1
2
|
age
:
18
name
:
fox
|
编写完后执行下面的命令就能看到age信息了。
1
|
salt
1.2.3.4
-
centos
.
game
.
web
pillar
.
item
age
|
总结
pillar系统还是非常灵活的,熟练的使用可以进一步提升自动化的程度。
收 藏
成长的对话版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!