在SaltStack中使用Pillarweb
/etc/salt/master - Pillar Roots數據庫
/srv/pillar/top.slsapache
/srv/pillar/packages.sls - Pillar Data數據結構
/srv/states/apache.sls - State Dataide
/srv/pillar/database.sls - Pillar Data接口
website.conf - templateit
總結io
Pillar作爲一容許你分發定義的全局數據到目標minion上的接口,Pillar的數據只在匹配的minions上有效。 因此該特性使Pillar經常用於存儲敏感類數據.ast
本文經過例子帶你瞭解如何使用和存儲Pillar數據.class
/etc/salt/master - Pillar Roots
須要在master配置文件中定義_pillar_roots_,其用來指定Pillar data存儲在哪一個目錄,默認是_/srv/pillar_.
pillar_root:
base:
- /srv/pillar
/srv/pillar/top.sls
和State系統同樣,須要先定義一個_top.sls_文件做爲入口,用來指定數據對哪一個minion有效.
base:
'*':
- packages
'alpha':
- database
上邊的例子定義了_packages_對全部的minion有效,_database_只對名字爲'alpha'的minion有效.
/srv/pillar/packages.sls - Pillar Data
經過例子_packages_文件定義不一樣Linux發行版的軟件包名字,經過Pillar進行中心控制它們,這樣就能夠在State文件中引用Pillar數據使State看起來更簡單.
{% if grains['os'] == 'RedHat' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
/srv/states/apache.sls - State Data
如上,在State文件中將能夠引用Pillar數據,是State更爲簡單. 線面是_apache.sls_ State文件例子:
apache:
pkg:
- installed
- name: {{ pillar['apache'] }}
/srv/pillar/database.sls - Pillar Data
另外一個定義Pillar Data的例子是定義服務鏈接數據庫的權限的配置參數:
dbname: project
dbuser: username
dbpass: password
dbhost: localhost
website.conf - template
// MySQL settings
define('DB_NAME', '{{ pillar['dbname'] }}');
// MySQL database username
define('DB_USER', '{{ pillar['dbuser'] }}');
// MySQL database password
define('DB_PASSWORD', '{{ pillar['dbpass'] }}');
// MySQL hostname
define('DB_HOST', '{{ pillar['dbhost'] }}');
總結
有許多方法使用Pillar data. 做爲另外一種基礎數據結構,Pillar是優美的. 能夠用它定義全部minion上的自定義數據,也能夠簡單的定義包的名字,或者定義服務憑據(service credentials),Pillar均可以知足.