码迷,mamicode.com
首页 > 其他好文 > 详细

Saltstack系列5:Saltstack之pillar组件

时间:2016-08-11 11:18:14      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

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自动化运维技术与最佳实践》整理

Saltstack系列5:Saltstack之pillar组件

标签:

原文地址:http://www.cnblogs.com/MacoLee/p/5760135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!