salt的pillar解释

本文深入探讨SaltStack的Pillar组件,解析其工作原理、配置步骤及注意事项。Pillar作为SaltStack的重要组成部分,负责管理分发到Minion端的全局数据,通过Topfile实现数据的精确控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pillar的介绍

        pillar是一个用于管理可以分发到minion端的全局数据的接口。它管理数据的方式和grains类似,同样要一个topfile文件,topfile文件里面的结构也是和grains一样。既然是分发给minion嘛,那就说明数据是放在master上的。既然是分发嘛,那肯定可以指定哪些minion有,那些没有,这样就使得一些敏感数据不会乱发给不必要的minion上去,也只有指定的minion可以访问被pillar允许它访问的那些数据信息。
        我们按照步骤的形式把pillar走一遍,同时会告知一些注意事项;

第一步,master启用pillar

在默认情况下pillar是没有被启用的,启用方式和grains的启用方式类似。在配置文件配置内容如下(默认配置文件会带有这些内容,只不过被注释了,取消注释即可)

pillar_roots:
  base:
    - /srv/pillar

注:这个结构很熟悉吧,和grains的启用结构类似,我简要解释一下:
启用pillar接口功能,新建一个名为base的环境,环境关联的目录有:/srv/pillar。
注: 它可以关联多个目录,但是注意所有相关目录综合的文件中只能有一个topfile文件。
注: base是一个我定义的环境名称,可以定义多个,但是官方建议一个就够了,除非有啥
幺蛾子的情况非得要多个环境,否则一个就够;grains也一样,不要虐自己。

注意:官方警告: pillar指定的base环境的目录不能是grains启用后grains目录下的子目录。

第二步,新建并查看topfile文件

你会发现和grains的topfile几乎一样!!内容和文件名如下:

vi /srv/pillar/top.sls

base:
  '*':
    - packages

解释:
第一行就是打开文件的命令,我就不多说了,没目录没文件自己新建。
base  指的就是base环境,我在启用pillar的时候不就定义了一个base环境嘛,这里就开始用这个环境名了。
'*'   指的就是匹配所有minion
- packages   指的就是一个名为packages.sls文件,它在哪里?这是由启用pillar时定义base这个环境的时候所指定的目录决定的,只要它在指定的目录里就可以了。
整句解读:所有的minion都可以在package.sls文件中得到数据。

第三步:pillar的topfile的运用简介:

        第一种:可以和grains连用:

base:
  'os:Debian':
    - match: grain
    - servers

解释:
base 指明是一个名为base的环境
'os:Debian' 指明os的value要是Debian
- match: grain 上面说的os这个key来源哪里,就是这里说的,要从grains这个模块里面拿os这个键值对。注意最后没有s
- servers   上面(above)说过了我就不解释了

注意:从安全角度上将,使用grains中的key来匹配minion是不安全的,因为它可以被认为改变,如果一定要用grains的key的话。官方建议对于敏感数据或者敏感动作,最好使用grians的ID,这个ID就是标记minion的。如果ID发生变化,那么minion对master来讲是不可信任的,要重新使master信任minion。

        第二种: 忽略没有的sls文件

base:
  '*':
    - servers
    - systems
    - ignore_missing: True


解释:
- ignore_missing: True  这个就是表示ignore_missing的值为True,默认是false;
干嘛用呢?如果上面指定的servers.sls或者systems.sls不存在,pillar运行的时候会跳过去,并且在_errors这个key中不过有任何提示。如果不指定,默认是false的话,pillar会在_errors中有提示,就会说某个sls不可用。
注:这个_errors这个key会在pillar使用的时候出现。

 

第四步:注意事项

pillar的键值对不能放在topfile中,建议每一个minion对应一个pillar的文件。

如果在多个pillar的sls中存在多个同名的键值对,那么同名键值对的值被取到的是哪个,就要看同名所在的sls在topfile中的陈列方式。只有处于最后一个陈列的同名key所在的文件中的这个key的value才会被取用。

举个例子:

cat top.sls
base:
  '*':
    - packages
    - services

cat psckages.sls
bind: bind9

cat services.sls
bind: named

解释:services在packages的后面,所以bind的值就是named,而不是bind9;所以最后minion拿到的bind这个key的值就是named了。

 

第五步: pillar数据的使用

取数据操作

pillar.get  pillar.item  pillar.raw

手动刷新数据

saltutil.refresh_pillar

运行states 或者使用pillar.items的时候会触发pillar数据的重新编译。但是get,item,raw不会看到最新的数据,它们只会看到内存中的数据,只有states可以看到。之后运行手动刷新数据的指令后,get,item,raw才会看到最新的数据。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值