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

 

1. 说明

下文的案例是根据上一篇文章进行的修改。因此请优先读取上一篇文章内容《Saltstack_10_配置管理-状态模块》

并且目录进行了变化,从 /srv/salt/lamp 变为了 /srv/salt/lamp2 。

 

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

 

2. 主机规划

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

 

salt 版本

1 [root@salt100 ~]# salt --version
2 salt 2018.3.3 (Oxygen)
3 [root@salt100 ~]# salt-minion --version
4 salt-minion 2018.3.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. 状态之间的依赖关系

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

 

4. 依赖关系案例

4.1. 部署架构

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

 

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

 1 [root@salt100 lamp2]# pwd  # 所在目录
 2 /srv/salt/lamp2
 3 [root@salt100 lamp2]# ll
 4 total 16
 5 -rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
 6 drwxr-xr-x 2 root root  53 Dec 31 15:50 file
 7 -rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
 8 -rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
 9 -rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
10 [root@salt100 lamp2]# ll file/   # 涉及的配置文件
11 total 80
12 -rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
13 -rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
14 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
15 [root@salt100 lamp2]# cat init.sls 
16 include:   # 我包含谁
17   - lamp2.apache
18   - lamp2.php
19 
20 [root@salt100 lamp2]# cat apache.sls 
21 apache-service:
22   pkg.installed:
23     - name: httpd
24 
25   file.managed:
26     - name: /etc/httpd/conf/httpd.conf
27     - source: salt://lamp2/file/httpd.conf
28     - user: root
29     - gourp: root
30     - mode: 644
31     - backup: minion
32     - require:     # 我依赖谁
33       - pkg: apache-service   # 依赖 apache-service 中 pkg 的安装包
34 
35   service.running:
36     - name: httpd
37     - enable: True
38     - reload: True
39     - require:    # 我依赖谁
40       - pkg: apache-service
41     - watch:      # 我监控谁
42       # 一旦发生变化,就重加载服务
43       - file: apache-service  # 监控 apache-service 中 file 的文件
44 
45 [root@salt100 lamp2]# cat php.sls 
46 php-service:
47   pkg.installed:
48     - name: php
49     - name: php-devel
50     - name: mariadb
51     - name: php-mysql
52     - name: php-cli
53     - name: php-mbstring
54 
55   file.managed:
56     - name: /etc/php.ini
57     - source: salt://lamp2/file/php.ini
58     - user: root
59     - group: root
60     - mode: 644
61     - backup: minion
62     - require:     # 我依赖谁
63       - pkg: php-service

 

4.2.1. 执行SLS

 1 [root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init test=True  # 测试是否可行 【查看返回信息】
 2 [root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init  # 查看执行结果
 3 [root@salt100 lamp2]# salt 'salt0*' test.ping   # 将进行批量执行----查看目标选择是否正确
 4 salt01:
 5     True
 6 salt02:
 7     True
 8 salt03:
 9     True
10 [root@salt100 lamp2]# salt 'salt0*' state.sls lamp2.init  # 批量执行【并查看执行结果】

 

4.3. mariadb 的 SLS 【反向依赖】

 1 [root@salt100 lamp2]# pwd  # 所在目录
 2 /srv/salt/lamp2
 3 [root@salt100 lamp2]# ll
 4 total 16
 5 -rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
 6 drwxr-xr-x 2 root root  53 Dec 31 15:50 file
 7 -rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
 8 -rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
 9 -rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
10 [root@salt100 lamp2]# ll file/   # 涉及的配置文件
11 total 80
12 -rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
13 -rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
14 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
15 [root@salt100 lamp2]# cat mariadb.sls 
16 mariadb-service:
17   pkg.installed:
18     - name: mariadb
19     - name: mariadb-server
20     - require_in:   # 谁依赖我「我被谁依赖」
21       - file: mariadb-service
22     - watch_in:     # 谁监控我「我被谁监控」
23       - service: mariadb-service
24 
25   file.managed:
26     - name: /etc/my.cnf
27     - source: salt://lamp2/file/my.cnf
28     - user: root
29     - group: root
30     - mode: 644
31     - backup: minion
32     - watch_in:    # 谁监控我「我被谁监控」
33       - service: mariadb-service
34 
35   service.running:
36     - name: mariadb.service
37     - enable: True
38     - restart: True

 

4.3.1. 执行SLS

1 [root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb test=True  # 测试是否可行 【查看返回信息】
2 [root@salt100 lamp2]# [root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb  # 查看执行结果

 

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

 

你可能感兴趣的:(Saltstack_使用指南11_配置管理-状态之间依赖关系)