pillar动态取值
1、修改/etc/salt/master
pillar_roots:
base:
- /srv/pillar
重启服务
2、自定义变量
mkdir /srv/pillar
/srv/pillar/
mkdir web
cd web/
[root@server1 pillar]# cat web/vars.sls
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
{% endif %}
3、编辑主入口文件:
[root@server1 pillar]# cat top.sls
base:
'*':
- web.vars
4、修改完成后刷新pillar
salt '*' saltutil.refresh_pillar
salt '*' pillar.items 查看值
使用模板引用变量配置httpd
- 在文件中直接定义变量
1、在install.sls文件中定义变量,在httpd配置文件中引用
install-apache:
pkg.installed:
- pkgs:
- httpd
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- template: jinja
- context:
port: 80
host: 172.25.14.2
service.running:
- name: httpd
- watch:
- file: install-apache
2、修改http配置文件模板,引用变量。
推送配置:
salt server2 state.sls apache.install
此时minion端配置文件则为ip:port
- 使用pillar调用变量
install-apache:
pkg.installed:
- pkgs:
- httpd
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- template: jinja
- port: 80
- host: {{ pillar[ 'ip'] }}
service.running:
- name: httpd
- watch:
- file: install-apache
vim /src/pillar/web/vars.sls
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
ip: 172.25.14.2
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
{% endif %}
~
~
[root@server1 srv]# cat pillar/top.sls
base:
'*':
- web.vars
- 也可以使用grains引用变量
http配置文件引用变量:
推送apache
查看远程主机http配置文件中监听地址,调用变量成功。
- 自定义导入
vim apache/libs.yml
在httpd配置文件中第一行导入
推送完成后http监听端口改变为8080,而且第一行显示空行
我们在install.yml文件中开始也定义了变量端口为80,但是这里显示为8080,导入自定义的变量模块后,会覆盖定义变量时候的值。
- 如果需要修改变量值,引入自定义变量,可以直接在yml文件第一行设置即可
nginx版本已经修改为变量的值,以后如果需要修改版本,直接修改变量值即可,全局替换,无需一个一个替换。