一,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

 第一种方法:

  在minion端:修改配置文件/etc/salt/minion  中 打开 default_include: minion.d/*.conf 
  在/etc/salt/minion.d/目录中添加需要增加的items,文件类型与配置项*.conf对应
 [root@feed200 minion.d]# cat push.conf
grains:
ITEMS:
TEST: yes
OA:
- a
- b
  之后重启minion服务 /etc/init.d/salt-minion restart,在master端查看是否添加成功
 [root@feed200 ~]# salt '10.13.41.21' grains.items
10.13.41.21:
----------
ITEMS: OA:
- a
- b
SSDs:
TEST:
True          ##表示成功

第二种方法:

  在master端添加,在/srv/salt/ 创建_grains目录,编写grains文件,需要返回一个字典
 [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看到相关的信息了
 在执行salt '*' grains.item os  --summary    ##加上--summary可以显示执行结果
 -------------------------------------------
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

 pillar_roots:
 base:
   – /srv/pillar
     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的使用的更多相关文章

  1. SaltStack 数据系统 Grains Pillar

    grains 先来一个很好用的命令 # salt '*' grains.items \\基本上输出了所有你想要的信息 192.168.100.138: ---------- SSDs: biosrel ...

  2. 2. SaltStack数据系统: Grains、Pillar

    1. SaltStack数据系统 Grains (谷物) Pillar (支柱) 2.Grains Grains存放着Salt命令启动时收集的信息,运行时不收集 2.1  信息查询 收集资产 网卡,i ...

  3. Linux-saltstack-3 saltstack的grains和pillar的基本使用

    @ 目录 一.简介 二.grains 1.查看客户端所有的grains项 2.查看grains的所有的项和值 3.查看某个项和值 (1)语法1: (2)语法2: 4.根据grains来匹配目标主机 例 ...

  4. 死磕salt系列-salt grains pillar 配置

    grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...

  5. Saltstack数据系统Grains和Pillar(三)

    Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...

  6. 【02】Saltstack:Grains and Pillar

    写在前面的话 上一节谈及了 Saltstack 的安装和初始化配置,本节将谈谈 Saltstack 中两个重要的东西,Grains 和 Pillar. 数据系统 Grains 入门 Grains 是静 ...

  7. 3.saltstack的grains和pillar学习笔记

    作者:刘耀 QQ:22102107 SaltStack_Grains Grains grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中.其实grains在每次 ...

  8. SaltStack数据系统-Grains

    上一篇:SaltStack配置管理 granis:谷粒 pillar:柱子 grains是salt的一个组件,存放minion启动时候收集的信息(状态信息) 查看 salt '*' grains.it ...

  9. ansible puppet saltstack三款自动化运维工具的对比

    一.基础介绍 ansible基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm puppet基础介绍可参考:http://www.linu ...

随机推荐

  1. 2-4 原生小程序 - 自带组件及API

    获取用户的信息有两种,一种是不需要登录的,我们只需要获取用户的头像,还有微信的名.还有一种是登录的,就是登录后台校验的,就是获取用户的openid. webview,可以内嵌一个网页,类似于原生的开发 ...

  2. Commons-FileUpload 文件上传(模板)

    // 创建FileItem工厂函数 FileItemFactory FIF = new DiskFileItemFactory(); // 获取ServletFileUpload对象,使用工厂实例传入 ...

  3. 手机访问PC网站自动跳转到手机网站代码

    方法一: <script type="text/javascript"> try { var urlhash = window.location.hash; if (! ...

  4. 清北考前刷题da7下午好

    三向城 /* 原图一定是一棵完全二叉树. 根节点是x,左节点是x*2,右节点是x*2+1 转化为二进制往左右走就很明显了. */ #include<iostream> #include&l ...

  5. event.target 属性返回哪个 DOM 元素触发了事件。

    <ul> <li>list <strong>item 1</strong></li> <li><span>list ...

  6. mongodb海量数据CRUD优化

    1. 批量保存优化 避免一条一条查询,采用bulkWrite, 基于ReplaceOneModel,启用upsert: public void batchSave(List<?> spoT ...

  7. python自动化学习笔记10-数据驱动DDT与yml的应用

    在测试工作中,针对某一API接口,或者某一个用户界面的输入框,需要设计大量相关的用例,每一个用例包含实际输入的各种可能的数据.通常的做法是,将测试数据存放到一个数据文件里,然后从数据文件读取,在脚本中 ...

  8. MongoDB一些常用指令与他的JavaScript的对应表

  9. 题解报告:hdu 1686 Oulipo(裸KMP)

    Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...

  10. 记录从数据库把数据初始化mongodb缓存的一些坑

    在项目启动时,需要做一些项目启动后的预操作,比如初始化数据进缓存等等. 这时就需要写listener,等监听.在项目启动时把数据缓存进mongodb. 但是这会有一个问题.项目一般都是把各种bean交 ...