老腰 發表於 2023-9-18 00:00:00

saltstack grains和pillar介绍

<p>昨天讲解了一下saltstack的一些基本应用(安装 部署 简单的应用 跟简单的资源管理) saltstack这东西 很强大 东西也很多今天我就简单讲解下</p>
<p>grains和pillar 这个单词这么读 我也不太清楚 这里简单介绍下吧</p>
<p>grains 这个跟puppet的facter一样 负责采集客户端一些基本信息(查看这些信息 上一篇文章已经介绍了) 这个也完全可以自定义(灵活性牛掰)</p>
<p>可以在客户端自定义 然后自动汇报上来 也可以从服务器端定义然后推下去 采集完后 再汇报上来</p>
<p>pillar 这个东西 我真没看懂是啥 如果跟grains 比较的话 他的灵活性强点 想这么定义就这么定义 然后取值就行</p>
<p>下面先开始讲解 grains 这个吧</p>
<p>salt ‘CMN-NJ-H-3g2′ grains.items 这个默认会打印 一个对象的所有grain值 (grains.ls显示所有项目)</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/43039718a014f883b470120eb66a5361.jpg" width="651" height="378"></p>
<p>这些值是客户端自动汇报上来的 软件安装后默认会有很多</p>
<p>源码地址是 https://github.com/saltstack/salt/blob/develop/salt/grains/core.py 懂python的可以看看</p>
<p>可能有些人想自定义grains 就是想客户端汇报你想要的数据到服务器 这个可以通过2个方法实现 第一个是在服务器端 往客户端推(可以过滤指定客户端) 第二个就是直接在客户端配置文件里面编辑</p>
<p>我这里因为客户端就一台 我就直接到客户端去编辑文件了</p>
<p>因为我怕改错主配置文件 所以我采用包含其他配置文件来改的</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/1740c3a1c75d02d114b73d872391b826.jpg" width="409" height="138"></p>
<p>客户端主配置文件默认支持包含 我就到/etc/salt/minion.d/下新建一个.conf 结尾的文件</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/3d069cd24a208454a443d2ff0a5f408d.jpg" width="610" height="333"></p>
<p>这个文件的意思很简单 都是 KEY: VALUE 这样的格式 #看图的解释就知道了</p>
<p>好改完了 重启了 客户端服务器 然后我们去服务器端查看下 看汇报上来没</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/6e7ec558e5f88648983c4572f6689028.jpg" width="628" height="200"></p>
<p> </p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/6496098c1927c9bd9f27eda8b373b8d4.jpg" width="558" height="150"></p>
<p>OK 没问题都汇报上来了 ##其他可以用这个做数据收集系统 客户端搞个脚本去定期改某个文件 服务器就能收集信息了</p>
<p>好 grains 这块就先讲到这里 这里先不讲这么调用这些采集上来的数据 等讲完pillar 之后 然后统一讲下 在sls模板或者jinja模板中调用这些值</p>
<p>开始讲pillar 吧 pillar 是我在服务器上定义的 默认安装没有这个文件夹 自己新建一个就行</p>
<p>mkdir /srv/pillar/ &amp;&amp; touch /srv/pillar/top.sls</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/b321a830ee889f5a07805f9282090514.jpg" width="533" height="124"></p>
<p>然后看下sc.sls 文件吧</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/4e51832b856af9e60c07827a9c304258.jpg" width="756" height="184"></p>
<p>OK 配置完后 我们查看下吧 有没有生效</p>
<p>在服务器端运行 salt ‘CMN-NJ-H-3g2′ pillar.data</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/4925950581bf3593a2b0eed1c00b6374.jpg" width="720" height="243"></p>
<p>还有一个在最下面 擦</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/6dd48109d44f15c5d789c8c1d12d69c1.jpg" width="230" height="62"></p>
<p>OK 数据生效了 现在grains和pillar 的自定义 都讲完了 数据也出来了 下面我们就看看怎么用这些数据吧</p>
<p>关于grains 的使用 官网一般用到sls模板里面 其实 jinja模板也可以直接用 下面我搞个jinja文件例子吧</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/6837a9b9ea17592bedbdbb93c55095e2.jpg" width="566" height="292"></p>
<p>再看看squid.conf.jinja模板文件吧</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/1cdb0812afdb064f91c744d9ad6fd85e.jpg" width="593" height="186"></p>
<p>这个是关键 大家一定得记住调用语法</p>
<p>好 下面我们来推下 看看客户端的效果吧</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/2cd3d65584123287110fe7ea429e08a7.jpg" width="752" height="201"></p>
<p>OK 框住的都是动态生成的值 你懂的</p>
<p>关于grains和pillar的调用 官网有很多文档 建议没事的去看看把 jinja模板还支持 简单的判断 我贴下官网的例子吧</p>
<p>{% if grains['os'] == 'Ubuntu' %}<br>
host: {{ grains['host'] }}<br>
{% elif grains['os'] == 'CentOS' %}<br>
host: {{ grains['fqdn'] }}<br>
{% endif %}</p>
<p>通过简单的判断 来产生相应的值 OK 先写这么多 下次继续补上吧</p>
<p> </p>
<p>转自:http://www.shencan.net/index.php/2013/05/24/saltstack-%E4%BA%8C-grains%E5%92%8Cpillar/</p>
頁: [1]
查看完整版本: saltstack grains和pillar介绍