filts 发表于 2018-1-3 19:00:04

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]
查看完整版本: saltstack的pillar和state