Saltstack系列5:Saltstack之pillar组件
2016-08-11 10:53
309 查看
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自动化运维技术与最佳实践》整理
相关文章推荐
- curl模拟安卓手机进行网络请求
- Fragment仿qq界面
- java定义二维数组的几种写法(转)
- Windows下配置nginx+php(wnmp)
- iOS网络编程 get post 区别
- Android Studio中使用git将项目推送到github
- 微图离线地图如何将照片放到手机拍摄的正确位置
- mybatis sqlserver 分页查询报错:'@P0' 附近有语法错误
- 图论 生成树 POJ 1251 Jungle Roads (prim)(Kruskal)
- centos6.5
- 添加目录classpath
- Android 接受短信和发送短信
- 天坑 之 Eclipse J2EE Preview 运行正确项目一直显示http 404
- 转载:CMarkUp使用简介
- 2016.8.11面试点
- 过滤器
- MySQL笔记-jdbc编程步骤
- 排序算法
- 排序算法
- 排序算法