在SaltStack中使用Pillar

在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均可以知足.

相關文章
相關標籤/搜索