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 spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL