实现不同机器的差异化配置
把apache监听的端口统一改为8080
把配置文件files/httpd.conf 文件做成模版
修改lamp.sls改模版变量赋值
执行看结果:
ok come on.
写多个变量列表
写2个吧
老套路 修改模版
定义HOST和PORT
但问题来了 HOST的指定? 因为每个机器的ip不一样 好, 姑且暂时先不用理这个问题
修改lamp.sls 给模版变量赋值
接下去测一下
comeon 配置文件真的变了
...
...
给模块赋值,那么 这个值可以用三个组件来获取
grains pillar 直接执行 以下一一介绍
二话不说,开干.
命令行获取对端地址
改sls
测试结果 apache的配置被改了.
这种还有一种蛋疼的写法
即不在sls里配置 值 直接在模版里配置
转而在模版里配置下
这种方式不太好管理, 如果我看sls里可以一目了然的看到我用了哪些 变量. 而这个方式 确实蛋疼了.
第二种方式:通过执行命令获取
模板里加上值
修改sls
通过执行命令获取值
剩下最后一种方式了.通过pillar
我们的目标是不老修改sls, . 在别的机器上用,我们不用老改那个sls了.
这些变量写成配置文件的形式??
pillar可以给每个minion指定不同的值
模版的变量值可以通过pillar值
首先使用pillar要注意:
接下去将三个值都该为pillar模式
修改master配置 创建pillar环境 存放pillar的sls
创建apache.sls
创建top.sls ->记住 top.sls永远只有1个 永远存放在base环境下
几经周折 弄出了这个目录结构
期间报错了
我看下了日志
是我的pillar apache.sls里的键写错了
pillar的top.sls给某个主机指定某个值.然后用salt '*' state.highstate去执行
注意:
如果 pillar里没指定的主机,则执行时候会报错误,大概意思说是没template没有值给提供.
还有要注意环境哦.
top.sls的位置,及其它环境位置.