在SaltStack中使用Pillar

在SaltStack中使用Pillar


/etc/salt/master - Pillar Roots

/srv/pillar/top.sls

/srv/pillar/packages.sls - Pillar Data

/srv/states/apache.sls - State Data

/srv/pillar/database.sls - Pillar Data

website.conf - template

總結

Pillar做爲一允許你分發定義的全局數據到目標minion上的接口,Pillar的數據只在匹配的minions上有效。 所以該特性使Pillar常常用於存儲敏感類數據.


本文通過例子帶你瞭解如何使用和存儲Pillar數據.


/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都可以滿足.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章