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_配置管理-状态之间依赖关系的更多相关文章

  1. Saltstack_使用指南10_配置管理-状态模块

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  2. Saltstack_使用指南12_配置管理-jinja模板

    1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...

  3. Gradle用户指南(章8:依赖关系管理基础)

    章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...

  4. Saltstack_使用指南03_配置管理

    1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest ...

  5. SaltStack配置管理--状态间的关系(六)

    一.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中 [root@7mini-node1 p ...

  6. Jenkins job之间依赖关系配置(联动构建)

    使用场景: 想要在某APP打新包之后,立即执行自动化测试的job来验证该新包.比如Job A 执行完执行Job B ,如下图所示,如何建立依赖呢? 主要有两种方法: 1.配置上游依赖: 2.配置下游依 ...

  7. Jenkins-job之间依赖关系配置

    使用场景: 想要在某APP打新包之后,立即执行自动化测试的job来验证该新包. 比如Job A 执行完执行Job B ,如下图所示,如何建立依赖呢? 1.配置上游依赖 构建触发器-配置如下信息: 选择 ...

  8. Saltstack_使用指南17_salt-ssh

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  9. Android注解使用之Dagger2实现项目依赖关系解耦

    前言: 最近牵头发起公司app的重构工作,如何通过重构让项目的耦合降低.开发效率提高,一直是我努力的方向,今天来学习一下一个注解框架Dagger2,然后看看如何使用它来降低项目的耦合. Dagger2 ...

随机推荐

  1. Java面试基础 -- Docker篇

    1.什么是Docker? Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行. 2.什么是Docker镜像? Docker镜像是 ...

  2. Java面试基础 -- Git篇

    1.Git和SVN有什么区别? Git SVN Git是一个分布式的版本控制工具 SVN 是集中版本控制工具 它属于第3代版本控制工具 它属于第2代版本控制工具 客户端可以在其本地系统上克隆整个存储库 ...

  3. 浅谈Django基础(HttpResponse、render、redirect)

    1. 使用之前先导入他们 from django.shortcuts import HttpResponse, render, redirect 2. HttpResponse: 它是作用是内部传入一 ...

  4. 使用 TSPITR 恢复删除的表空间的步骤 (Doc ID 1277795.1)

    Steps To Recover A Dropped Tablespace Using TSPITR (Doc ID 1277795.1) APPLIES TO: Oracle Database - ...

  5. docker 限制容器能够使用的资源

    docker 限制容器能够使用的内存,CPU,I/O 资源概述,内存是非可压缩资源,cpu是可压缩资源. 内存用超了,就发送Out Of Memory Exception,容器会被kill掉.所以内存 ...

  6. Linux:RPM安装工具的使用

    RPM安装工具的使用 RPM包管理工具介绍 RedHat 软件包管理工具(RedHat Package Manager,RPM) RPM 软件包工具常用于软件包的安装.查询.更新升级.校验.卸载以及生 ...

  7. TOMCAT修改默认端口(8080端口)

    在工作中,有可能需要在一台服务器上同时部署两个或两个以上的tomcat(服务器性能够好), 那么就需要修改其中的一个的端口号才能使得两个同时工作,总共需要修改3个地方: 1.首先到安装目录(或者解压目 ...

  8. IDEA中增加日志相关的Live Templates

    1.新增一个Template Group 来将一个类型的放一起 2.在Template Group增加Live Template 这里可以分为三步 第一步填写想要看到的代码,变量部分用$paramet ...

  9. 利用Github建立博客专用图库

    0.前言 当我们写博客或者文档的时候常常需要引用图片.倘或引用图片的链接是外网的,常常会出现加载过慢的情况,并且不稳定的图片来源不方便管理.所以如果建立一个博客专用的图片仓库,统一管理维护方面就方便得 ...

  10. 运用tensorflow写的第一个神经网络

    因为实训课要用LSTM+attention机制在钢材领域做一个关系抽取.作为仅仅只学过一点深度学习网络的小白在b站上学习了RNN,LSTM的一些理论知识. 但只懂得一些理论知识是无法完成关系抽取的任务 ...