SaltStac中的grains(静态数据)和pillar(动态参数)

2023-10-09 01:30

本文主要是介绍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
图1 grains查看
##在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
图2 重启服务,使配置生效

图3 查看自主配置是否生效

          在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的方法进行服务匹配

图4 编写自主模块进行全局推送

         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
图5 查看不同grains对应的主机

图 6 全局推送结果(1)

图 7 全局推送结果(2)

二、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
图8 创建文件默认的pillar文件路径

            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             
图9 创建自定义模块,并刷新信息

              在minion端查询信息,缓存中并不存在相关的信息:

图10 查看信息,并没有同步

      上述查询说明数据只是在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
图11 查询测试

               表明信息完全同步,没有重启服务,为动态部署。

            2.4、和jinja结合使用

        pillar的使用,更多的是在自己的根目录下进行配置的编写,然后同Jinja模块一起使用,使运维工作人员,在进行服务配置管理时,更加灵活方便。

        关于和jinja模板的联用读者可以参考文章:《SaltStack中的jinja模板》

链接如下:https://blog.csdn.net/qq_41056224/article/details/119113181

这篇关于SaltStac中的grains(静态数据)和pillar(动态参数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169374

相关文章

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计