1. 主機規劃 salt 版本 狀態模塊文檔 註意事項 修改了master或者minion的配置文件,那麼必須重啟對應的服務。 1.1. 特別註意 1.2. 狀態文件sls講解 2. 常用狀態模塊 2.1. states.pkg 2.2. states.file 2.3. states.servic ...
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
註意事項
修改了master或者minion的配置文件,那麼必須重啟對應的服務。
1.1. 特別註意
1 # 狀態一定要「支持多次執行」 2 # 生產環境不能直接 slat '*' state.highstate 3 # 而是: 4 slat '172.16.1.11' state.highstate test=True 5 # 如果沒問題 6 slat '172.16.1.11' state.highstate 7 # 如果沒問題 8 slat '*' state.highstate 9 10 # 否則:可能造成生產掛了 11 12 註意:- source: salt://lamp/file/httpd.conf 等價為 - source: /srv/salt/lamp/file/httpd.conf 13 表示配置文件的來源,salt:// 在哪個環境就表示哪個環境的根目錄 14 當前是在base的環境,所以根目錄為:/srv/salt/ 15 file_roots: 16 base: 17 - /srv/salt/
1.2. 狀態文件sls講解
1 # 每個聲明ID下麵相同狀態模塊只能有一個【不能重覆使用】 2 # 但可以有多個不同的狀態模塊 3 apache-service: # ID聲明, 高級狀態,ID 必須唯一 4 service.running: # state聲明,狀態證明 【我要使用這個狀態模塊】 5 - name: httpd # 選項聲明 6 file.managed: 7 - name: /etc/httpd/conf/httpd.conf
2. 常用狀態模塊
2.1. states.pkg
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkg.html#module-salt.states.pkg
2.2. states.file
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#module-salt.states.file
2.3. states.service
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.service.html#module-salt.states.service
3. 案例-LAMP架構
3.1. 構思
1 1、安裝軟體包 pkg 2 2、修改配置文件 file 3 3、啟動服務 service 4 # 其中資料庫單獨部署【因為只需要部署一個資料庫即可】
3.2. 資料庫SLS【單獨一個SLS】
1 [root@salt100 lamp]# pwd 2 /srv/salt/lamp 3 [root@salt100 lamp]# ll /srv/salt/lamp/file/my.cnf # 涉及的資料庫配置文件 4 -rw-r--r-- 1 root root 600 Dec 30 17:09 /srv/salt/lamp/file/my.cnf 5 [root@salt100 lamp]# cat mariadb.sls 6 mariadb-installed: 7 pkg.installed: 8 - name: mariadb 9 - name: mariadb-server 10 11 mariadb-config: 12 file.managed: 13 - name: /etc/my.cnf 14 - source: salt://lamp/file/my.cnf 15 # 如下寫法也可以,都可以正常執行。但是不利於後期維護 16 # - source: /srv/salt/lamp/file/my.cnf # 不使用 salt 協議,直接使用絕對路徑 17 - user: root 18 - group: root 19 - mode: 644 20 - backup: minion 21 22 mariadb-service: 23 service.running: 24 # 具體的服務名稱 25 # systemctl status mariadb.service 那麼名稱就為 mariadb.service 或 mariadb 26 - name: mariadb.service # 服務名稱 27 - enable: True # 開機自啟動 28 # - reload: True # 重載入服務, 但 mariadb 沒有該項 29 - restart: True # 重啟服務 30 - watch: 31 # 下文的意思是: 名稱 mariadb-config 中 file 管理的文件發生改變時那麼重啟 mariadb 服務 32 # 也就是說文件 /srv/salt/lamp/file/my.cnf 發生改變時,重啟 mariadb 服務 33 - file: mariadb-config
執行該狀態SLS
1 [root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb test=True # 然後查看返回信息 2 [root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb # 執行,如果上一步無異常的話
3.3. SLS編寫方式一:根據salt模塊編寫【在salt03上生效】
1 [root@salt100 lamp]# pwd 2 /srv/salt/lamp 3 [root@salt100 lamp]# ll 4 total 8 5 -rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls 6 drwxr-xr-x 2 root root 53 Dec 30 19:10 file 7 -rw-r--r-- 1 root root 816 Dec 30 19:11 mariadb.sls 8 [root@salt100 lamp]# ll file/ # 涉及到的配置文件 9 total 80 10 -rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf 11 -rw-r--r-- 1 root root 675 Dec 30 19:10 my.cnf 12 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini 13 [root@salt100 lamp]# cat apache-php.sls # sls 信息 14 ### 根據模塊編寫 15 # yum 包安裝模塊 16 apache-php-installed: 17 pkg.installed: 18 - name: httpd 19 - name: php 20 - name: php-devel 21 - name: mariadb # 資料庫連接客戶端,用於資料庫連接測試 22 - name: php-mysql 23 - name: php-cli 24 - name: php-mbstring 25 26 ### 文件管理模塊----用於管理配置文件 27 # Apache 配置文件 28 apache-config: 29 file.managed: 30 - name: /etc/httpd/conf/httpd.conf 31 - source: salt://lamp/file/httpd.conf 32 - user: root 33 - group: root 34 - mode: 644 35 - backup: minion 36 37 # PHP 配置文件 38 php-config: 39 file.managed: 40 - name: /etc/php.ini 41 - source: salt://lamp/file/php.ini 42 - user: root 43 - group: root 44 - mode: 644 45 - backup: minion 46 47 ### 服務管理模塊----是否開機自啟動等等 48 apache-service: 49 service.running: 50 - name: httpd 51 - enable: True 52 - reload: True 53 - watch: 54 # 下文的意思是: 名稱 apache-config 中 file 管理的文件發生改變時那麼重載入 httpd 服務 55 # 也就是說文件 /srv/salt/lamp/file/httpd.conf 發生改變時,重載入 httpd 服務 56 - file: apache-config
執行該狀態SLS
1 [root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php test=True 2 [root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php # 執行,如果上一步無異常的話
3.4. SLS編寫方式二:根據安裝的服務編寫【在salt01、salt02上生效】
比如根據Apache服務、PHP等,進行分類編寫
1 [root@salt100 lamp]# pwd 2 /srv/salt/lamp 3 [root@salt100 lamp]# ll 4 total 12 5 -rw-r--r-- 1 root root 908 Dec 30 19:29 apache-php2.sls 6 -rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls 7 drwxr-xr-x 2 root root 53 Dec 30 19:10 file 8 -rw-r--r-- 1 root root 816 Dec 30 19:11 mariadb.sls 9 [root@salt100 lamp]# ll file/ # 涉及到的配置文件 10 total 80 11 -rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf 12 -rw-r--r-- 1 root root 675 Dec 30 19:10 my.cnf 13 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini 14 [root@salt100 lamp]# cat apache-php2.sls # sls 信息 15 ### 根據服務編寫 16 # Apache 服務 17 apache-service: 18 pkg.installed: 19 - name: httpd 20 21 file.managed: 22 - name: /etc/httpd/conf/httpd.conf 23 - source: salt://lamp/file/httpd.conf 24 - user: root 25 - group: root 26 - mode: 644 27 - backup: minion 28 29 service.running: 30 - name: httpd 31 - enable: True 32 - reload: True 33 - watch: 34 # 下文的意思是: 名稱 apache-service 中 file 管理的文件發生改變時那麼重載入 httpd 服務 35 # 也就是說文件 /srv/salt/lamp/file/httpd.conf 發生改變時,重載入 httpd 服務 36 - file: apache-service 37 38 # PHP 服務 39 php-service: 40 pkg.installed: 41 - name: php 42 - name: php-devel 43 - name: mariadb # 資料庫連接客戶端,,用於資料庫連接測試 44 - name: php-mysql 45 - name: php-cli 46 - name: php-mbstring 47 48 file.managed: 49 - name: /etc/php.ini 50 - source: salt://lamp/file/php.ini 51 - user: root 52 - group: root 53 - mode: 644 54 - backup: minion
執行該狀態SLS
1 [root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 test=True # 然後查看返回信息 2 [root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 # 查看執行結果 3 [root@salt100 lamp]# salt -L 'salt01,salt02' state.sls lamp.apache-php2 # 批量執行