本文主要是介绍SaltStac中的grains(静态数据)和pillar(动态参数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、Grains
1、简介
2、应用场景:
3、静态配置使用
3.1、基本命令的查询
3.2、自定义grains项
3.3、 实例应用
二、Pillar
1、简介
2、动态配置使用
2.1、基础目录
2.2、自定义pillar项
2.3、数据pillar数据查询
2.4、和jinja结合使用
一、Grains
1、简介
Grains是SaltStack的一个组件,存放在SaltStack的minion端,主要采集一些minion端的数据。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。因为是是静态数据,所以一般不去修改。
2、应用场景:
信息查询,可用作CMDB。
在target中使用,匹配minion。
在state系统中使用,配置管理模块。
3、静态配置使用
3.1、基本命令的查询
##指定服务器minion端,查看所有模块
[root@server1 nginx]# salt server2 grains.items####指定服务器minion端,查看指定单项(更多模块可以查看官方文档)
[root@server1 nginx]# salt server2 grains.item ipv4
3.2、自定义grains项
在minion端开启grains,配置相关的标签,然后重启服务(静态保持保持文件生效)。
在Minion端进行配置:
##在minion端配置##文件位置:/etc/salt/minoin
##文件内容:129 grains:
130 roles:
131 - webserver
132 - memcache##重启服务
[root@server2 salt]# systemctl restart salt-minion.service##主服务器查看配置
[root@server1 nginx]# salt server2 grains.item roles
##在minion端编写grains文件设置标签##文件位置:/etc/salt/grains##文件内容:
roles:- nginx##重启服务
[root@server3 salt]# systemctl restart salt-minion.service ##模块同步
[root@server1 nginx]# salt server3 saltutil.sync_grains##信息查询
[root@server1 nginx]# salt server3 grains.item roles
在Master端进行配置:
##在Msater端进行服务配置##创建模块路径
[root@server1 salt]# mkdir /etc/salt/_grains##创建个人目录
[root@server1 salt]# vim my_grains.py##文件内容
def my_grains():grains = {}grains['salt'] = 'stack'grains['hello'] = 'world'return grains##参数列表同步
[root@server1 salt]# salt '*' saltutil.sync_grains##测试
[root@server1 _grains]# salt -G salt:stack test.ping ##表示用grains的方法进行服务匹配
3.3、 实例应用
##通过top.sls进行全局推送,对不同主机安装不同的应用服务##文件位置:/srv/salt/top.sls##文件内容:1 base:2 'roles:apache': ##指定标签服务3 - match: grain ##表明通过grain进行匹配4 - apache5 'roles:nginx': 6 - match: grain7 - nginx.install ##本身调用的模块##全局推送:
[root@server1 salt]# salt '*' state.highstate
二、Pillar
1、简介
pillar和grains一样也是一个数据系统,多用于环境配置,配置文件时写时生效,不需服务重启。
pillar的数据始动态终存在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
2、动态配置使用
2.1、基础目录
##通过配置主配置文件:/etc/salt/master
##配置文件默认根目录为(可以自行更改):/srv/pillar##配置文件内容:837 pillar_roots:838 base:839 - /srv/pillar##个人重新制定文件路径时,需要重启master端,使用默认路径时需要创建相应的文件[root@server1 srv]# vim /etc/salt/master[root@server1 srv]# mkdir pillar[root@server1 srv]# systemctl restart sakt-master.service
2.2、自定义pillar项
在默认路径下编写自主文件配置,此时文件的默认根目录为从当前文件开始,即:/srv/pillar/..
##创建个人模块:/srv/pillar/top.sls
[root@server1 pillar]# touch top.sls
[root@server1 pillar]# vim top.sls##文件内容:1 base: ##唯一性声明2 '*': ##指定主机3 - packages ##调用的文件##编写自主文件:
[root@server1 pillar]# vim packsges.sls##文件内容;1 {% if grains['fqdn'] == 'server3' %}2 package: httpd3 ip: 192.168.1.134 port: 80805 {% elif grains['fqdn'] == 'server2' %}6 package: mairadb7 ip: 192.168.1.128 port: 809 {% endif %}##进行资源刷新
[root@server1 pillar]# salt '*' saltutil.refresh_pillar
在minion端查询信息,缓存中并不存在相关的信息:
上述查询说明数据只是在master端存在,并没有同步到minion端。
【注】信息如果不刷新,依然是部署的,但是并不能查到
2.3、数据pillar数据查询
##pillar资源查询
[root@server1 pillar]# salt '*' pillar.items
[root@server1 pillar]# salt '*' pillar.item package##数据匹配
[root@server1 pillar]# salt -I 'package:httpd' test.ping
表明信息完全同步,没有重启服务,为动态部署。
2.4、和jinja结合使用
pillar的使用,更多的是在自己的根目录下进行配置的编写,然后同Jinja模块一起使用,使运维工作人员,在进行服务配置管理时,更加灵活方便。
关于和jinja模板的联用读者可以参考文章:《SaltStack中的jinja模板》
链接如下:https://blog.csdn.net/qq_41056224/article/details/119113181
这篇关于SaltStac中的grains(静态数据)和pillar(动态参数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!