最新消息:

saltstack pillar与grains实战

grains admin 3206浏览 0评论

前面已经讲了5章关于saltstack 的一些基本应用与基本功能(基本而已 还有很多东西我也没弄) 但是目前就这些基本的功能就能满足我们线上的业务了 下面我整理了下关于我们全网统一squid配置文件的一个案例 我顺便记录下 以便下次接着扩展

先说下原始需求

1.我们全网的squid配置文件 配置比较乱 有视频 下载 web 3种业务的配置

2.我们全网的设备 磁盘大小 磁盘块数 也不同

3.我们某些节点还有特殊配置

目前就是针对这3个需求 统一一个squid主配置文件的模板 (jinja模板)

先讲下我的思路 (我的思路可能不是最好的 但是我能保证我的配置是能用的)

1.先收集全网所以squid 配置文件 对比 分析 挑选出 其中的共同之处 (squid 性能配置一般是一样的) 然后定义存储到pillar里面

2.然后对比 那些有区别的地方 (统计一下 有多少种配置) 然后 讲每种配置 都存储到pillar 里面

3.然后编写grains 去 采集设备自身的信息 (磁盘数 服务业务等等) 然后根据自身的grains 信息 自动调用上面定义的pillar 生成文件

OK 思路就是这样 不知道 你们看懂没 总结一句话吧 1. 把不变的东西 存到pillar 里面 2. 不确定的东西 用grains 去采集 3.根据采集的值 调用不同的pillar

现在我开始讲案例吧

先说下我们全网的squid配置文件的不同之处

1. 视频 下载 web 的核心配置不一样 (我们是通过api去确定这台设备改服务什么)这个是主导方向

2.有12*1T 12*2T 的设备 ( 直接定义2种pillar )

3.还有某些自定义的配置 (预留一个自定义的pillar)

下面贴下我编写的grains python脚本吧(自定义这个一起讲过 看前面的文章去)

cat _grains/fc8.py

YWRtaW4_916562

脚本的意思 这里不用多讲了吧 还是那句话 python 牛掰了 想怎么弄 就怎么弄 按照官方源码的格式弄就行

这里说下这个脚本的用途吧 去采集3个值

1. 磁盘的块数

2.每块盘的大小

3.这台设备的应用(公司api已经有绑定)

同步下 这里不说了 saltutil.sync_grains 你懂的 验证这个也不多说了

自定义grains 就弄完了 因为我python 还没入门 说实话 刚才的脚本 我也是凑出来的 实在搞不定的就是直接用python 调用shell

然后去编写pillar值吧 这个是静态的 很简单 (例子 我前面的博客也有介绍)

我直接上配置吧

我的pillar结构就是这样的 下面我会每个挑个例子说下

YWRtaW4_934144

cache.sls 这个里面定义 squid 的cache_dir配置 (跟盘大小 跟盘数量有关 你懂的)

sc.sls 这个里面定义所以squid配置文件里面共同的配置 你懂的

core.sls 这个里面定义 核心配置(跟 服务业务有关 视频 下载 web)

optimize.sls 这个是一些调优配置 (服务业务有关 视频 下载 web)

diy.sls 这个你懂的 留个一些 特殊配置用的

ok 下面 开始讲 没个sls的 定义吧 (前面也讲过 我这里指截图一部分 )

cache.sls 的部分配置

截图为 web 业务的2种配置 下载跟视频的 也一样 挨着定义就行 这里不截图

YWRtaW4_961263

YWRtaW4_969715

看看优化配置吧 (也是根据 web 视频 下载 3大业务来分的) 下面的截图是web的

YWRtaW4_979128

其他的 也都差不多 记住我的方向是 根据业务来分的 就行 其他的配置 格式 也都一样 只是 东西不同(squid配置文件的一些东西)

OK pillar 也差不多讲完了 现在去弄弄 jinjia模板吧

我直接贴我的目标吧

YWRtaW4_998803

这个就不讲了

核心在下面

YWRtaW4_009394

判断很简单 你懂的 记住调用pillar值格式就行 我介绍一个吧

{{ pillar[‘CPISWEB’][’12_1T’] }} 就这个吧

学过python的 这个应该能看懂吧 CPISWEB 是cache.sls 里面定义的一个 针对web的 12_1T 是web的cache_dir配置 简单吧

OK 先写到这里 抽烟去了。。。。。。。

 

转载请注明:爱开源 » saltstack pillar与grains实战

您必须 登录 才能发表评论!