Saltstack_使用指南10_配置管理-狀態模塊

来源:https://www.cnblogs.com/zhanglianghhh/archive/2019/05/07/10828026.html
-Advertisement-
Play Games

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  # 批量執行

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 開發環境: 開發工具:VS2017 系統:Win10 64位 Skd下載地址: https://dotnet.microsoft.com/download 3個都下載下載,安裝dotnet-sdk-2.2.106-win-x64.exe, dotnet-runtime-2.2.4-win-x64.e ...
  • 一、C#簡介 C#是微軟公司發佈的一種面向對象的、運行於.NET Framework之上的高級程式設計語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、介面、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM ...
  • 1面向對象 類:包含欄位、屬性、函數、構造函數 欄位:存儲數據 屬性:保護欄位 get set 函數:描述對象的行為 構造函數:初始化對象,給對象的每個屬性賦值 面向對象的好處:讓程式具有擴展性 類決定了對象將要擁有的屬性和行為。 1 namespace _07虛方法 2 { 3 class Pro ...
  • 你在為windows10自動更新而煩惱嗎?下麵教你一招如何關閉自動更新 ...
  • 第1節:terminal終端設備終端:鍵盤、滑鼠、顯示器物理終端(/dev/console):控制台console虛擬終端(tty:teletypewriters,/dev/tty# #為[1-6]):tty可以有n個,Ctrl+Alt+F[1-6]圖形終端(/dev/tty7)startx,xwi ...
  • (1)、使用WinSCP工具,實現將Windows的文件上傳到Linux指定目錄下 (1)、輸入主機名、用戶名、密碼,選擇登錄,成功連接至Linux系統 (2)、在左側列表,選擇要上傳文件,單擊右鍵選擇上傳即可 (3)、在右側列表,選擇要下載文件,單擊右鍵選擇下載即可。 註意:主機名:Linux的I ...
  • (1)在登錄黑框中輸入如下命令,讓CentOS 7自動獲取一個IP地址: # dhclient (2)正常情況下不會有任何輸出內容。用如下命令查看獲取到的IP地址: # ip addr 它將返回如圖所示的信息。 ip addr命令就是用來查看IP地址的。這裡請註意Linux操作系統是區分大小寫的。從 ...
  • 1. 說明 下文的案例是根據上一篇文章進行的修改。因此請優先讀取上一章博文內容《Saltstack_使用指南11_配置管理-狀態之間依賴關係》 2. 主機規劃 salt 版本 salt jinja 文檔 Jinja2 文檔 註意事項 修改了master或者minion的配置文件,那麼必須重啟對應的服 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...