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取某个值
最新文章
- C#排序算法小结
- 微软CMS项目 Orchard 所用到的开源项目
- python中协程
- thinkphp3.2.3分页
- 深入理解PHP内核(八)变量及数据类型-预定义变量
- eclipse设置及快捷键
- 正则表达式基础---转自 Python正则表达式指南 前边
- thinkphp下载远程图片到本地
- MVP 个人理解2
- WinCE6.0多国语言软键盘
- sudo详解
- DOM节点操作
- JDicom使用指南
- 对Android中dp单位的理解
- linux磁盘管理、新增磁盘、分区、挂载
- .net通用权限框架B/S(一)
- return和break的区别
- HDU 4569Special equations2012长沙邀请赛E题(数学知识)
- jBPM学习之部署流程定义
- 跟着大佬重新入门DP
热门文章
- JAVA线程同步 (二)notify()与notifyAll()-***
- 2-3 Vue实例中的数据,事件和方法
- Linux进入单用户模式的两种方法
- git stash 切换分支以后 恢复
- ACM_Appleman and Card Game(简单贪心)
- python调用chrome ie等浏览器
- 2016天池-O2O优惠券使用预测竞赛总结
- 基于Web的Kafka管理器工具之Kafka-manager启动时出现Exception in thread ";main"; java.lang.UnsupportedClassVersionError错误解决办法(图文详解)
- SVN服务器搭建 内网可用外网不可用的问题
- C#随机取部分数据