saltstack grains和pillar介绍

昨天讲解了一下saltstack的一些基本应用(安装 部署 简单的应用 跟简单的资源管理) saltstack这东西 很强大 东西也很多今天我就简单讲解下

grains和pillar 这个单词这么读 我也不太清楚 这里简单介绍下吧

grains 这个跟puppet的facter一样 负责采集客户端一些基本信息(查看这些信息 上一篇文章已经介绍了) 这个也完全可以自定义(灵活性牛掰)

可以在客户端自定义 然后自动汇报上来 也可以从服务器端定义然后推下去 采集完后 再汇报上来

pillar 这个东西 我真没看懂是啥 如果跟grains 比较的话 他的灵活性强点 想这么定义就这么定义 然后取值就行

下面先开始讲解 grains 这个吧

salt ‘CMN-NJ-H-3g2′ grains.items 这个默认会打印 一个对象的所有grain值 (grains.ls显示所有项目)

grains

这些值是客户端自动汇报上来的 软件安装后默认会有很多

源码地址是 https://github.com/saltstack/salt/blob/develop/salt/grains/core.py 懂python的可以看看

可能有些人想自定义grains 就是想客户端汇报你想要的数据到服务器 这个可以通过2个方法实现 第一个是在服务器端 往客户端推(可以过滤指定客户端) 第二个就是直接在客户端配置文件里面编辑

我这里因为客户端就一台 我就直接到客户端去编辑文件了

因为我怕改错主配置文件 所以我采用包含其他配置文件来改的

grains

客户端主配置文件默认支持包含 我就到/etc/salt/minion.d/下新建一个.conf 结尾的文件

grains

这个文件的意思很简单 都是 KEY: VALUE 这样的格式 #看图的解释就知道了

好改完了 重启了 客户端服务器 然后我们去服务器端查看下 看汇报上来没

grains

 

grains

OK 没问题都汇报上来了 ##其他可以用这个做数据收集系统 客户端搞个脚本去定期改某个文件 服务器就能收集信息了

好 grains 这块就先讲到这里 这里先不讲这么调用这些采集上来的数据 等讲完pillar 之后 然后统一讲下 在sls模板或者jinja模板中调用这些值

开始讲pillar 吧 pillar 是我在服务器上定义的 默认安装没有这个文件夹 自己新建一个就行

mkdir /srv/pillar/ && touch /srv/pillar/top.sls

grains

然后看下sc.sls 文件吧

grains

OK 配置完后 我们查看下吧 有没有生效

在服务器端运行 salt ‘CMN-NJ-H-3g2′ pillar.data

grains

还有一个在最下面 擦

grains

OK 数据生效了 现在grains和pillar 的自定义 都讲完了 数据也出来了 下面我们就看看怎么用这些数据吧

关于grains 的使用 官网一般用到sls模板里面 其实 jinja模板也可以直接用 下面我搞个jinja文件例子吧

grains

再看看squid.conf.jinja模板文件吧

grains

这个是关键 大家一定得记住调用语法

好 下面我们来推下 看看客户端的效果吧

grains

OK 框住的都是动态生成的值 你懂的

关于grains和pillar的调用 官网有很多文档 建议没事的去看看把 jinja模板还支持 简单的判断 我贴下官网的例子吧

{% if grains['os'] == 'Ubuntu' %}
host: {{ grains['host'] }}
{% elif grains['os'] == 'CentOS' %}
host: {{ grains['fqdn'] }}
{% endif %}

通过简单的判断 来产生相应的值 OK 先写这么多 下次继续补上吧

 

转自:http://www.shencan.net/index.php/2013/05/24/saltstack-%E4%BA%8C-grains%E5%92%8Cpillar/

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

  1. fmnisme 1

    个人感觉,grains是用来存放环境信息的。
    pillar可以在服务器端统一配置,用top.sls来匹配不同的minon,可以实现存放敏感数据,例如给每台服务器配置独立的用户密码等。