saltstack的pillar和state
一、pillar的定义Saltstack默认将主控端配置文件中的所有数据都定义到pillar中,而且对所有被控主机开放,可以通过修改/etc/salt/master配置中的pillar_opts:Ture来开启这项功能
开启后可以运行 salt '*' pillar.data 来查看效果(显示太多就不截图了)
pillar支持在sls文件中定义数据,格式需符合YAML规范,和Saltstack的state组件十分相似,两者的入口文件都是top.sls,当不用将两者混淆
修改主配置文件/etc/salt/master中的pillar_rooots参数,定义pillar的主目录:
pillar_roots: base:
- /srv/pillar
创建 pillar 目录
install -d /srv/pillar
进入pillar 目录创建入口文件 top.sls(*代表任意主机)
base:'*':- data
创建data.sls
flow: maxconn:
30000 maxmem: 6G
然后执行salt '*' pillar.data查看,pillar数据多出刚才加的数据(如果没有。可以执行salt '*' saltutil.refresh_pillar来刷新被控主机pillar数据)
二、state定义
state是Saltstack最核心的功能,通过预先定制好的sls文件对被控主机进行状态管理,支持包括程序包(pkg)、文件(file)、网络配置(network)、系统服务(service)、系统用户(user)等
state是通过sls文件进行描述的,支持YMAL语法,例:
apache:
pkg:
- installed
service.running:
- name: apache
- require:
- pkg: apache
1行表示定义的state名称
2、4行表示state声明开始,使用了pkg和service两个状态对象,pkg使用系统本地的软件包管理器(yum或apt)管理将要安装的软件,service管理系统守护进程
3、5行表示要执行的方法,这些方法定义了apache软件包和服务目标的状态,这里要求软件包处于已安装状态,服务必须运行,如没有则会被安装然后启动
6行的关键字require,它确保了apache服务只有在成功安装软件包后才会启动
top.sls中引用二级配置有两种方式:一种是直接引用如上面的data.sls。另一种是先创建目录,在引用目录中的init.sls
下面结合pillar和state来实现一个根据不同操作系统类型部署apache环境的任务
1、定义pillar
/srv/pillar/top.sls
base:'*':- apache
创建apache目录,进入创建init.sls
/srv/pillar/apache/init.sls
pkgs:
{
% if grains['os_family'] == 'RedHat' %} apache: httpd
{
% elif grains['os_family'] == 'Debian' %} apache: apache2
{
% endif %}
测试salt '*' pillar.data pkgs,放回添加的结果说明配置已经生效
2、定义state
/srv/salt/top.sls
base:'*':-apache
引用刚才添加的数据
/srv/salt/apache/init.sls
apache: pkg:
- installed- name: {{ pillar['pkgs']['apache'] }} service.running:
- name: {{ pillar['pkgs']['apache'] }}- require:- pkg: {{ pillar['pkgs']['apache'] }}
执行state
salt '*' state.highstate
它会根据操作系统的不同去安装apache
ubuntu
centos
参考资料:python自动化运维技术与最佳实践
页:
[1]