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 ...
随机推荐
- SAP 资产相关日期
1. Capitalized Date(资本化日期) 可以手工输入资本化日期,或者如果不输入,则通常默认写入First Acquisition Date (资产第一次购置时输入资产价值日). 2.As ...
- requests---requests上传图片
我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功 抓取上传接口 这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简 ...
- 005 C/C++ 数据类型_void
1.void的字面意思是'无类型'.void * 是无类型指针,void * 可以指向任何类型的数据. 2.数据类型的分装: int InitHardEnv(void ** handle); 典型的内 ...
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- wepy安装后提示Cannot read property 'addDeps'
最近准备做一个微信小程序,以前一直用的小程序原始api做,但是这次准备用一个框架来做练习,当然在做之前需要比较一下现在小程序框架的优缺点. 经过认真挑选,选定wepy,Taro,uni-app,mpv ...
- C#位运算实际作用之操作整型某一位
1.前言 前几天写了两篇关于c#位运算的文章 c#位运算基本概念与计算过程 C#位运算实际运用 在文中也提到了位运算的实际作用之一就是合并整型,当时引用了一个问题: C# 用两个short,一个int ...
- Mixin Messenger 源码解读 1 — — WCDB Swift
Mixin Messenger 早期采用 FMDB 后来切换至 WCDB 沿用至今,一直比较可靠稳定,这里分享一下使用心得和功能扩展. 关于 Mixin Messenger Mixin Messeng ...
- 打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜
爬虫面临的问题 不再是单纯的数据一把抓 多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便 很多人说js异步加载与数据解析,爬虫可以做到啊,恩 ...
- MySQL UNSIGNED和ZEROFILL属性
UNSIGNED 这个属性就是标记数字类型是无符号的,和C/C++语言中的unsigned含义是一样的,int signed的类型范围是-2147483648~2147483648,而int unsi ...
- Node 之 Express 4x 骨架详解
周末,没事就来公司加班继续研究一下Express ,这也许也是单身狗的生活吧. 1.目录结构: bin, 存放启动项目的脚本文件 node_modules, 项目所有依赖的库,以及存放 package ...