https://docs.saltstack.com/en/latest/topics/pillar/index.html
修改/etc/salt/master配置中的pillar_opts:Ture或False来定义是否开启或禁用这项功能
目录 /srv/pillar
vim /srv/pillar/top.sls
base:
'*':
- vimrc
- data
- pkg
vim /srv/pillar/data.sls
bind:
port: 53
listen-on: any
vim /srv/pillar/vimrc.sls
{% if grains['id'].endswith('server') %} id标识以server结尾的 类似的startswith
vimrc: salt://edit/vimrc1
{% else %}
vimrc: salt://edit/vimrc2
{% endif %}
vim /srv/pillar/pkg.sls
{% if grains['os'] == 'RedHat' %} 根据不同的操作系统,定义不同的包名
apache: httpd
git: git
{% elif grains['os'] == 'Debian' %}
apache: apache2
git: git-core
{% endif %}
刷新生效 salt '*' saltutil.refresh_pillar
查看 salt \* pillar.items
使用pillar
可以在state、模板文件中引用,模板格式为“{{pillar变量}}”,例如:
{{ pillar['appname'] }}(一级字典)
{{ pillar['flow']['maxconn'] }}(二级字典)或 {{ salt['pillar.get']('flow: 'maxconn', {}) }}
Python API格式如下:pillar['flow']['maxconn']
pillar.get(' flow:appname', {})
1、在state的sls文件
vim /srv/salt/down_vimrc.sls
/root/.vimrc:
file.managed:
- source: {{ pillar['vimrc'] }} 调用之前定义的pillar
或者- source: {{ salt['pillar.get']('vimrc','salt://edit/vimrc2') }}
pillar的key,默认值
salt \* state.show_sls down_vimrc 查看详细的变量
2、salt -I "nginx:80" cmd.run "ls" -I 指定pillar
3、pillar的临时定义
vim /srv/salt/pillar_temp.sls
{%set u = pillar['u_name']%} 之前没有这个pillar
{{u}}:
user.present
salt 'node2' state.sls pillar_temp pillar='{"u_name": "v1"}' 临时指定一个pillar