Saltstack_使用指南11_配置管理-狀態之間依賴關係

 

1. 說明

下文的案例是根據上一篇文章進行的修改。所以請優先讀取上一篇文章內容《Saltstack_10_配置管理-狀態模塊php

而且目錄進行了變化,從 /srv/salt/lamp 變爲了 /srv/salt/lamp2 。html

 

另外:下文沒有根據模塊編寫,而是根據服務進行編寫的。其中數據庫也是單獨部署的。mysql

 

2. 主機規劃

 

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的配置文件,那麼必須重啓對應的服務。sql

 

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. 部署架構

 

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  # 查看執行結果

 

相關文章
相關標籤/搜索