grains存儲于minion端,主要是minion在啟動時收集系統信息發送至master,可以自定義。
pillar存儲于master端,此類數據加密,
舉例:
/etc/salt/master配置:
pillar_roots:
base:
- /srv/pillar/base
prod:
- /srv/pillar/prod
# 定義了base環境與prod環境所使用不同pillar屬性值
編排stats目錄:
[root@node2 pillar]# pwd
/srv/pillar
[root@node2 pillar]# tree
├── base
│ ├── ceshi
│ │ └── init.sls
│ └── top.sls
└── prod
├── rabbitmq
│ └── init.sls
└── top.sls
# 設置base屬性,
[root@node2 pillar]# cat base/top.sls
base:
'*':
- ceshi
[root@node2 pillar]# cat base/ceshi/init.sls
os1:
osnum: 1
# 設置prod屬性,
[root@node2 pillar]# cat prod/top.sls
prod:
'*':
- rabbitmq
[root@node2 pillar]# cat prod/rabbitmq/init.sls
os2:
osnum: 2
在設置屬性值時可以根據grains值來進行判斷之后在設置,非常靈活。
# 例子:
pkgs:
{% if grains['os'] == 'CentOS' %}
apache: httpd
git: git
{% elif grains['os'] == 'SUSE' %}
apache: apache2
git: git-core
{% endif %}
更新pillar屬性:
# salt '*' saltutil.refresh_pillar
查看pillar定義屬性是否生效:
# salt '*' pillar.items os1
# salt '*' pillar.items os2