您可以將 Ansible Tower 與 Cloud Assembly 整合,以支援已部署資源的組態管理。設定整合後,您可以透過雲端範本編輯器將 Ansible Tower 虛擬元件新增至新部署或現有部署中。
必要條件
- 為非管理員使用者授與存取 Ansible Tower 的適當權限。有兩個選項可用於大多數組態。選擇最適合您組態的一個選項。
- 在組織層級授與使用者「詳細目錄管理員」和「工作範本管理員」角色。
- 授與使用者對特定詳細目錄的管理員權限,以及對用於佈建的所有工作範本的「執行」角色。
-
您必須在 Ansible Tower 中設定適當的認證和範本,以便與您的部署搭配使用。範本可以是工作範本,也可以是工作流程範本。工作範本定義了要與部署搭配使用的詳細目錄和 playbook。工作範本與 playbook 之間存在 1:1 對應。Playbook 使用類似 YAML 的語法來定義與範本相關聯的工作。對於大多數一般部署,使用機器認證進行驗證。
工作流程範本允許使用者建立由連結在一起的工作範本、專案同步和詳細目錄同步之任意組合所組成的序列,以便您將這些序列作為一個單位執行。Ansible Tower 工作流程視覺化工具可協助使用者設計工作流程範本。對於大多數一般部署,您可以使用機器認證進行驗證。
- 登入 Ansible Tower,然後導覽至 [範本] 區段。
- 選取 [新增工作範本]。
- 選取您已建立的認證。這些是將由 Ansible Tower 管理之機器的認證。對於每個工作範本,可以有一個認證物件。
- 在 [限制] 選取項目中,選取 [啟動時提示]。這可確保工作範本針對從 Cloud Assembly 佈建或取消佈建的節點執行。如果未選取此選項,則會在部署包含工作範本的藍圖時顯示 [未設定限制] 錯誤。
- 選取 [新增工作流程範本]。
- 選取已建立的認證,然後定義詳細目錄。透過工作流程視覺化工具,可以設計工作流程範本。
對於工作流程或工作範本的 [限制] 方塊,通常可以選取 [啟動時提示]。此選取項目可確保工作或工作流程範本針對從 Cloud Assembly 佈建或取消佈建的節點執行。
- 您可以在 Ansible Tower 的 [工作] 索引標籤上,檢視從 Cloud Assembly 叫用的工作範本或工作流程範本執行。
程序
結果
Ansible Tower 可在雲端範本中使用。
下一步
將 Ansible Tower 元件新增至所需雲端範本。必須針對整合帳戶中指定的使用者指定適用的工作範本及執行權限。
- 在雲端範本畫布頁面上,選取藍圖選項功能表上 [組態管理] 標題下的 Ansible,然後將 Ansible Tower 元件拖曳至畫布。
- 使用右側面板設定適當的 Ansible Tower 內容,例如工作範本。
將 Ansible Tower 動態磚新增到雲端範本時,vRealize Automation 會在 Ansible Tower 中為已連結的虛擬機器建立主機項目。依預設,vRealize Automation 將使用虛擬機器的資源名稱來建立主機項目,但您可以使用藍圖 YAML 中的 hostName
內容指定任何名稱。為了與機器通訊,vRealize Automation 將針對主機項目建立主機變數 ansible_host: IP Address
。可以覆寫預設行為以使用 FQDN 設定通訊,方法是在 hostVariables
下指定關鍵字 ansible_host
並提供 FQDN 作為其值。下列 YAML 程式碼片段顯示如何設定主機名稱和 FQDN 通訊的範例:
Cloud_Ansible_Tower_1: type: Cloud Ansible Tower properties: host: name of host account: name of account hostName: resource name hostVariables: ansible_host:Host FQDN
在此範例中,可以透過提供 FQDN 來覆寫預設 ansible_host
值。這對於希望 Ansible Tower 使用 FQDN 連線到主機電腦的使用者來說,可能非常有用。
YAML 中 hostVariables
的預設值將為 ansible_host:IP_address
,並且 IP 位址可用來與伺服器進行通訊。
如果 Ansible Tower 的 YAML 計數內容大於 1,則主機名稱可以對應到相應虛擬機器的任何內容。下列範例顯示了名為 Ubuntu-VM 的虛擬機器資源的對應 (如果要將其位址內容對應至主機名稱)。
hostname: '${resource.Ubuntu-VM.address[count.index]}'
將 Ansible Tower 元件新增至雲端範本時,可以指定要在雲端範本 YAML 中呼叫的工作範本。此外,還可以指定工作流程範本,或工作範本和工作流程範本的組合。如果您不指定範本類型,則 vRealize Automation 預設會假設您要呼叫工作範本。
下列 YAML 程式碼片段顯示的範例說明如何在 Ansible Tower 雲端範本中呼叫工作與工作流程範本的組合。
Cloud_Ansible_1: type: Cloud.Ansible.Tower properties: host: ‘${resource.CentOS_Machine.*}’ account: maxConnectionRetries: 2 maxJobRetries: 2 templates: provision: - name: My workflow type: workflow - name: My job template
我們新增了 maxConnectionsRetries
和 maxJobRetries
來處理 Ansible 相關故障。雲端範本接受自訂值,如果沒有提供值,則會使用預設值。maxConnectionRetries
的預設值為 10,而 maxJobRetries
的預設值為 3。
Ansible Tower 整合的 Cloud Assembly 雲端範本包括具有 true 或 false 值的 useDefaultLimit
內容,用於定義 Ansible 範本的執行位置。Ansible 範本可以是工作範本,也可以是工作流程範本。如果此值設為 true,則會針對 Ansible [範本] 頁面上 [限制] 方塊中指定的機器執行指定的範本。如果此值設為 false,則會針對已佈建的機器執行範本,但使用者應勾選 Ansible Tower [範本] 頁面上的 [啟動時提示] 核取方塊。依預設,此內容的值為 false。下列 YAML 範例顯示 useDefaultLimit
內容在雲端範本中的顯示方式。
templates: provision: - name: ping aws_credentials type: job useDefaultLimit: false extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'
此外,如上述範例所示,您可以使用 extraVars
內容指定額外變數或調查變數。此功能對於執行需要輸入的範本來說很有用。如果使用者維持了調查變數,則必須在雲端範本的 extraVars
區段中傳遞該變數,以避免發生錯誤。