在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都可以满足.

时间: 2024-08-23 00:12:57

在SaltStack中使用Pillar的相关文章

Saltstack中Pillar那点事

Salt中Pillar那点事 基本简介 在 SaltStack 中, Pillar作为定义minion全局数据的接口. 默认存储在master端, Minion启动时会连接master获取最新的pillar数据. Pillar使用类似于State Tree的结构, 默认使用 YAML 作为其描述格式, 在Minion内部最终转换成 Python字典 . 那么在Salt内部, Pillar是如何工作的? 在哪些情况下,需要先执行刷新Pillar操作? 而哪些又不需要? 本文基于 Salt 2014

saltstack中stae用法

#salt  '*'  state.sls   httpd 这个命令会先在目录/srv/salt下找httpd.sls(yml语法格式编写的)文件,若:有就安装文件内容执行,若没有的话就继续找/srv/salt/httpd目录下init.sls,找到了安装文件内容执行,没有的话就报错: #salt  '*'  state.sls   httpd.install 按照文件/srv/salt/httpd/install.sls文件内容执行,没有的话就报错: [[email protected]_2 

saltstack grains与pillar使用和订制

一.grains与pillar简介 grains是minion启动时加载,在minion运行过程中不会发生变化,所以是静态数据.grains数据的定制可以在各minion端,也可以放在master端;grains中包含许多的信息,如:运行的内核版本,操作系统,网络接口地址,MAC地址,cpu,内存等等信息. Pillar是Salt用来分发全局变量到所有或指定minion的一个定制接口,所以相对grains来说可以称为动态的数据,保存在master端. 由于涉及的配置文件采用yaml格式,如果对y

saltstack中grains简介

1.什么是grains:(静态数据,minion启动时采集) Grains Static bits of information that a minioncollects about the system when the minion first starts. The grains interface is made available toSalt modules and components so that the right salt minion commands areautom

Saltstack中关于ID的那些故事

今儿个来说说关于ID设置这些事儿,以及碰到问题解决过程.希望对大家有用.... 在前期主机名规划当中,我们会根据业务特定设计出一套主机名识别方法.. 有一天,一台测试机器安装完毕,但在Saltstack认证key时,会发现master和minions对接时,发现minion传过来的ID是localhost.localdomain,就奇怪了,这是为什么呢.? 默认主机操作系统安装完毕,/etc/sysconfig/network配置文件的hostname是localhost.localdomain

Saltstack中ZeroMQ那点事

基本简介 前置阅读 环境说明 Salt中的ZeroMQ patterns Salt Master Salt Minion Salt 总结 基本简介 Salt 底层网络架构采用 ZeroMQ 进行实现(2014.1及之前版本, 从2014.7起, Salt新增 RAET ), 官方手册 有简短描述. 那么今天就一窥在Salt内部使用了哪些 ZeroMQ pattern? 各个组件间又是如何协作的哪? 前置阅读 0MQ - The Guide: Sockets and Patterns 环境说明 C

在SaltStack中如何使用require及watch语法

Requisites require require_in watch watch_in 总结(Conclusion) 在SaltStack配置关系系统中支持许多强大的选项.无论是简单的如软件包的安装还是使用模板和条件语句. SaltStack States可以从小巧逐步变得很复杂.幸运的是SaltStack提供一种用于解决States间依赖关系的方法. 本小节将讲述如何使用 require.require_in.watch.watch_in Requisites 在SaltStack的世界中,

saltstack数据系统之Pillar

在master上面打开系统自带的pillar: [[email protected] ~]# vim /etc/salt/master 556 pillar_opts: True [[email protected] ~]# /etc/init.d/salt-master restart Stopping salt-master daemon:                               [确定] Starting salt-master daemon:            

自动化运维Saltstack系列(三)之YAML和自定义Grains、Pillar

先来看看Saltstack的配置文件 Master [[email protected] ~]# vim /etc/salt/master Minion [[email protected] ~]# vim /etc/salt/minion 两者里面的配置项大同小异,其中master是我们需要重点配置的对象 大部分配置都可以保持默认无需改动,在部署大规模Saltstack环境需要自定义一些参数的时候才需要根据实际需求修改:其中一些比较重要的配置项: publish_port: 4505 # Sa