让子弹非一会儿 發表於 2023-9-17 00:00:00

saltstack pillar与grains实战

<p>前面已经讲了5章关于saltstack 的一些基本应用与基本功能(基本而已 还有很多东西我也没弄) 但是目前就这些基本的功能就能满足我们线上的业务了 下面我整理了下关于我们全网统一squid配置文件的一个案例 我顺便记录下 以便下次接着扩展</p>
<p>先说下原始需求</p>
<p>1.我们全网的squid配置文件 配置比较乱 有视频 下载 web 3种业务的配置</p>
<p>2.我们全网的设备 磁盘大小 磁盘块数 也不同</p>
<p>3.我们某些节点还有特殊配置</p>
<p>目前就是针对这3个需求 统一一个squid主配置文件的模板 (jinja模板)</p>
<p>先讲下我的思路 (我的思路可能不是最好的 但是我能保证我的配置是能用的)</p>
<p>1.先收集全网所以squid 配置文件 对比 分析 挑选出 其中的共同之处 (squid 性能配置一般是一样的) 然后定义存储到pillar里面</p>
<p>2.然后对比 那些有区别的地方 (统计一下 有多少种配置) 然后 讲每种配置 都存储到pillar 里面</p>
<p>3.然后编写grains 去 采集设备自身的信息 (磁盘数 服务业务等等) 然后根据自身的grains 信息 自动调用上面定义的pillar 生成文件</p>
<p>OK 思路就是这样 不知道 你们看懂没 总结一句话吧 1. 把不变的东西 存到pillar 里面 2. 不确定的东西 用grains 去采集 3.根据采集的值 调用不同的pillar</p>
<p>现在我开始讲案例吧</p>
<p>先说下我们全网的squid配置文件的不同之处</p>
<p>1. 视频 下载 web 的核心配置不一样 (我们是通过api去确定这台设备改服务什么)这个是主导方向</p>
<p>2.有12*1T 12*2T 的设备 ( 直接定义2种pillar )</p>
<p>3.还有某些自定义的配置 (预留一个自定义的pillar)</p>
<p>下面贴下我编写的grains python脚本吧(自定义这个一起讲过 看前面的文章去)</p>
<p>cat _grains/fc8.py</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/c53eb2c0b0db8d46b1df45399bf48106.jpg" width="1024" height="461"></p>
<p>脚本的意思 这里不用多讲了吧 还是那句话 python 牛掰了 想怎么弄 就怎么弄 按照官方源码的格式弄就行</p>
<p>这里说下这个脚本的用途吧 去采集3个值</p>
<p>1. 磁盘的块数</p>
<p>2.每块盘的大小</p>
<p>3.这台设备的应用(公司api已经有绑定)</p>
<p>同步下 这里不说了 saltutil.sync_grains 你懂的 验证这个也不多说了</p>
<p>自定义grains 就弄完了 因为我python 还没入门 说实话 刚才的脚本 我也是凑出来的 实在搞不定的就是直接用python 调用shell</p>
<p>然后去编写pillar值吧 这个是静态的 很简单 (例子 我前面的博客也有介绍)</p>
<p>我直接上配置吧</p>
<p>我的pillar结构就是这样的 下面我会每个挑个例子说下</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/a45c6b109215358ca243359523cc7bc7.jpg" width="811" height="299"></p>
<p>cache.sls 这个里面定义 squid 的cache_dir配置 (跟盘大小 跟盘数量有关 你懂的)</p>
<p>sc.sls 这个里面定义所以squid配置文件里面共同的配置 你懂的</p>
<p>core.sls 这个里面定义 核心配置(跟 服务业务有关 视频 下载 web)</p>
<p>optimize.sls 这个是一些调优配置 (服务业务有关 视频 下载 web)</p>
<p>diy.sls 这个你懂的 留个一些 特殊配置用的</p>
<p>ok 下面 开始讲 没个sls的 定义吧 (前面也讲过 我这里指截图一部分 )</p>
<p>cache.sls 的部分配置</p>
<p>截图为 web 业务的2种配置 下载跟视频的 也一样 挨着定义就行 这里不截图</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/b40f443ef77740a8a1e19e550b925b48.jpg" width="794" height="126"></p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/1233739c8c59c1ded5d3ee27c69c6fc6.jpg" width="836" height="138"></p>
<p>看看优化配置吧 (也是根据 web 视频 下载 3大业务来分的) 下面的截图是web的</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/fa1e4b05f1c0f3e3ebd984538be0bc7f.jpg" width="775" height="248"></p>
<p>其他的 也都差不多 记住我的方向是 根据业务来分的 就行 其他的配置 格式 也都一样 只是 东西不同(squid配置文件的一些东西)</p>
<p>OK pillar 也差不多讲完了 现在去弄弄 jinjia模板吧</p>
<p>我直接贴我的目标吧</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/6bc8e50a8597a7d855bbdf89352612ff.jpg" width="420" height="165"></p>
<p>这个就不讲了</p>
<p>核心在下面</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230519/35223bd5ac11044e314b1f7754207e67.jpg" width="959" height="566"></p>
<p>判断很简单 你懂的 记住调用pillar值格式就行 我介绍一个吧</p>
<p>{{ pillar['CPISWEB']['12_1T'] }} 就这个吧</p>
<p>学过python的 这个应该能看懂吧 CPISWEB 是cache.sls 里面定义的一个 针对web的 12_1T 是web的cache_dir配置 简单吧</p>
<p>OK 先写到这里 抽烟去了。。。。。。。</p>
<p> </p>
<p>转自:http://www.shencan.net/index.php/2013/07/10/saltstack%E5%85%AD-pillar-grains-%E5%AE%9E%E9%99%85%E6%BC%94%E7%BB%83/</p>
頁: [1]
查看完整版本: saltstack pillar与grains实战