saltstack的grains与pillar使用入门
一、grains与pillar简介
grains是minion启动时加载,在minion运行过程中不会发生变化,所以是静态数据。grains数据的定制可以在各minion端,也可以放在master端;grains中包含许多的信息,如:运行的内核版本,操作系统,网络接口地址,MAC地址,cpu,内存等等信息。 Pillar是Salt用来分发全局变量到所有或指定minion的一个定制接口,所以相对grains来说可以称为动态的数据,保存在master端。
由于涉及的配置文件采用yaml格式,如果对yaml语法不在熟悉请访问这里
http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt
最好也了解下jinjia2的格式,如不熟悉请访问这里 http://docs.jinkan.org/docs/jinja2/intro.html
saltstack的安装部署请看这里http://dyc2005.blog.51cto.com/270872/1967147
二、grains日常使用入门
1、获取minion的grains所有数据
salt "minion_152" grains.items
类似如图:
2、获取单项grains值
# salt "minion_152" grains.item os
如图:
3、获取grains中的所有项(键)
# salt "minion_152" grains.ls #以minion_152上的为例
这样就可通过grains.item 项去获取具体对应的值啦
4、在minion上订制grains数据
订制grains数据有两种方法分别如下:
方法一:
修改/etc/salt/minion配置文件去掉12行左右的注释
default_include: minion.d/*.conf
在/etc/salt/minion.d目录下
创建一个test.conf 内容如下:
grains:
Data:
- test
Project:
- wgdbl_game
重启minion
# salt "minion_152" grains.items
如图:
方法二:
在master操作
mkdir -pv /srv/salt/_grains
cd /srv/salt/_grains
cat hello.py
#!/usr/bin/python
def GrainsHello():
grains = {}
grains["project"] = "myTestProject"
grains["name"] = "san game"
return grains
在服务端写好脚本再同步刷新到指定minion
# salt "minion_152" saltutil.sync_grains
如图:
推送更新成功。
此时到minion_152所在的机器
/var/cache/salt/minion/files/base/_grains/会发现在master端创建的hello.py grains脚本已经推送至此,如图:
并且在该minion下的
/var/cache/salt/minion/extmods/grains下有执行的标记生成了hello.pyc
第一种方法是grains中的纯静态指定minion下生成并且要重启minion生效,第二种方法可以统一放在胳端管理,再推送到各指定minions 动态生成管理。
三、pillar的使用
1、获取指定minion上pillar的数据 首先与grains不同的是要获取pillar需要在master的配置文件中打开 取消552行的注释如下: pillar_opts: True 并重启salt-master
# salt "minion_152" pillar.data
如图:
**注意:最好不要在线上使用 salt “*” pillar.data 这会卡的哦 **
2、pillar数据定制
配置master的pillar的根目录
取消529 -532 的注释
529 pillar_roots:
530 base:
531 - /srv/pillar
创建根目录
mkdir -pv /srv/pillar
重启salt-master
切换到/srv/pillar目录
创建pillar顶层入口文件(相当于目录)top.sls,注意必须要以sls后缀。
cat top.sls
base: "*":
- data "minion_152":
- minion152* 1.
创建 data.sls
cat data.sls
project_name: san
subject:
- zgws
- wgdbl
创建 minion152.sls
cat minion152.sls
Minion_152: info
HostName:
- zgws_game01
IP:
- 172.16.3.152
game:
- zgws
向minion同步pillar数据
# salt "minion_152" saltutil.refresh_pillar
如图:
# salt "minion_152" pillar.data
或
# salt "minion_152" pillar.items
如图:
由于只对minion_152进行推送更新pIllar 因此其他的minion不会收到更新。
3、pillar配置文件中增加jinjia2格式的判断
cat top.sls
base:
"*":
- data
"minion_152":
- minion152
- osinfo
创建osinfo.sls cat osinfo.sls
OS_INFO:
-
刷新pillar数据
# salt "minion_152" saltutil.refresh_pillar
查看minion_152 pillar数据
如图:
通过grains和pillar可以很方便的定制出特定的数据,pillar 配置是完全保存在master端的,而grains既可以保存在master端也可以单独至minion端,每次修改需要重启minion端。pillar偏向敏感数据的统一存放在master端且灵活修改。
文档信息
- 本文作者:sysnat
- 本文链接:https://sysant.github.io/2024/08/03/saltstack-grains-pillar/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)