Saltstack_使用指南11_配置管理-状态之间依赖关系
1. 说明
下文的案例是根据上一篇文章进行的修改。因此请优先读取上一篇文章内容《Saltstack_10_配置管理-状态模块》
并且目录进行了变化,从 /srv/salt/lamp 变为了 /srv/salt/lamp2 。
另外:下文没有根据模块编写,而是根据服务进行编写的。其中数据库也是单独部署的。
2. 主机规划

salt 版本
[root@salt100 ~]# salt --version
salt 2018.3. (Oxygen)
[root@salt100 ~]# salt-minion --version
salt-minion 2018.3. (Oxygen)
状态模块文档
https://docs.saltstack.com/en/latest/ref/states/all/index.html
require 和 watch 文档
https://docs.saltstack.com/en/latest/topics/tutorials/states_pt2.html
include 和 extend 文档
https://docs.saltstack.com/en/latest/topics/tutorials/states_pt3.html
注意事项
修改了master或者minion的配置文件,那么必须重启对应的服务。
3. 状态之间的依赖关系
状态间关系:
、我依赖谁 require
、谁依赖我【我被谁依赖】 require_in 、我监控谁 watch # 例如:如果配置文件有修改,那么会重载、重启服务
、谁监控我【我被谁监控】 watch_in # 如果配置文件有修改,那么会重载、重启服务 、我引用谁 include
、我扩展谁 extend 如何编写SLS技巧:
、按状态分类 如果单独使用,很清晰
、按服务分类 可以被其他的SLS include。例如:LNMP include mysql 的服务 【生产优先使用】
4. 依赖关系案例
4.1. 部署架构

