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

results matching ""

    No results matching ""