Saltstack系列6:Saltstack之state
state功能
state是Saltstack最核心的功能,通过预先定制好的sls(salt state file)文件对被控制主机进行状态管理,支持包括程序包(pkg)、文件(file)、网络配置(network)、系统服务(service)、系统用户(user)等。
state的定义
state的定义是通过sls文件进行描述的,支持YAML语法,定义规则如下:
$ID: #定义state名称,通常采用与描述对象保存一致的方法,如apache、nginx等
$state: #须管理对象的类型
- $state: states #定制对象的状态
示例:
apache: #state名称:apache
pkg: #管理对象类型:pkg,进行软件安装(yum、apt)
- installed #pkg要执行的方法:install,如未安装就进行安装
service: #管理对象类型:service,管理系统守护进程
- running #service要执行的方法:running,如未运行就进行启动
- require: #关键字require,确保apache服务只有在成功安装软件包后才会启动
- pkg: apache
注:---关键字说明
require:在运行此state之前,先运行依赖的state关系检查,可配置多个state依赖对象;
watch:在检查摸个state发生变化时运行此模块。
state的使用
state的入口文件与pillar一样,文件名都是top.sls,但state要求sls文件必须存放在Saltstack base定义的目录下(默认为/srv/salt)。
state描述配置*.sls支持jinjia模板、grains及pillar引用等,在state的逻辑层次定义完成后,再通过salt '*' state.highstate执行生效。
示例:
结合grains与pillar,实现一个根据不同操作系统类型部署apache环境的任务
定义pillar
【/srv/pillar/top.sls】
base:
'*':
- apache
在top.sls中引用二级配置有两种方式,一种是直接引用,如本例中直接引用apache.sls;另一种是创建apache目录,再引用目录中的init.sls文件,两者效果是一样的。
【/srv/pillar/apache.sls】或【/srv/pillar/apache/init.sls】
pkgs:
{% if grains['os_family'] == 'Debian' %}
apache: apache2
{% elif grains['os_family'] == 'RedHat' %}
apache: httpd
{% elif grains['os'] == 'Arch' %}
apache: apache
{% endif %}
测试:
salt '*' saltutil.refresh_pillar #刷新pillar
salt '*' pillar.data pkgs #获取pkgs信息
定义state
【/srv/salt/top.sls】
base:
'*':
- apache
【/srv/salt/apache.sls】或【/srv/salt/apache/init.sls】
apache:
pkg:
- installed
- name: {{ pillar['pkgs']['apache'] }} #pillar['pkgs']['apache']引用的是pillar定义的数据
service.running:
- name: {{ pillar['pkgs']['apache'] }}
- require:
- pkg: {{ pillar['pkgs']['apache'] }}
执行state
salt '*' state.highstate
结果:

参考资料:
根据刘天斯《Python自动化运维技术与最佳实践》整理
Saltstack系列6:Saltstack之state的更多相关文章
- (转)Saltstack系列
Saltstack系列1:安装配置 Saltstack系列2:Saltstack远程执行命令 Saltstack系列3:Saltstack常用模块及API Saltstack系列4:Saltstack ...
- SaltStack系列(一)之环境部署、命令及配置文件详解
一.SaltStack介绍 1.1 saltstack简介: saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证 ...
- AngularJS路由系列(4)-- UI-Router的$state服务、路由事件、获取路由参数
本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router的$state服务● UI-Router的路由事件● UI-Router获取路由参数 Angular ...
- (转)CentOS6/7 使用saltstack源安装saltstack
CentOS6/7 使用saltstack源安装saltstack 原文:https://blog.csdn.net/wh211212/article/details/77053708 CentOS ...
- SaltStack系列(三)之state相关介绍
一.管理对象 saltstack系统中管理对象叫做Target,在master上可以采用不同的Tatget去管理不同的minion.这些Target都是通过去管理和匹配Minion的ID来做一些集合. ...
- Saltstack系列5:Saltstack之pillar组件
pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等. 在pillar中定义的数据与 ...
- Saltstack系列3:Saltstack常用模块及API
说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...
- Saltstack系列1:安装配置
安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...
- saltstack系列~第一篇
一 简介:从今天开始学习saltstack 二 salt的认证系列操作 1 原理 saltstack通过/etc/salt/pki/目录下面的配置文件的密钥进行通信,master端接受minion端后 ...
随机推荐
- 编程工具系列之一------使用GDB的堆栈跟踪功能
在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性. GDB调试器当然也支持这一特性,但是功能更加灵活和丰富. GDB将当前函数的栈帧编号为0,为外层函数 ...
- Centos6下DRBD的安装配置
导读 Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案.数据镜像:实时.透明.同步(所有服务器 ...
- 移动互联网实战--Apple的APNS桩推送服务的实现(1)
前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...
- 目标检测的图像特征提取之(一)HOG特征(转载)
目标检测的图像特征提取之(一)HOG特征 zouxy09@qq.com http://blog.csdn.net/zouxy09 1.HOG特征: 方向梯度直方图(Histogram of Orien ...
- 160. Intersection of Two Linked Lists
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- mybatis+spring的简单介绍学习
参考下面链接 http://mybatis.github.io/spring/zh/index.html
- C#笔记 -----扩展方法
在我们使用vs自带的工具函数时,如: string str='111';str.toInt(); 有没有想到过他们是怎么来的? 这就是C# 的 方法扩展: age: using system: pu ...
- 多线程问题(JVM重排序)
public class Test3 { private static boolean ready; private static int Number; private static class R ...
- Android概述(思维导图)
- mysql数据库主从复制部署笔记
主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...