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

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

什么是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 

二.在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 
{% 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

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233151.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • allocatememory(an out of memory)

    仅作为记录,大佬请跳过。仅需减小batchsize展示:即可运行。注博主的这个程序减小batchsize就行了,可能不同的博友们的程序不一样,也有的大佬博主使用不计算梯度或释放内存的方式不计算梯度——传送门withtorch.no_grad()释放内存——传送门ifhasattr(torch.cuda,’empty_cache’): torch.cuda.empty_cache()…

    2022年4月10日
    50
  • leetcode-14最长公共前缀(分治|二分)[通俗易懂]

    leetcode-14最长公共前缀(分治|二分)[通俗易懂]原题链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,”flow”,”flight”]输出:”fl”示例 2:输入:strs = [“dog”,”racecar”,”car”]输出:””解释:输入不存在公共前缀。 提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成题解分

    2022年8月9日
    3
  • 8款最好用的Java集成开发工具(IDE)

    8款最好用的Java集成开发工具(IDE)8款最好用的Java集成开发工具(IDE)IDE的选择涉及到很多方面,例如项目性质、团队和企业的偏好等等,但是对于一些基本的需求,每一个好的IDE都是必须满足的,例如它要支持你使用的语言,无论是是Scala、还是Groovy或者是Java8,IDE都应该能完美支持。其次,它还要与控制系统兼容;然后,它还要帮助程序员轻松处理文本;最后,它还要支持可靠快速的调试和测试。Thi

    2022年7月8日
    20
  • win32创建窗口函数(windows程序内部运行机制)

    win32创建窗口函数(windows程序内部运行机制)

    2021年11月19日
    43
  • java 创建新文件_Java创建新文件[通俗易懂]

    java 创建新文件_Java创建新文件[通俗易懂]创建文件是一种非常常见的IO操作,在这一小节中我们将学习如何在java中创建文件的几个方法。在java中创建文件有三种流行的方法,下面将一个一个地来学习。方法一:使用File.createNewFile()方法java.io.File类可用于在Java中创建新文件。当初始化File对象时,需要提供一个文件名,然后调用createNewFile()方法来在Java中创建新文件。如果创建新文件成功,则…

    2022年6月18日
    35
  • idea2021激活码永久3月最新在线激活

    idea2021激活码永久3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号