Saltstack pillar组件
pillar组件
pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板、state、API等。在pillar中定义的数据与不同业务特性的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户ID、组ID、读写权限、程序包等信息,定义的规范是采用python字典形式,即键/值,最上层的键一般为主机的ID或组名称。
下面详细描述如何进行pillar的定义和使用.
pillar的定义:
1.主配置文件的定义
Saltstack认将主控端配置文件中的所以数据都定义到pillar中,而且对所有被控主机开放,可通过修改/etc/salt/master配置中的pillar_opts:Ture或False来定义是否开启或禁用这项功能,修改后执行salt '*' pillar.data 来观察效果。如下为pillar_opts:Ture的返回结果,以主机'SN100-128'为例,执行salt 'SN100-128' pillar.data .
[root@localhost ~]# salt 'SN100-128' pillar.data
SN100-128:
----------
__role:
master
auth_mode:
1
auto_accept:
True
cache_sreqs:
True
cachedir:
/var/cache/salt/master
cli_summary:
False
client_acl:
----------
client_acl_blacklist:
----------
cluster_masters:
cluster_mode:
paranoid
con_cache:
False
conf_file:
/etc/salt/master
config_dir:
/etc/salt
cython_enable:
False
daemon:
True
default_include:
master.d/*.conf #(主机所有pillar信息,部分截图)
2.SLS文件定义
pillar支持在sls文件中定义数据,格式须符合YAML规范,与Saltstack的state组件十分相似,两者文件的配置格式、入口文件top.sls都是一致的。下面详细介绍pillar使用sls定义的配置过程。
(1)定义pillar的主目录
修改主配置文件/etc/salt/master 的pillar_roots参数,定义pillar的主目录,格式入下:
pillar_roots:
base:
- /srv/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
maxmen:6G
(3)效验pillar
通过查看 "SN100-128" 主机的pillar数据,可以看到多出了data.sls数据项,原因是我们定义top.sls时使用“ * ”覆盖了所有主机,这样当查看“ SN100-128” 的pillar数据时可以看到我们定义的数据。如下所示,如果结果不符合预期,可以尝试刷新被控主机pillar数据,运行 salt '*' saltutil.refresh_pillar即可。
[root@localhost~]# salt 'SN100-128' pillar.data appname flow
SN100-128:
----------
appname:
website
flow:
maxconn:30000 maxmen:6G #返回主机pillar的信息
pillar的使用:
完成pillar配置后,接下来介绍使用方法。我们可以在state、模板文件中引用,模板格式为"{{pillar 变量}}",例如:
{{ pillar['appname'] }} (一级字典)
{{ pillar['flow']['maxconn'] }} (二级字典)
Python API格式如下:
pillar['flow']['maxconn']
pillar.get('flow:appname',{})
1.操作目标主机
通过-I 选项来使用pillar来匹配被控主机:
[root@localhost]# salt -I 'appname:website' test.ping
SN100-128:
True
SN100-129:
True
SN100-130:
True
2.结合grains处理数据的差异性
首先通过结合grains的ID信息来区分不同id的maxcpu的值,其次进行引用观察匹配的信息。将data.sls修改成如下形式,其中,"if ... else...endfi"为jinja2的模板语法。
appname: website
flow:
maxconn:30000
maxmen:6G
{% if grains['id'] == 'SN100-128' %}
maxcpu: 8
{% else %}
maxcpu: 4
{% endif %}
查看被控主机的pillar数据
salt 'SN100-128' pillar.data appname flow
Pillar在top.sls定义实例:
在master端配置文件中打开pillar_root pillar_roots:
base:
- /etc/salt/pillar mkdir /etc/salt/pillar
mkdir /etc/salt/pillar/init 重启 /etc/init.d/salt-master restart vim /etc/salt/pillar/top.sls
base:
'*':
- init.rsyslog vim /etc/salt/pillar/init/rsyslog.sls {% if grains['osfinger'] == 'CentOS-6' %} syslog:rsyslog
{% elif grains['osfinger'] == 'CentOS-5' %} syslog: syslog {% endif %} salt '*' saltutil.refresh_pillar //刷新
Saltstack pillar组件的更多相关文章
- Saltstack系列5:Saltstack之pillar组件
pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等. 在pillar中定义的数据与 ...
- Saltstack管理对象属性之grains和pillar组件
Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...
- Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar
一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...
- saltstack pillar
piller组件定义与客户端相关的任何数据(定义在master端),定义好的数据可以被其他组件调用(如state,api) 说通俗了,一句话,就是ansible vars里定义的变量,可以在整个pla ...
- SaltStack Pillar 详解
简介 grains用于存储静态不易变更的数据,而pillar一般用于存储动态, 敏感的数据,通过minion和master设置或获取grains信息,而pillar信息只能在master端配置,在到m ...
- Saltstack grains组件
grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...
- salt之pillar组件
pillar也是salt最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与不同业务特征的被控主机相关联, ...
- SaltStack入门篇(三)之数据系统Grains、Pillar
1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...
- SaltStack数据系统之Grains、Pillar
SaltStack数据系统之Grains.Pillar 1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.Grains是 ...
随机推荐
- 数据库开发基础-SQl Server 视图
1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图 ...
- 如何用css画出三角形
看到有面试题里会有问到如何用css画出三角形 众所周知好多图形都可以拆分成三角形,所以说会了画三角形就可以画出很多有意思的形状 画出三角形的原理是调整border(边框)的四个方向的宽度,线条样式以及 ...
- TreeMap按照value进行排序
TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序).所以,TreeMap只能根据key来排序,是不能根据value来排 ...
- 在代码中使用Autolayout – intrinsicContentSize和Content Hugging Priority
我们继续来看在代码中使用Autolayout的话题.先说intrinsicContentSize,也就是控件的内置大小.比如UILabel,UIButton等控件,他们都有自己的内置大小.控件的内置大 ...
- 【uoj261】 NOIP2016—天天爱跑步
http://uoj.ac/problem/261 (题目链接) 题意 给出一棵树,给出一些起点和终点,没走一条路径耗费时间1,每个节点上有一个权值w,问有多少条路径经过这个节点时所用的时间恰好是w. ...
- 【bzoj1912】 Apio2010—patrol 巡逻
http://www.lydsy.com/JudgeOnline/problem.php?id=1912 (题目链接) 题意 给出一棵树,要求在树上添加K(1 or 2)条边,添加的边必须经过一次,使 ...
- lbs(查看附近的人),看看社交软件如何实现查看附近的人
最近在做一款移动端棋牌游戏,为了进一步提高用户体验.拉近玩家的距离,我们决定在游戏中加入好友功能,而对于体验好友功能的玩家来说,要是玩牌的时候可以看看附近都有谁在玩牌,跟他们交流交流玩牌心得什么的无疑 ...
- AngularJs ngReadonly、ngSelected、ngDisabled
ngReadonly 该指令将input,textarea等文本输入设置为只读. HTML规范不允许浏览器保存类似readonly的布尔值属性.如果我们将一个Angular的插入值表达式转换为这样的属 ...
- django-redis和redis-py
项目之前使用memcache做缓存,现在转到redis,改写几个语句的事情,然后就这种我把django-redis和py-redis搞混了,记录一下. django默认使用memcache做缓存,这里 ...
- HTML5学习总结-08 应用缓存(Application Cache)
一 应用缓存(Application Cache) 1 应用缓存 HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: ...