Saltstack系列5:Saltstack之pillar组件

pillar组件

pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板、state、API等。

在pillar中定义的数据与不同业务特性的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户id、组id、读写权限、程序包等信息,定义的规范是采用Python字典形式,即键/值,最上层的键一般为主机的id或组的名称。

pillar的定义

主配置文件定义

Saltstack默认将主控端配置文件中的所有数据都定义到pillar中,而对所有被控主机开放,可通过修改/etc/salt/master配置来定义是否开启或关闭这项功能。

【/etc/salt/master】

pillar_opts: True/False

修改后执行命令来观察效果:

salt ‘*‘ pillar.data

SLS文件定义

pillar支持在sls文件中定义数据,格式须符合YAML规范,与Saltstack的state组件十分相似,新人容易将两者混淆,两者文件的配置格式、入口文件top.sls都是一致的。

定义pillar的主目录
【/etc/salt/master】

pillar_roots:
  base:
    - /srv/pillar

同时创建pillar目录,执行命令:

install -d /srv/pillar

定义入口文件top.sls

入口文件的作用一般是定义pillar的数据覆盖被控主机的有效范围,‘*‘代表任意主机,其中包括了一个data.sls文件具体内容如下:

【/srv/pillar/top.sls】

base:
  ‘*‘:
    - data #指代的是data.sls文件

【/srv/pillar/data.sls】

appname: website
flow:
  maxconn: 3000
  maxmem: 6G

校验pillar

刷新被控主机的pillar信息

salt ‘*‘ saltutil.refresh_pillar

查看上面定义的data.sls数据项

salt ‘wx‘ pillar.data appname flow

pillar的使用

完成pillar配置后接下来介绍使用方法。我们可以在state、模板文件中引用,模板格式为:{{ pillar变量 }}

例:

{{ pillar[‘appname‘] }}(一级字典)
{{ pillar[‘flow‘][‘maxconn‘] }}(二级字典) 或 {{ salt[‘pillar.get‘](‘flow:maxconn‘,{}) }}

#Python API格式如下:
pillar[‘flow‘][‘maxconn‘]
pillar.get(‘flow:appname‘,{})

操作目标主机

salt -I ‘appname:website‘ test.ping

结果:

wx:
  True

结合grains处理数据的差异性

首先通过结合grains的id信息来区分不同的id的maxcpu的值,其次进行引用观察匹配的信息,将data.sls修改成如下形式:

appname: website
flow:
  maxconn: 3000
  maxmem: 6G
  {% if grains[‘id‘] == ‘wx‘ %} #jinjia2模板语法
  maxcpu: 8
  {% else %}
  maxcpu: 4
  {% endif %}

结果:

wx:
    ----------
    flow:
        ----------
        maxconn:
            3000
        maxcpu:
            8
        maxmem:
            6G


参考资料:

根据刘天斯《Python自动化运维技术与最佳实践》整理

时间: 2024-12-06 02:08:35

Saltstack系列5:Saltstack之pillar组件的相关文章

Saltstack系列:Saltstack的Grains和Pillar

Grains和Pillar的用途: Grains : 用于存储minion的基本数据信息: Pillar : 用于存储master分配给minion的数据信息. Grains和Pillar的存储区域: Grains : 元数据存储在minion端: Pillar : 元数据存储在master端. Grains和Pillar的更新方式: Grains : 在minion启动时进行更新: Pillar : 元数据存储在master端,使用 saltutil.refresh_pillar进行刷新,效率

Saltstack系列:Saltstack分组

关于Saltstack分组的混合匹配:(Compound matchers) 1.修改配置文件,添加组. [[email protected] ~]# vim /etc/salt/master nodegroups:   group1: '[email protected],node3'   group2: '[email protected]'   group3: '[email protected]/24'   group4: '[email protected][2-3]' [[email

运维工具SaltStack之四Pillar组件

运维工具SaltStack之四Pillar组件 一.pillar组件介绍 跟grains的结构一样,存放需要提供给Minion端的信息,存储在master端.可根据各个机器环境的不同,分别定义变量,然后再sls文件里统一引用,官方表示pillar是存储敏感数据的,主要解决环境的差异性.同时与grains组件还有一个特别的区别:grains数据加载在内存里,即minion启动之后不会变,哪怕修改了grains,除非重启minion或者从master端同步.而pillar修改之后,再获取数据即生效了

Saltstack pillar组件

 pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与不同业务特性的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户ID.组ID.读写权限.程序包等信息,定义的规范是采用python字典形式,即键/值,最上层的键一般为主机的ID

(转)Saltstack系列

Saltstack系列1:安装配置 Saltstack系列2:Saltstack远程执行命令 Saltstack系列3:Saltstack常用模块及API Saltstack系列4:Saltstack之Grains组件 Saltstack系列5:Saltstack之pillar组件 Saltstack系列6:Saltstack之state 原文:http://www.cnblogs.com/MacoLee/category/847853.html https://www.centos.bz/ta

自动化运维Saltstack系列(一)之基础功能篇

Saltstack简介  Saltstack是基于Python开发的一套C/S架构,具备Puppet.Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高:使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高: Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器.目前Salt-cloud项目也已经合并到Saltstack主项

Saltstack系列之二——Targeting

昨天原本打算是写salt的WebUi-halite的,不过想了想,还是先写一些"看得见.摸得着的"的一些显而易见,最基本的用处吧.(尝到一些甜头后,才会继续去钻研吧...哈哈~) 那,什么是Targeting呢? 官方给到的解释是: Specifying which minions should run a command or execute a state by matching against hostnames, or system information, or define

SaltStack数据系统之Grains、Pillar

SaltStack数据系统之Grains.Pillar 1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.Grains是服务器的一系列粒子信息,也就是服务器的一系列物理,软件环境信息.在执行salt的sls时候可以根据Grains信息的不同对服务器进行匹配分组,例如可以根据系统是centos服务器跟系统是redhat环境的安装不同的软件包.Grains功能:1.收集资产信息 2.信息查询 官方文档:https://d

自动化运维系列之SaltStack批量部署Apache服务

自动化运维系列之SaltStack批量部署Apache服务 saltstack原理 SalStack由master和minion构成,master是服务端,表示一台服务器:minion是客户端,表示多台服务器.在Master上发送命令给符合条件的minion,Minion就会执行相应的命令.Master和Minion之间是通过ZeroMQ(消息队列)进行通信的. SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口:4506端口是