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

相关文章
相关标签/搜索