saltstack(三) grains、pillar的使用
一,grains
grains: 这个跟puppet的facter功能一样。主要负责采集客户端一些基本信息, 这个也完全可以自定义,可以在客户端自定义,然后自动汇报上来;也可以从服务器端定义然后推下去,采集完后,再汇报上来grains信息是静态的;pillar 跟grains 比较的话 他的灵活性强点,怎么定义就这么定义,然后取值就行
grains的用法:
[root@feed200 ~]# salt '*' grains.items ##查询所有的grains信息
test1:
----------
SSDs:
biosreleasedate:
//
biosversion:
A1TSA1A
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
- msr
- pae
- mce
- cx8
- apic
- sep
- mtrr
- pge
- mca
- cmov
- pat
- pse36
- clflush
- dts
- acpi
- mmx
- fxsr
- sse
- sse2
- ss
- ht
- tm
- pbe
- syscall
- nx
- pdpe1gb
- rdtscp
- lm
- constant_tsc
- arch_perfmon
- pebs
- bts
- rep_good
- xtopology
- nonstop_tsc
此处省略N行..................
[root@feed200 ~]# salt '10.13.41.21' grains.get ip_interfaces:eth0 ##查询eth0所用IP地址
10.13.41.21:
- 10.13.41.21
- fe80::72e2:84ff:fe12:7a05
使用grains添加自定义items
第一种方法:
[root@feed200 minion.d]# cat push.conf
grains:
ITEMS:
TEST: yes
OA:
- a
- b
[root@feed200 ~]# salt '10.13.41.21' grains.items
10.13.41.21:
----------
ITEMS: OA:
- a
- b
SSDs:
TEST:
True ##表示成功
第二种方法:
[root@feed200 _grains]# pwd
/srv/salt/_grains
[root@feed200 _grains]# cat nginx.py
def nginx():
nginx={}
nginx['nginx']='1.5.5' ##定义nginx的默认版本
return nginx
8 同步到minion端: salt '*' saltutil.sync_all
9 或者使用salt '*' state.highstate(这个貌似不好使)命令同步,然后刷新各minion端salt '*' sys.reload_modules,通过grains.items看到相关的信息了
-------------------------------------------
Summary
-------------------------------------------
# of minions targeted: 254
# of minions returned: 254
# of minions that did not return: 0
-------------------------------------------
二,pillar
Pillar 是 Salt 非常重要的一个组件,它用于给特定的 minion 定义任何你需要的数据, 这些数据可以被 Salt 的其他组件使用。Salt 在 0.9.8 版本中引入了 Pillar。Pillar 在解析完成 后,是一个嵌套的 dict 结构;最上层的 key 是 minion ID,其 value 是该 minion 所拥有的 Pillar 数据;每一个 value 也都是 key/value。这里可以看出 Pillar 的一个特点,Pillar 数据是与特定 minion 关联的,也就是说每一个minion 都只能看到自己的数据, 所以 Pillar 可以用来传递敏感数据 (在 Salt 的设计中, Pillar 使用独立的加密 session,也是为了保证敏感数据的安全性) 。 Pillar 可以用在哪些地方?
敏感信息:每个minion只能访问master分配给自己的pillar信息,例如ssh-key,加密证书
变量:差异化的信息等,
其他任何数据,可以在target及state中使用
用在 Targetting 中,Pillar 可以用来选择 minion,使用-I 选项,默认情况下,master 配置文件中的所有数据都添加到 Pillar 中,且对所有 minion 可用。如果要禁用这一默认值,可以在 master 配置文件中添加如下数据,重启服务后生效,关于Pillar的配置见 /etc/salt/master
packages.sls
{% if grains['os'] == 'RedHat' %} ##判断系统时候是redhat,是的话Apache名是httpd
apache: httpd
git: git
{% elif grains['os'] == 'Debian' %}
apache: apache2
git: git-core
{% endif %}
top.sls
base:
'*':
- packages
salt '*' saltutil.refresh_pillar ## 定义好pillar后,执行下面命令进行同步
14 salt '*' pillar.data ## 命令查看pillar信息
15 salt '*' pillar.get schedule ## pillar取某个值
saltstack(三) grains、pillar的使用的更多相关文章
- SaltStack 数据系统 Grains Pillar
grains 先来一个很好用的命令 # salt '*' grains.items \\基本上输出了所有你想要的信息 192.168.100.138: ---------- SSDs: biosrel ...
- 2. SaltStack数据系统: Grains、Pillar
1. SaltStack数据系统 Grains (谷物) Pillar (支柱) 2.Grains Grains存放着Salt命令启动时收集的信息,运行时不收集 2.1 信息查询 收集资产 网卡,i ...
- Linux-saltstack-3 saltstack的grains和pillar的基本使用
@ 目录 一.简介 二.grains 1.查看客户端所有的grains项 2.查看grains的所有的项和值 3.查看某个项和值 (1)语法1: (2)语法2: 4.根据grains来匹配目标主机 例 ...
- 死磕salt系列-salt grains pillar 配置
grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...
- Saltstack数据系统Grains和Pillar(三)
Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...
- 【02】Saltstack:Grains and Pillar
写在前面的话 上一节谈及了 Saltstack 的安装和初始化配置,本节将谈谈 Saltstack 中两个重要的东西,Grains 和 Pillar. 数据系统 Grains 入门 Grains 是静 ...
- 3.saltstack的grains和pillar学习笔记
作者:刘耀 QQ:22102107 SaltStack_Grains Grains grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中.其实grains在每次 ...
- SaltStack数据系统-Grains
上一篇:SaltStack配置管理 granis:谷粒 pillar:柱子 grains是salt的一个组件,存放minion启动时候收集的信息(状态信息) 查看 salt '*' grains.it ...
- ansible puppet saltstack三款自动化运维工具的对比
一.基础介绍 ansible基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm puppet基础介绍可参考:http://www.linu ...
随机推荐
- 2-4 原生小程序 - 自带组件及API
获取用户的信息有两种,一种是不需要登录的,我们只需要获取用户的头像,还有微信的名.还有一种是登录的,就是登录后台校验的,就是获取用户的openid. webview,可以内嵌一个网页,类似于原生的开发 ...
- Commons-FileUpload 文件上传(模板)
// 创建FileItem工厂函数 FileItemFactory FIF = new DiskFileItemFactory(); // 获取ServletFileUpload对象,使用工厂实例传入 ...
- 手机访问PC网站自动跳转到手机网站代码
方法一: <script type="text/javascript"> try { var urlhash = window.location.hash; if (! ...
- 清北考前刷题da7下午好
三向城 /* 原图一定是一棵完全二叉树. 根节点是x,左节点是x*2,右节点是x*2+1 转化为二进制往左右走就很明显了. */ #include<iostream> #include&l ...
- event.target 属性返回哪个 DOM 元素触发了事件。
<ul> <li>list <strong>item 1</strong></li> <li><span>list ...
- mongodb海量数据CRUD优化
1. 批量保存优化 避免一条一条查询,采用bulkWrite, 基于ReplaceOneModel,启用upsert: public void batchSave(List<?> spoT ...
- python自动化学习笔记10-数据驱动DDT与yml的应用
在测试工作中,针对某一API接口,或者某一个用户界面的输入框,需要设计大量相关的用例,每一个用例包含实际输入的各种可能的数据.通常的做法是,将测试数据存放到一个数据文件里,然后从数据文件读取,在脚本中 ...
- MongoDB一些常用指令与他的JavaScript的对应表
- 题解报告:hdu 1686 Oulipo(裸KMP)
Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...
- 记录从数据库把数据初始化mongodb缓存的一些坑
在项目启动时,需要做一些项目启动后的预操作,比如初始化数据进缓存等等. 这时就需要写listener,等监听.在项目启动时把数据缓存进mongodb. 但是这会有一个问题.项目一般都是把各种bean交 ...