4.2. Apache和PHP的SLS【正向依赖】
[root@salt100 lamp2]# pwd # 所在目录
/srv/salt/lamp2
[root@salt100 lamp2]# ll
total
-rw-r--r-- root root Dec : apache.sls
drwxr-xr-x root root Dec : file
-rw-r--r-- root root Dec : init.sls
-rw-r--r-- root root Dec : mariadb.sls # 单独使用
-rw-r--r-- root root Dec : php.sls
[root@salt100 lamp2]# ll file/ # 涉及的配置文件
total
-rw-r--r-- root root Dec : httpd.conf
-rw-r--r-- root root Dec : my.cnf
-rw-r--r-- root root Oct : php.ini
[root@salt100 lamp2]# cat init.sls
include: # 我包含谁
- lamp2.apache
- lamp2.php [root@salt100 lamp2]# cat apache.sls
apache-service:
pkg.installed:
- name: httpd file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp2/file/httpd.conf
- user: root
- gourp: root
- mode:
- backup: minion
- require: # 我依赖谁
- pkg: apache-service # 依赖 apache-service 中 pkg 的安装包 service.running:
- name: httpd
- enable: True
- reload: True
- require: # 我依赖谁
- pkg: apache-service
- watch: # 我监控谁
# 一旦发生变化,就重加载服务
- file: apache-service # 监控 apache-service 中 file 的文件 [root@salt100 lamp2]# cat php.sls
php-service:
pkg.installed:
- name: php
- name: php-devel
- name: mariadb
- name: php-mysql
- name: php-cli
- name: php-mbstring file.managed:
- name: /etc/php.ini
- source: salt://lamp2/file/php.ini
- user: root
- group: root
- mode:
- backup: minion
- require: # 我依赖谁
- pkg: php-service
4.2.1. 执行SLS
[root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init test=True # 测试是否可行 【查看返回信息】
[root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init # 查看执行结果
[root@salt100 lamp2]# salt 'salt0*' test.ping # 将进行批量执行----查看目标选择是否正确
salt01:
True
salt02:
True
salt03:
True
[root@salt100 lamp2]# salt 'salt0*' state.sls lamp2.init # 批量执行【并查看执行结果】
4.3. mariadb 的 SLS 【反向依赖】
[root@salt100 lamp2]# pwd # 所在目录
/srv/salt/lamp2
[root@salt100 lamp2]# ll
total
-rw-r--r-- root root Dec : apache.sls
drwxr-xr-x root root Dec : file
-rw-r--r-- root root Dec : init.sls
-rw-r--r-- root root Dec : mariadb.sls # 单独使用
-rw-r--r-- root root Dec : php.sls
[root@salt100 lamp2]# ll file/ # 涉及的配置文件
total
-rw-r--r-- root root Dec : httpd.conf
-rw-r--r-- root root Dec : my.cnf
-rw-r--r-- root root Oct : php.ini
[root@salt100 lamp2]# cat mariadb.sls
mariadb-service:
pkg.installed:
- name: mariadb
- name: mariadb-server
- require_in: # 谁依赖我「我被谁依赖」
- file: mariadb-service
- watch_in: # 谁监控我「我被谁监控」
- service: mariadb-service file.managed:
- name: /etc/my.cnf
- source: salt://lamp2/file/my.cnf
- user: root
- group: root
- mode:
- backup: minion
- watch_in: # 谁监控我「我被谁监控」
- service: mariadb-service service.running:
- name: mariadb.service
- enable: True
- restart: True
4.3.1. 执行SLS
[root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb test=True # 测试是否可行 【查看返回信息】
[root@salt100 lamp2]# [root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb # 查看执行结果

Saltstack_使用指南11_配置管理-状态之间依赖关系的更多相关文章
- Saltstack_使用指南10_配置管理-状态模块
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Saltstack_使用指南12_配置管理-jinja模板
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...
- Gradle用户指南(章8:依赖关系管理基础)
章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...
- Saltstack_使用指南03_配置管理
1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest ...
- SaltStack配置管理--状态间的关系(六)
一.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中 [root@7mini-node1 p ...
- Jenkins job之间依赖关系配置(联动构建)
使用场景: 想要在某APP打新包之后,立即执行自动化测试的job来验证该新包.比如Job A 执行完执行Job B ,如下图所示,如何建立依赖呢? 主要有两种方法: 1.配置上游依赖: 2.配置下游依 ...
- Jenkins-job之间依赖关系配置
使用场景: 想要在某APP打新包之后,立即执行自动化测试的job来验证该新包. 比如Job A 执行完执行Job B ,如下图所示,如何建立依赖呢? 1.配置上游依赖 构建触发器-配置如下信息: 选择 ...
- Saltstack_使用指南17_salt-ssh
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Android注解使用之Dagger2实现项目依赖关系解耦
前言: 最近牵头发起公司app的重构工作,如何通过重构让项目的耦合降低.开发效率提高,一直是我努力的方向,今天来学习一下一个注解框架Dagger2,然后看看如何使用它来降低项目的耦合. Dagger2 ...
随机推荐
- 前端Vue准备工作
环境准备: 1.安装Node&npm,只是为了要Node.js的环境https://nodejs.org/en/download/ 2.安装完成Node以及npm之后,就可以用npm conf ...
- MySQl看这一篇就够了
MySQL分享 一.数据库结构 语句 DDL(Data Definition Languages):数据定义语句,常用的语句关键字主要包括 create.drop.alter等操作表结构 DML(Da ...
- rsync nfs web01总结
目录 rsync nfs web01总结 要求 部署rsync服务端(172.16.1.41) 部署rsync客户端(172.16.1.31.172.16.1.7) 部署web代码 NFS服务端部署 ...
- benchmarks (主要用于分布式文件系统性能测试)
最近进行学习过程中,遇到一些可以用得上的benchmark,在这里进行简要记录:之后估计会用到 TensorFlow benchmarks https://github.com/tensorflow/ ...
- 模版引擎Handlebars和Mustache
Handlebars是一款很高效的模版引擎,提供语意化的模版语句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 无需学习新语法即可使用; 下面这个是基本的模版表达式, ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第一周学习总结
201871010123-吴丽丽<面向对象程序设计 ...
- cmd如何跨盘cd切换路径
cmd跨盘cd要加参数 /d ,难怪,我还以为电脑有问题呢~
- OC:浅析Runtime中消息转发机制
一.介绍 OC是一门动态性语言,其实现的本质是利用runtime机制.在runtime中,对象调用方法,其实就是给对象发送一个消息,也即objc_msgSend().在这个消息发送的过程中,系统会进行 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3
23.2 接口实现的基础 大家都很了解函数在本地应用,通过名称调用函数执行,并通过传递不同参数,函数有不同执行,执行后给调用者返回结果.如果把一个函数做成一个接口远程访问,也需要这几个步骤.使用HT ...
- 教妹学 Java:难以驾驭的多线程
00.故事的起源 “二哥,上一篇<集合>的反响效果怎么样啊?”三妹对她提议的<教妹学 Java>专栏很关心. “这篇文章的浏览量要比第一篇<泛型>好得多.” “这是 ...