|
配置管理小试
这里有三个环境,base环境,测试环境,生产环境
注意:
1、base环境一定要有
2、top.sls(topfile)是入口文件,必须放在base环境下
# vim /etc/slat/master
...
file_roots:
base:
- /srv/salt/base
test:
- /srv/salt/test
prod:
- /srv/salt/prod
...
# systemctl restart salt-master
创建对应的环境目录
# mkdir /srv/salt/{base,test,prod}
基础环境(base)存放的都是全部机器要执行的状态
我们来配置个文件管理,给所有的minion替换dns文件:/etc/resolv.conf
//首先在base环境创建个目录file,然后新建一个resolv.conf
# mkdir /srv/salt/base/file
[iyunv@c1 ~]# cat /srv/salt/base/file/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
//创建dns状态
[iyunv@c1 ~]# cat /srv/salt/base/dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://file/resolv.conf #salt://这个路径相对于base目录下
- user: root
- group: root
- mode: 644
//现在可以来直接执行这个dns状态,执行完成后,所有minion的/etc/resolv.conf已经完成了替换
# salt '*' state.sls dns
//还可以用高级状态来执行,就是topfile
[iyunv@c1 ~]# cat /srv/salt/base/top.sls
base:
'*':
- dns
# salt '*' state.highstate
yml
规则一:缩进
YAML使用一个固定的缩进风格表示数据层结构关系
salt需要每个缩进级别由两个空格组成
不要使用tab键
规则二:冒号
my_key: my_value
first_level_dict_key:
second_level_dict_key: value_in_second_level_dict
规则三:短横线
想要表示列表项,使用一个短横杠加一个空格。
多个项使用同样的缩进级别作为同一列表的一部分
my_dictionary:
- list_value_one
- list_value_two
- list_value_three
jinja模板
这里继续使用上面替换/etc/resolv的例子。定义模板使用变量
//修改dns.sls
[iyunv@c1 ~]# cat /srv/salt/base/dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://file/resolv.conf
- user: root
- group: root
- mode: 644
- template: jinja <-----------表示使用jinja
- defaults: <-------------下面是定义的变量,模板里面可以引用
DNS_SERVER: 114.114.114.114
//模板文件
[iyunv@c1 ~]# cat /srv/salt/base/file/resolv.conf
# Generated by NetworkManager
nameserver {{ DNS_SERVER }} <-------引用定义的变量
//topfile文件
[iyunv@c1 ~]# cat /srv/salt/base/top.sls
base:
'*':
- dns
//执行状态
# salt '*' state.highstate
这里只是简单的了解下jinja模板的作用,里面还可以使用grains,比如{{ grains['fqdn_ip4'] }},还在支持if判断等,后面项目在实践中学习 |
|
|