安裝並整合 SaltStack Config 服務後,您還需要在打算使用 SaltStack Config 進行管理的任何節點上安裝、執行和登錄 Salt 部屬節點服務。可以使用 vRealize Automation 雲端範本將 Salt 部屬節點服務部署到您的節點,也可以透過 Secure Shell (SSH) 安裝該服務以進行部署。
Salt 及其與 SaltStack Config 的關係
SaltStack Config 在 Salt 上執行,Salt 是一個以 Python 為基礎的開放原始碼遠端執行架構,用於:
- 組態管理
- 自動化
- 佈建
- 協調
Salt 是 SaltStack Config 核心功能的基礎技術。SaltStack Config 可增強並延伸 Salt,從而提供其他功能和特性以提高易用性。
Salt 使用控制器-用戶端模式,在此模式中,控制器向用戶端發出命令,而用戶端負責執行命令。在 Salt 生態系統中,控制器是執行 Salt 主節點服務的伺服器。它會向一或多個 Salt 部屬節點發出命令,這些部屬節點是指執行 Salt 部屬節點服務且已向該特定主節點登錄的節點。
用於說明 Salt 的另一種方式是發佈者-訂閱者模式。主節點發佈需要執行的工作,並且部屬節點訂閱這些工作。當某個特定工作套用至該部屬節點時,即會執行此工作。當部屬節點完成執行工作後,它會將工作傳回資料傳送回主節點。
部屬節點是執行 salt-minion 服務的節點。該服務會接聽 Salt 主節點的命令並執行請求的工作。可以從 vRealize Automation 雲端範本部署部屬節點。
必須先在要管理的所有節點上安裝 Salt 部屬節點服務,才能開始使用 SaltStack Config 進行組態管理。此外,還必須透過向 SaltStack Config 傳送並接受部屬節點的金鑰來登錄部屬節點。
開始之前
- 安裝並設定 SaltStack Config,然後將其與 vRealize Automation 整合。
- 透過 SaltStack Config 管理的節點必須能夠連線到 Salt 主節點,並且必須與 SaltStack Config 整合點和 Salt 主節點位於相同的網路上。
- 部署到私人網路的 vSphere 機器必須能夠起始與 SaltStack Config 整合和 Salt 主節點的連線。
透過 SSH 安裝 Salt 部屬節點服務
使用 SSH 安裝 Salt 部屬節點服務的程序取決於在這些節點上執行的作業系統。
- 如需在 RedHat Linux 或 CentOS 上安裝 Salt 部屬節點服務的相關資訊,請參閱所需的 SaltStack Config 相依性。
- 對於其他作業系統,請參閱 http://repo.saltstack.com/。
- 透過在
/etc/salt/minion.d
目錄中建立master.conf
檔案,將每個部屬節點設定為與主節點進行通訊。在此檔案中,提供主節點的 IP 位址。例如:master: 192.0.2.1
- 啟動部屬節點服務:
sudo systemctl enable salt-minion
sudo systemctl start salt-minion
- 針對其餘的所有節點重複上述步驟。
將這些部屬節點檔案設定為指向 Salt 主節點後,在 [部屬節點金鑰] 工作區中接受 SaltStack Config 服務中的部屬節點金鑰。
使用 vRealize Automation 雲端範本安裝 Salt 部屬節點服務
若要使用雲端範本部署 Salt 部屬節點服務,您必須能夠存取並熟練使用 cloud-init (Linux) 或 Cloudbase-init (Windows)。若要將 Salt 部屬節點新增至針對 SaltStack Config 整合設定的 Salt 主節點,雲端範本中的虛擬機器必須支援 cloud-init (Linux) 或 Cloudbase-init (Windows)。
以下章節說明了如何使用雲端範本部署 Salt 部屬節點服務。
SaltStackConfiguration 內容群組
在 vRealize Suite Lifecycle Manager 中安裝和設定 SaltStack Config 服務的過程中,會建立名為 SaltStackConfiguration 的 vRealize Automation 內容群組。在 vRealize Automation 雲端範本或部署中設定 SaltStack Config 整合時,將使用 SaltStackConfiguration 內容群組值。
也可以在 vRealize Automation 範本 (先前稱為藍圖) 之以 cloud-init 或 Cloudbase-init 為基礎的組態中使用這些值來安裝部屬節點。SaltStackConfiguration 中的兩個內容包括:masterAddress (與 SaltStack Config 整合點上的主機名稱設定相符) 和 masterFingerprint。範例 SaltStackConfiguration 內容群組如下所示。
將部屬節點新增至針對 vRealize Automation 設定的 Salt 主節點
安裝 SaltStack Config 時,會指定 Salt 主節點 IP 位址。從 vRealize Automation 雲端範本部署部屬節點時,會使用該主節點 IP 位址作為 masterAddress 內容。
可以透過在 vRealize Automation 雲端範本或部署中使用 cloud-init 或 Cloudbase-init 指令碼來安裝和部署部屬節點。也可以使用映像對應表示使用其中一種格式的雲端組態指令碼。若要將 Salt 部屬節點新增至與 vRealize Automation SaltStack Config 整合相關聯的 Salt 主節點,目標機器必須支援 cloud-init (Linux) 或 Cloudbase-init (Windows)。vRealize Automation 雲端組態指令碼支援這兩種格式。
為雲端範本中的機器資源設定 minionId 值和 cloudConfig 值,並參考內容群組 SaltStackConfiguration。將在 vRealize Suite Lifecycle Manager 中安裝和設定 SaltStack Config 服務期間建立 SaltStackConfiguration 內容群組。其中包含 masterAddress 和 masterFingerprint 內容。
minionId 值必須與在雲端範本代碼的 cloudConfig
區段中為機器 /salt/minion_id
指定的值相符。
- 從雲端範本代碼呼叫的 vRealize Automation 映像
- 從雲端範本代碼呼叫的雲端組態指令碼
- 直接新增至雲端範本代碼的雲端組態指令碼內容
附注:部署包含 Salt 部屬節點的雲端範本時,如果部署在 Cloud Assembly 中不可見,您可以使用 Service Broker 服務來顯示部署。
範例 - Linux 系統的部署和 cloud-init
resources: Salt-Minion: type: Cloud.Machine properties: image: Ubuntu-18 flavor: medium constraints: - tag: 'env:vsphere' cloudConfig: | #cloud-config hostname: ${input.saltminionhostname} users: - name: ${input.user} sudo: ['ALL=(ALL) NOPASSWD:ALL'] groups: sudo shell: /bin/bash runcmd: - PASS=${input.password} - USER=${input.user} - echo $USER:$PASS | /usr/sbin/chpasswd - sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config - service ssh reload - curl -L https://bootstrap.saltstack.com -o install_salt.sh - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}
範例 - Windows 系統的部署和 Cloudbase-init
formatVersion: 1 inputs: {} resources: WindowsVM-Minion: type: Cloud.vSphere.Machine properties: image: win2016 flavor: medium customizationSpec: Windows minionId: '${resource.WindowsVM-Minion.resourceName}' networks: - network: '${resource.wpnet.id}' name: '${wpnet.name}' assignPublicIpAddress: true cloudConfig: | #ps1_sysnative [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -OutFile C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe -Uri https://repo.saltstack.com/windows/Salt-Minion-3002.2-Py3-AMD64-Setup.exe Start-Process -Wait -FilePath "C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe" -ArgumentList "/S" -PassThru ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master: salt", "master: ${propgroup.SaltStackConfiguration.masterAddress}") | Set-Content -Path C:\salt\conf\minion ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master_finger: ''", "master_finger: '${propgroup.SaltStackConfiguration.masterFingerPrint}'") | Set-Content -Path C:\salt\conf\minion Set-Content -Path C:\salt\conf\minion_id -Value '${resource.WindowsVM-Minion.resourceName}' C:\salt\salt-call.bat service.restart salt-minion wpnet: type: Cloud.Network properties: name: wpnet networkType: existing
如何設定 PowerShell 命令
您可以在雲端範本的 cloudConfig
部分中設定 PowerShell 命令。
- 在 Windows 虛擬機器中安裝 Salt 部屬節點服務。
- 更新部屬節點組態中的 Salt 主節點主機名稱值。
- 更新部屬節點組態中的 Salt 主節點指紋值。
- 將
minion_id
設定為將用於接受 Salt 主節點上的部屬節點的虛擬機器資源名稱。 - 重新啟動部屬節點。
有關部署 Salt 部屬節點的詳細資訊
如需有關使用整合式 SaltStack Config 從 vRealize Automation 雲端範本部署 Salt 部屬節點的替代方法,請參閱〈Cloud Assembly 和 ABX 密碼 (以及如何將其用於安裝 vRealize SaltStack 部屬節點代理程式)〉。
如需通常定義和部署 Cloud Assembly 範本的相關資訊,尤其是您在熟悉 SaltStack 但不熟悉 vRealize Automation 的情況下,請參閱〈設計 vRealize Automation Cloud Assembly 部署〉。