2025年salt的grains工具和pillar工具使用详解

salt的grains工具和pillar工具使用详解什么是 grains 工具 Salt 附带一接口 用于获取有关底层系统的信息 Salt 的 grains 主要存储静态数据 用来收集 minion 端的一些数据 比如 操作系统 域名 IP 地址 内核 操作系统类型 内存或者其他系统属性

大家好,我是讯享网,很高兴认识大家。

什么是grains工具?

Salt附带一接口,用于获取有关底层系统的信息。Salt的grains主要存储静态数据,用来收集minion端的一些数据,比如:操作系统,域名IP地址,内核,操作系统类型,内存或者其他系统属性。
Minion端在启动时会读取grains数据,如果有新的grains数据需要重启minion服务或者在master端使用salt命令进行刷新

一.grains工具的使用

方法1:
之前用saltstack自动化部署apache服务(server2)和nginx服务(server3)。
内容详见博客地址:
https://blog.csdn.net/chaos_oper/article/details/
1.server2的roles为apache

[root@server2 ~]# cd /etc/salt/ [root@server2 salt]# vim minion 120 grains: 121 roles: 122 - apache [root@server2 salt]# systemctl restart salt-minion 

讯享网

2.server3的roles为nginx

讯享网[root@server3 salt]# vim minion 120 grains: 121 roles: 122 - nginx [root@server3 salt]# systemctl restart salt-minion 

3.在master端查看minion的角色

[root@server1 salt]# salt '*' grains.item roles 

在这里插入图片描述
讯享网
方法2:

1.在master端/srv/salt目录下创建_grains目录

讯享网[root@server1 salt]# mkdir _grains 

2.在_grains目录下创建python模块脚本

[root@server1 salt]# cd _grains/ [root@server1 _grains]# vim my_grains.py #!/usr/bin/env python def my_grains(): grains= { 'foo':'bar','hello':'world'} grains['salt'] = 'stack' return grains 

3.刷新

讯享网[root@server1 _grains]# salt '*' saltutil.sync_grains 

在这里插入图片描述
4.在minion端查看推送

[root@server2 salt]# cd /var/cache/salt/minion/files/base/ [root@server2 base]# ls apache _grains top.sls [root@server2 base]# cd _grains/ [root@server2 _grains]# ls my_grains.py [root@server2 _grains]# cat my_grains.py #!/usr/bin/env python def my_grains(): grains= { 'foo':'bar','hello':'world'} grains['salt'] = 'stack' return grains 

5.测试

讯享网[root@server1 _grains]# salt '*' grains.item hello 

在这里插入图片描述

[root@server1 _grains]# salt '*' grains.item salt 

在这里插入图片描述

讯享网[root@server1 _grains]# salt -G 'roles:apache' test.ping [root@server1 _grains]# salt -G 'roles:nginx' test.ping [root@server1 _grains]# salt -G 'salt:stack' test.ping 

在这里插入图片描述
6.修改top.sls

[root@server1 salt]# vim top.sls base: 'roles:apache': - match: grain - apache.service 'roles:nginx': - match: grain - nginx.service 

7.高级方式推送
[root@server1 salt]# salt ‘*’ state.highstate
8.测试
[root@server1 salt]# salt server2 grains.item fqdn
[root@server1 salt]# salt server2 grains.item os
在这里插入图片描述

二.在Pillar中存储静态数据

  • Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillar data的管理类似于Salt State Tree。
  • 存储敏感数据。不像是state tree, pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.

1.声明master pillar

Salt Master服务器维护了一个pillar_roots 设置 ,和在Salt文件服务器上使用的file_roots结构对应。和Salt 文件服务器类似,master配置文件中的 pillar_roots选项也是基于环境映射到目录。Pillar数据被映射到基于top文件匹配到的Minion上,top 文件是和state top文件一样的方式列出的。Salt pillar可以使用和标准的top 文件同样的匹配器类型。

在master端主配置文件将pillar工具打开:

讯享网vim /etc/salt/master pillar_roots: base: - /srv/pillar 

修改完配置文件后重启:systemctl restart salt-master
2. 在 /srv/创建目录:mkdir pillar
3. 进入到创建的目录,创建web目录,在web目录中创建文件:vim vars.sls

{% if grains['fqdn'] == 'server2' %} webserver: httpd state: master {% elif grains['fqdn'] == 'server3' %} webserver: nginx state: backup {% endif %} 

4.在piller目录下,创建top.sls文件

讯享网base: '*': - web.vars 

5.刷新:salt ‘*’ saltutil.refresh_pillar

6.测试:
在这里插入图片描述在这里插入图片描述

小讯
上一篇 2025-03-14 12:19
下一篇 2025-01-06 07:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/40041.html