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

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_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部署】
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: 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  # 查看执行结果

微信公众号

发布了129 篇原创文章 · 获赞 128 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/woshizhangliang999/article/details/89378426