salt之pillar组件
pillar也是salt最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板、state、API等。在pillar中定义的数据与不同业务特征的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户id、组id、读写权限、程序包等信息,定义的规范是采用Python字典形式,即键/值,最上层的键一般为主机的id或组名称。
pillar的定义:
1、主配置文件定义
salt默认将主控端配置文件中的所有数据都定义到pillar中,而且对所有被控主机开放,可通过修改/etc/salt/master配置中的pillar_opts: True或False来定义是否开户或禁用这项功能,修改后执行salt '*' pillar.data来观察效果。
2、SLS文件定义
pillar支持在slsy文件中定义数据,格式须符合YAML规范,与salt和state组件十分相似,两者文件的配置格式、入口文件top.sls都是一致的。
(1)定义pillar的主目录
修改主配置文件/etc/salt/master的pillar_roots参数,定义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
maxmem: 6G
(3)校验pillar
通过 salt 'myhost' pillar.data appname flow 命令可以看到多出了上面定义的 data.sls数据项。如果结果不符合预期,可以尝试刷新被控机pillar数据,
运行 salt 'myhost' saltutil.refresh_pillar 即可刷新
3、pillar的使用
完成pillar配置后,接下来我们可以在state、模板文件中引用,模板格式为 "{{ pillar变量 }}" ,例如:
{{ pillar['appname'] }} (一级字典)
{{ pillar['flow']['maxconn'] }} (二级字典) 或 {{ salt['pillar.get']('flow: maxconn'),{} }}
Python API格式如下:
pillar['flow']['maxconn']
pillar.get('flow:appname',{})
结合grains处理数据的差异性----示例:
3.1 创建pillar目录和top.sls文件
|
1
2
3
4
5
|
# mkdir /srv/pillar # vi /srv/pillar/top.sls base: '*': - ip |
3.2 先通过pillar获取minion主机IP
|
1
2
|
# vi /srv/pillar/ip.sls ip: {{ grains['ipv4'][1] }} |
#写完后,执行sls命令,可以看到已经获取到IP
|
1
2
3
4
5
6
7
8
9
|
# salt '*' pillar.item ip host2: ---------- ip: 192.168.18.213 host1: ---------- ip: 192.168.18.212 |
既然grains与pillar类似,就说下区别:
1.grains是minion每次加载时获取本地系统信息数据,是静态的,固定的,而pillar是动态加载数据,随时变化的,比grains更灵活。
2.grains数据存储在minion本地,pillar存储在master
jinja2官网语法介绍: http://jinja.pocoo.org/docs/dev/templates/
salt之pillar组件的更多相关文章
- Saltstack pillar组件
pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与 ...
- Saltstack系列5:Saltstack之pillar组件
pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等. 在pillar中定义的数据与 ...
- Saltstack管理对象属性之grains和pillar组件
Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...
- 利用salt stack pillar安装多组keepalived
利用salt stack pillar安装多组keepalived 环境描述 在生产环境中,需要搭建三套keepalived环境,3个master和3个backup,要安装的软件和配置文件,虽然不是很 ...
- salt之grains组件
grains是saltstack最重要的组件之一,作用是收集被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可 ...
- 死磕salt系列-salt grains pillar 配置
grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...
- 如何使用Salt Pillar
作者言 Salt的网站上有两篇关于Pillar的文档(一,二),其中一篇内容很少,我觉得写成一篇文章更合适.本文的逻辑结构没有参照官方文档,而是根据我自己对Pillar的理解组织内容,希望能够把这个概 ...
- [salt] jinja模板中变量使用pillar的几种方法
先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件 ...
- saltstack pillar
piller组件定义与客户端相关的任何数据(定义在master端),定义好的数据可以被其他组件调用(如state,api) 说通俗了,一句话,就是ansible vars里定义的变量,可以在整个pla ...
随机推荐
- MySQL中character set与collation的理解(转)
character set和collation的是什么? character set即字符集 我们常看到的UTF-8.GB2312.GB18030都是相互独立的character set.即对Unic ...
- LOJ 164 【清华集训2015】V——线段树维护历史最值
题目:http://uoj.ac/problem/164 把操作改成形如 ( a,b ) 表示加上 a 之后对 b 取 max 的意思. 每个点维护当前的 a , b ,还有历史最大的 a , b 即 ...
- 大数据hadoop与spark的区别
学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下.在研究.学习hadoop的朋友可以去找一下看看 ...
- 【python】实例-用户登录系统
有N,E,Q三个选择,若选择Q或者中断,则系统退出.若其他选项,则持续让用户选择. #!/usr/bin/env python db = {} def newuser(): prompt = 'log ...
- 启动ECLIPSE时,提示failed to create the java virtual machine
修改eclipse.ini中的-XX:MaxPermSize=256M 这一项的原始值是512M.
- typedef与前向声明
a.h: typedef struct my_struct { }my_struct_typedef; b.h: struct my_struct; typedef my_struct my_stru ...
- bzoj3143 游走
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- python学习笔记--pycurl模块安装遇到的问题。
1.用easy_install安装的时候 [root@idayuan ~]# easy_install pycurl Searching for pycurl Best match: pycurl A ...
- python selenium-6 HTML测试报告
1.生成HTML测试报告 import unittest,sys from selenium import webdriver from time import sleep class TestBai ...
- 配置Samba(CIFS)
试验环境:一台CentOS 7.0的虚拟机,一台Windows 的普通台式机. 注意:网络一定能够ping通 关闭SeLinux # setenforce 0 # getenforce 关闭防火墙 # ...