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是 ...
随机推荐
- git初体验(三)git分支
分支的理念就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了. 你创建了一个 ...
- 系统间通信(10)——RPC的基本概念
1.概述 经过了详细的信息格式.网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热.从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的讲解:RPC.在后续的几篇文章中,我们首先讲解R ...
- 实在没想到系列——HashMap实现底层细节之keySet,values,entrySet的一个底层实现细节
我在看HashMap源码的时候发现了一个没思考过的问题,在这之前可以说是完全没有思考过这个问题,在一开始对这个点有疑问的时候也没有想到居然有这么个语法细节存在,弄得我百思不得其解,直到自己动手做实验改 ...
- Node.js的net模块
net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...
- 初识React
React 是Facebook开源的一个用于构建用户界面的Javascript库,已经 应用于Facebook及旗下Instagram React专注于MVC架构中的V,即视图 React引入了 虚拟 ...
- NSTimer内存泄漏导致控制器不调用dealloc
创建定时器会在一定的间隔后执行某些操作,一般大家会这样创建定时器,这样创建的定时,self对定时器有个引用,定时器对self也有个引用,造成了循环引用,最终造成了内存泄漏,如果定时器在做下载的操作就会 ...
- MongoDB安装与启动
我本人电脑是win8系统64位,下载64位的zip包,下载完成后解压缩到D:\MongoDB目录 创建数据库目录D:\MongoDB\data,接下来打开命令行窗口,切换到D:\MongoDB\bin ...
- HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
自己的当前环境是ubuntu14.04 64位,tomtcat7和tomcat8,eclipse luna,然后跑了一直spring的demo项目爆了上述的错误,由于这个项目用的是spring3.2在 ...
- 【bzoj3991】 寻宝游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3991 (题目链接) 题意 给出一个n个节点的带权树,m次操作每次修改一个关键点,求每次操作后,从其中 ...
- AppVeyor-CI为GitHub项目做自动化集成(dotnet为主)
travis-ci对dotnet的项目做自动化集成不太友好,尤其是使用mono的编译和不能使用MSTest进行自动化测试,所以转到appveyor进行. appveyor的配置非常简单,有两种方式: ...