五、Salt Pillar
来源:互联网 发布:js页面初始化方法 编辑:程序博客网 时间:2024/05/17 13:41
Pillar是Salt用来分发全局变量到所有minions的一个接口
Pillar和State有什么区别了?Pillar文件里面存放的是各种数据,如:软件包名、软件版本等。而State里面存放的对匹配的minion要做的操作,如安装一个包。此外,Pillar用于存储敏感数据,这些数据只对匹配的minion有效,这一个特性对于为特定的minion存放特殊的数据十分有用。如存放一个minion的密码等。Pillar定义的数据可以被Salt其他的组件使用,如State
Pillar大致有以下场景:
- 敏感数据
例如ssh key,加密证书等,由于Pillar使用独立的加密session,可以确保这些敏感数据不被其他minion看到。 - 变量
可以在Pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在State中引用。 - 其他任何数据
可以在Pillar中添加任何需要用到的数据。比如定义用户和UID的对应关系,mnion的角色等。 - 用在Targetting中
Pillar可以用来选择minion,使用-I选项。
一、配置Pillar
Salt Master服务器维护了一个pillar_roots 设置 ,和在Salt 文件服务器上使用的file_roots结构对应。和Salt 文件服务器类似,master配置文件中的 pillar_roots 选项也是基于环境映射到目录。Pillar数据被映射到基于top文件匹配到的Minion上, top 文件是和state top文件一样的方式列出的。Salt pillar可以使用和标准的top 文件同样的匹配器类型。
0. 查看pillar模块的相关函数及用法
列出pillar函数及其详细用法
salt ‘*’ sys.doc pillar
列出pillar模块的相关函数
salt ‘*’ sys.list_functions pillar
1. 声明master Pillar
/etc/salt/master
pillar_roots: base: - /srv/pillar
2. 重启master
3. 创建/srv/pillar/目录
二、开始使用Pillar
1. 创建sls文件。这些文件的格式和state文件格式基本一致
以安装Apache为例
/srv/pillar/top.sls
base: '*': - httpd
/srv/pillar/httpd.sls
{% if grains['os'] == 'CentOS' %}apache: httpd{% elif grains['os'] == 'Debian' %}apache: apache2{% endif %}
2. 刷新Pillar 数据
在master上修改pillar文件后,需要刷新minion上的数据,刷新命令:
salt ‘*’ saltutil.refresh_pillar
3. pillar模块的常用函数
- 两种方法命令行中查看Pillar数据:
salt ‘*’ pillar.data
salt ‘*’ pillar.raw
- pillar.items
pillar.item
pillar.get
salt ‘*’ pillar.get
备注: 这里的key指的是字典里面的‘key’,根据SLS文件的不同,key的深度可能也不通。如有的字典里面嵌套了其他的字典。
4. 在State组件中使用Pillar
前面提过Pillar数据可以用于其他组件,比如State SLS文件中。首先明白一点,Pillar数据解析后是以字典的形式存在的,因此,引用Pillar数据的过程,实际上就是从字典里面读取数据的过程。
在State SLS文件中有两中方法使用Pillar数据:
pillar[‘apache’]
或
pillar.get(‘apache’,{})
- 配置State SLS文件
/srv/salt/top.sls
base: '*': - httpd
/srv/salt/httpd.sls
httpd: pkg: - installed - name: {{ pillar.get('apache', {}) }}
执行state命令:
salt ‘*’ state.sls httpd
5. pillar列表
以添加多个用户为例
- pillar文件
/srv/pillar/top
base: '*': - users
/srv/pillar/users/init.sls
users: user1: 1000 user2: 1001 user3: 1002 user4: 1003
- state文件
/srv/salt/top.sls
base: '*': - users
/srv/salt/users/init.sls
{% for user,uid in pillar.get('users',{}).items() %}{{ user }}: user.present: - uid: {{ uid }}{% endfor %}
注意: 1. 这里的sls文件用了Jinja模板;2. for user,uid in pillar.get(‘users’,{}).items() 语句会取出user和对应的uid
备注:注意观察下面的pillar文件
/srv/pillar/top.sls
base: '*': - sshd - httpd
/srv/pillar/sshd.sls
service: ssh_service: sshd
/srv/pillar/httpd.sls
service: httpd_name: httpd
观察此时的pillar数据值
root@master:/srv/pillar# salt '*' pillar.data192.168.159.136: ---------- service: ---------- httpd_service: httpd sshd_service: sshd
结论: 即使是两个不同的pillar sls文件,如果字典的主key一致,则不通sls文件的的数据都会=将解析后放入主字典下
- 五、Salt Pillar
- salt数据系统---pillar
- salt实战系列-grains和pillar学习
- 使用MongoDB作为Salt Pillar后端存储数据
- salt
- salt
- salt
- Pillar Walkthrough
- saltstack Pillar
- saltstack pillar
- Pillar Walkthrough 翻译
- SaltStack Pillar攻略
- [Saltstack]-{grains,pillar}[二]
- Saltstack数据系统-Pillar
- 在SaltStack中使用Pillar
- salt returners
- Salt安装
- SALT 加密
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
- curl命令
- Java基础之冒泡排序算法
- java分布式事务处理--最终事务一致性
- VitualBox增强功能安装
- 五、Salt Pillar
- 重定向输出流实现程序日志
- 单标签页简易浏览器实现
- JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)
- java正则表达式与String类完全解析
- 01-复杂度1 最大子列和问题 (20分)
- WOAO我傲英语《找到合适的学习方法》
- input 按钮在IE下兼容问题
- 以Windows 10系统为例,介绍下Win10电脑无法访问移动硬盘参数错误的解决方法