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

相关文章

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

spring 参数校验Validation示例详解

《spring参数校验Validation示例详解》Spring提供了Validation工具类来实现对客户端传来的请求参数的有效校验,本文给大家介绍spring参数校验Validation示例详... 目录前言一、Validation常见的校验注解二、Validation的简单应用三、分组校验四、自定义校

SpringBoot中Get请求和POST请求接收参数示例详解

《SpringBoot中Get请求和POST请求接收参数示例详解》文章详细介绍了SpringBoot中Get请求和POST请求的参数接收方式,包括方法形参接收参数、实体类接收参数、HttpServle... 目录1、Get请求1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G