IN-MEMORY PILLAR DATA VS. ON-DEMAND PILLAR DATA
由于pillar数据不会总是在master端实时进行编译,所以minion会存一份pillar数据
查看minion端的pillar数据的几种方式
pillar.item
pillar.get
pillar.raw
由于minion中的pillar数据并不是实时更新的,所以有时候需要进行手动刷新,以上的3个命令不会触发数据刷新,手动刷新命令如下:
salt '*' saltutil.refresh_pillar
但是在执行某些命令的时候会触发pillar数据刷新,如下:
Running states #运行state文件
Running pillar.items执行items命令时
HOW PILLAR ENVIRONMENTS ARE HANDLED
在使用多个pillar环境的时候,默认pillar是将所有环境的数据集合到一起的。
如何限制minion端接受pillar变量的环境,minion端配置:
pillarenv: base
#该选项会忽略除base以外的pillar变量
还有一种方式在执行state模块执行的时候指定pillar环境:
salt '*' state.apply mystates pillarenv=testing
SETTING PILLAR DATA AT THE COMMAND LINE
在命令行配置pillar变量,意味着pillar不止是可以从pillar环境中取得,示例如下:
salt 'xxx' state.sls XXconfig saltenv='XXX' pillar='{"ip": "spam"}' 释义:手动设置的pillar数据将覆盖从file_roots环境取得的IP变量数据
MASTER CONFIG IN PILLAR
pillar数据一般存储在master端,也可以将这些数据推送到所有minion端,但是这是非常危险的,因为这样几乎把master上的所有配置的数据全部暴露出去了,包含master端的配置文件信息,node分组信息等,默认是禁止的。
pillar_opts: True
MINION CONFIG IN PILLAR
在minion端配置pillar
参考master的pillar配置,譬如配置一个mysq密码
mysql.pass: hardtoguesspassword