Saltstack_使用指南11_配置管理-状态之间依赖关系

1. 说明:

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

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

2. 主机规划

服务器名称操作系统版本内网IP外网IP(模拟)Hostname部署模块
salt100CentOS7.5172.16.1.10010.0.0.100salt100salt-master、salt-minion
salt01CentOS7.5172.16.1.1110.0.0.11salt01salt-minion
salt02CentOS7.5172.16.1.1210.0.0.12salt02salt-minion
salt03CentOS7.5172.16.1.1310.0.0.13salt03salt-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_in

	3、我监控谁					watch	# 例如:如果配置文件有修改,那么会重载、重启服务 	
	4、谁监控我【我被谁监控】	watch_in   # 如果配置文件有修改,那么会重载、重启服务 	

	5、我引用谁		include
	6、我扩展谁		extend

如何编写SLS技巧:
	1、按状态分类  如果单独使用,很清晰
	2、按服务分类  可以被其他的SLS include。例如:LNMP include mysql 的服务	 【生产优先使用】	

4. 依赖关系案例

4.1. 部署架构

服务器名称操作系统版本内网IP外网IP(模拟)Hostname部署模块【通过salt部署】
salt100CentOS7.5172.16.1.10010.0.0.100salt100mariadb
salt01CentOS7.5172.16.1.1110.0.0.11salt01httpd、PHP
salt02CentOS7.5172.16.1.1210.0.0.12salt02httpd、PHP
salt03CentOS7.5172.16.1.1310.0.0.13salt03httpd、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: httpd

  file.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-mbstring

  file.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-service

  file.managed:
    - name: /etc/my.cnf
    - source: salt://lamp2/file/my.cnf
    - user: root
    - group: root
    - mode: 644
    - 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  # 查看执行结果

微信公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值