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
网友评论