1. 说明:

下文的案例是根据上一篇文章进行的修改。因此请优先读取上一篇文章内容《Saltstack_10_配置管理-状态模块》
并且目录进行了变化,从 /srv/salt/lamp 变为了 /srv/salt/lamp2 。

另外:下文没有根据模块编写,而是根据服务进行编写的。其中数据库也是单独部署的。

2. 主机规划

服务器名称 操作系统版本 内网IP 外网IP(模拟) Hostname 部署模块
salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 salt-master、salt-minion
salt01 CentOS7.5 172.16.1.11 10.0.0.11 salt01 salt-minion
salt02 CentOS7.5 172.16.1.12 10.0.0.12 salt02 salt-minion
salt03 CentOS7.5 172.16.1.13 10.0.0.13 salt03 salt-minion
状态模块文档

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. 状态之间的依赖关系

状态间关系: 1、我依赖谁                 require     2、谁依赖我【我被谁依赖】   require_in3、我监控谁                    watch   # 例如:如果配置文件有修改,那么会重载、重启服务     4、谁监控我【我被谁监控】   watch_in   # 如果配置文件有修改,那么会重载、重启服务    5、我引用谁      include6、我扩展谁       extend如何编写SLS技巧:1、按状态分类  如果单独使用,很清晰2、按服务分类  可以被其他的SLS include。例如:LNMP include mysql 的服务     【生产优先使用】

4. 依赖关系案例

4.1. 部署架构

服务器名称 操作系统版本 内网IP 外网IP(模拟) Hostname 部署模块【通过salt部署】
salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 mariadb
salt01 CentOS7.5 172.16.1.11 10.0.0.11 salt01 httpd、PHP
salt02 CentOS7.5 172.16.1.12 10.0.0.12 salt02 httpd、PHP
salt03 CentOS7.5 172.16.1.13 10.0.0.13 salt03 httpd、PHP

4.2. Apache和PHP的SLS【正向依赖】

[root@salt100 lamp2]# pwd  # 所在目录
/srv/salt/lamp2
[root@salt100 lamp2]# ll
total 16
-rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
drwxr-xr-x 2 root root  53 Dec 31 15:50 file
-rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
-rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
-rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
[root@salt100 lamp2]# ll file/   # 涉及的配置文件
total 80
-rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
-rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
-rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
[root@salt100 lamp2]# cat init.sls
include:   # 我包含谁- lamp2.apache- lamp2.php[root@salt100 lamp2]# cat apache.sls
apache-service:pkg.installed:- name: httpdfile.managed:- name: /etc/httpd/conf/httpd.conf- source: salt://lamp2/file/httpd.conf- user: root- gourp: root- mode: 644- 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-mbstringfile.managed:- name: /etc/php.ini- source: salt://lamp2/file/php.ini- user: root- group: root- mode: 644- 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 16
-rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
drwxr-xr-x 2 root root  53 Dec 31 15:50 file
-rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
-rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
-rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
[root@salt100 lamp2]# ll file/   # 涉及的配置文件
total 80
-rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
-rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
-rw-r--r-- 1 root root 64945 Oct 31 03:33 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-servicefile.managed:- name: /etc/my.cnf- source: salt://lamp2/file/my.cnf- user: root- group: root- mode: 644- backup: minion- watch_in:    # 谁监控我「我被谁监控」- service: mariadb-serviceservice.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. J2EE高级开发框架小课程之Spring框架2——Spring容器作用域,生命周期,Spring管理对象之间依赖关系

    Spring容器作用域 Spring创建对象的作用域:Spring在创建对象时,默认只创建一个(单例模式) scope: singleton(默认 单例) 构造器就一次,结果true prototyp ...

  2. 请你简要说明一下线程的基本状态以及状态之间的关系?

    Running表示运行状态, Runnable表示就绪状态,万事俱备,只欠CPU: Blocked表示阻塞状态,阻塞状态又有多种情况,可能是因为调用wait()方法进入等待池,也可能是因为执行同步方法 ...

  3. IDEA以UML图表方式查看maven项目pom文件中全局及部分jar之间依赖关系

    以其中一个pom.xml文件为例,pom文件下右键,选择diagrams--show dependencies,当然还可以查看局部关系,及删除某个模块功能

  4. Saltstack_使用指南17_salt-ssh

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

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

    Dagger2 一句话:一款快速的注解框架,应用于Android.Java,由 Google 开发和维护,是 Square 的 Dagger 项目的分支. gitHub:https://github. ...

  6. 使用pyecharts绘制系统依赖关系图

    使用pyecharts绘制系统依赖关系图 背景介绍 近期梳理了公司内部系统之间的数据关系,得到了多个excel格式的统计文件,每个文件包含了该系统自身数据清单.依赖的其他系统的数据清单.对其他系统供应 ...

  7. 【面向对象编程】(3) 类之间的交互,依赖关系,关联关系

    各位同学好,今天和大家分享一下面向对象编程中,类之间的交互,类之间的依赖关系和关联关系.有不明白的可见前一章节:https://blog.csdn.net/dgvv4/article/details/ ...

  8. Prism 文档 第三章 管理组件之间的依赖关系

                                                                          第3章:管理组件之间的依赖关系 基于Prism库的复合应用程 ...

  9. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...

  10. Gradle 2.0 用户指南翻译——第五十章. 依赖管理

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

最新文章

  1. 人民日报钟声:以和平合作守护世界安全
  2. 第二节 MATLAB中图像数据导入、导出和转换
  3. 天翼云从业认证(3.2)天翼云存储产品
  4. MybatisPlus中insert方法与insertAllColumn方法的区别
  5. java获取当前周一_Java互联网架构-Spring IOC源码分析
  6. boost::contract模块实现条件是否的测试程序
  7. 解决toolbar左边空出一部分的问题
  8. mysql5.7修改root密码_七小服公开课EMC isilon修改丢失的root密码
  9. 20 PP配置-生产计划-定义计划订单计划参数
  10. NLP - 新闻文本分类-baseline
  11. oracle clusterware 11g,Oracle11gR2clusterware启动顺序
  12. 我如何开始使用Linux
  13. 华为开会有“原则”?企业的成功都从会议开始
  14. 盘点企业更换邮件服务器原因
  15. java filesearcher_Java Object Searcher | java内存对象搜索辅助工具
  16. 数学之美系列八-- 贾里尼克的故事和现代语言处理
  17. Python下time模块和datetime模块的使用
  18. 移动SI:如何开拓企业客户市场?
  19. C# AO/ArcEngine 栅格数据总结
  20. android一键 iphone,流畅吃鸡最全教程来了:安卓iPhone一键解锁最高画质

热门文章

  1. (HR面试)最常见的面试问题和技巧性答复
  2. Narrow daylight 歌词翻译
  3. 魔术方法、5个类的魔术属性和单态
  4. 如何快速制作Png格式的图片(不需要PS软件)
  5. HDU 6232 2017 哈尔滨 Confliction
  6. U盘插入后只显示安全删除硬件问题
  7. Java实现简单四则运算
  8. Linux——文件管理(文件系统、目录管理、文件操作)
  9. Spring学习(二)IOC
  10. 吐血总结《Mysql从入门到入魔》,图文并茂