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

pillar的定义:

1、主配置文件定义

salt默认将主控端配置文件中的所有数据都定义到pillar中,而且对所有被控主机开放,可通过修改/etc/salt/master配置中的pillar_opts: True或False来定义是否开户或禁用这项功能,修改后执行salt '*' pillar.data来观察效果。

2、SLS文件定义

pillar支持在slsy文件中定义数据,格式须符合YAML规范,与salt和state组件十分相似,两者文件的配置格式、入口文件top.sls都是一致的。

(1)定义pillar的主目录

修改主配置文件/etc/salt/master的pillar_roots参数,定义pillar的主目录

同时创建pillar目录,执行命令: install -d /srv/pillar

(2)定义入口文件top.sls

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

/srv/pillar/top.sls

base:

'*':

- data

/srv/pillar/data.sls

appname: website

flow:

maxconn: 30000

maxmem: 6G

(3)校验pillar

通过 salt 'myhost' pillar.data appname flow 命令可以看到多出了上面定义的 data.sls数据项。如果结果不符合预期,可以尝试刷新被控机pillar数据,

运行 salt 'myhost' saltutil.refresh_pillar 即可刷新

3、pillar的使用

完成pillar配置后,接下来我们可以在state、模板文件中引用,模板格式为 "{{ pillar变量 }}" ,例如:

{{ pillar['appname'] }} (一级字典)

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

Python API格式如下:

pillar['flow']['maxconn']

pillar.get('flow:appname',{})

结合grains处理数据的差异性----示例:

3.1 创建pillar目录和top.sls文件

1
2
3
4
5
 # mkdir /srv/pillar
 # vi /srv/pillar/top.sls
 base:
   '*':
 - ip

3.2 先通过pillar获取minion主机IP

1
2
 # vi /srv/pillar/ip.sls
 ip: {{ grains['ipv4'][1] }}

#写完后,执行sls命令,可以看到已经获取到IP

1
2
3
4
5
6
7
8
9
 # salt '*' pillar.item ip
 host2:
     ----------
     ip:
         192.168.18.213
 host1:
     ----------
     ip:
         192.168.18.212

既然grains与pillar类似,就说下区别:

1.grains是minion每次加载时获取本地系统信息数据,是静态的,固定的,而pillar是动态加载数据,随时变化的,比grains更灵活。

2.grains数据存储在minion本地,pillar存储在master

jinja2官网语法介绍: http://jinja.pocoo.org/docs/dev/templates/

salt之pillar组件的更多相关文章

  1. Saltstack pillar组件

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

  2. Saltstack系列5:Saltstack之pillar组件

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

  3. Saltstack管理对象属性之grains和pillar组件

    Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...

  4. 利用salt stack pillar安装多组keepalived

    利用salt stack pillar安装多组keepalived 环境描述 在生产环境中,需要搭建三套keepalived环境,3个master和3个backup,要安装的软件和配置文件,虽然不是很 ...

  5. salt之grains组件

    grains是saltstack最重要的组件之一,作用是收集被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可 ...

  6. 死磕salt系列-salt grains pillar 配置

    grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...

  7. 如何使用Salt Pillar

    作者言 Salt的网站上有两篇关于Pillar的文档(一,二),其中一篇内容很少,我觉得写成一篇文章更合适.本文的逻辑结构没有参照官方文档,而是根据我自己对Pillar的理解组织内容,希望能够把这个概 ...

  8. [salt] jinja模板中变量使用pillar的几种方法

    先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件 ...

  9. saltstack pillar

    piller组件定义与客户端相关的任何数据(定义在master端),定义好的数据可以被其他组件调用(如state,api) 说通俗了,一句话,就是ansible vars里定义的变量,可以在整个pla ...

随机推荐

  1. 安装EKL

    elasticsearch rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch   /etc/yum.repos.d/ela ...

  2. PHP图像处理

    1.创建画布: $img=imagescreatetruecolor(200,200); 创建颜色并填充 $red=imagecolorallocate($img,255,0,0);  //创建颜色 ...

  3. svn 提交代码 自动过滤技巧,自动过滤不想提交的文件和文件夹

    原文:http://www.cnblogs.com/codealone/p/3208620.html 打开SVN客户端-----常规设置------全局忽略样式,添加 bin obj debug Re ...

  4. gdb 调试(查看运行时数据) 四

    在使用GDB调试程序时,触发断点后,可以使用print命令(简写为p),或是同义命令inspect来查看当前程序的运行数据.print命令的格式是: print <expr>    pri ...

  5. 关于Hibernate Could not obtain transaction-synchronized Session for current thread

    转载自 http://blog.csdn.net/flyjiangs/article/details/51537381 最近几年一直再搞android,最近闲下来了,顺便玩一下web. 整了个最新版本 ...

  6. [转]利用C#自带组件强壮程序日志

    利用C#自带组件强壮程序日志   在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 声明 正文中的代码只是一个栗子,一个非常简 ...

  7. 部署DNS从服务器

    修改主服务器中区域信息文件: # vi /etc/named.rfc1912.zones 检查配置文件是否有错误 # named-checkconf 重启named服务程序,让配置文件生效 #syst ...

  8. blktrace未公开选项网络保存截取数据

    本文链接地址: blktrace未公开选项网络保存截取数据 我们透过blktrace来观察io行为的时候,第一件事情需要选择目标设备,以便分析该设备的io行为.具体使用可以参考我之前写的几篇:这里 这 ...

  9. CSS3基础知识核心动画(二)

    Transition过渡 transition-property 过渡属性 all|[attr] transition-duration 过渡时间 transition-delay 延迟时间 tran ...

  10. lambda,sorted(),filter(),map(),递归,二分法

    1. lambda 匿名函数 语法: lambda 参数:返回值 不能完成复杂的操作例 # li=['21','asdd','weqeqw','wqf']# # it=iter(li)# # prin ...