您可以將 Ansible Tower 與 Cloud Assembly 整合,以支援已部署資源的組態管理。設定整合後,您可以透過雲端範本編輯器將 Ansible Tower 虛擬元件新增至新部署或現有部署中。

必要條件

  • 為非管理員使用者授與存取 Ansible Tower 的適當權限。有兩個選項可用於大多數組態。選擇最適合您組態的一個選項。
    • 在組織層級授與使用者「詳細目錄管理員」和「工作範本管理員」角色。
    • 授與使用者對特定詳細目錄的管理員權限,以及對用於佈建的所有工作範本的「執行」角色。
  • 您必須在 Ansible Tower 中設定適當的認證和範本,以便與您的部署搭配使用。範本可以是工作範本,也可以是工作流程範本。工作範本定義了要與部署搭配使用的詳細目錄和 playbook。工作範本與 playbook 之間存在 1:1 對應。Playbook 使用類似 YAML 的語法來定義與範本相關聯的工作。對於大多數一般部署,使用機器認證進行驗證。

    工作流程範本允許使用者建立由連結在一起的工作範本、專案同步和詳細目錄同步之任意組合所組成的序列,以便您將這些序列作為一個單位執行。Ansible Tower 工作流程視覺化工具可協助使用者設計工作流程範本。對於大多數一般部署,您可以使用機器認證進行驗證。

    1. 登入 Ansible Tower,然後導覽至 [範本] 區段。
    2. 選取 [新增工作範本]。
      • 選取您已建立的認證。這些是將由 Ansible Tower 管理之機器的認證。對於每個工作範本,可以有一個認證物件。
      • 在 [限制] 選取項目中,選取 [啟動時提示]。這可確保工作範本針對從 Cloud Assembly 佈建或取消佈建的節點執行。如果未選取此選項,則會在部署包含工作範本的藍圖時顯示 [未設定限制] 錯誤。
    3. 選取 [新增工作流程範本]。
      • 選取已建立的認證,然後定義詳細目錄。透過工作流程視覺化工具,可以設計工作流程範本。

      對於工作流程或工作範本的 [限制] 方塊,通常可以選取 [啟動時提示]。此選取項目可確保工作或工作流程範本針對從 Cloud Assembly 佈建或取消佈建的節點執行。

  • 您可以在 Ansible Tower 的 [工作] 索引標籤上,檢視從 Cloud Assembly 叫用的工作範本或工作流程範本執行。

程序

  1. 選取基礎結構 > 連線 > 整合,然後按一下新增整合
  2. 按一下 [Ansible Tower]。
    隨即出現 [Ansible 組態] 頁面。
  3. 輸入主機名稱 (可以是 IP 位址),以及 Ansible Tower 執行個體的其他所需資訊。
  4. 針對適用的 Ansible Tower 執行個體,輸入以使用者介面為基礎的驗證使用者名稱密碼
  5. 按一下驗證來驗證整合。
  6. 為整合輸入適當的名稱說明
  7. 按一下新增

結果

Ansible Tower 可在雲端範本中使用。

下一步

將 Ansible Tower 元件新增至所需雲端範本。必須針對整合帳戶中指定的使用者指定適用的工作範本及執行權限。

  1. 在雲端範本畫布頁面上,選取藍圖選項功能表上 [組態管理] 標題下的 Ansible,然後將 Ansible Tower 元件拖曳至畫布。
  2. 使用右側面板設定適當的 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      

我們新增了 maxConnectionsRetriesmaxJobRetries 來處理 Ansible 相關故障。雲端範本接受自訂值,如果沒有提供值,則會使用預設值。maxConnectionRetries 的預設值為 10,而 maxJobRetries 的預設值為 3。

備註: 舊版 vRealize Automation 支援僅使用雲端範本中的 jobTemplate 架構執行工作範本。jobTemplate 現已過時,並且可能會在未來版本中移除。目前,使用 jobTemplate 內容時將會繼續按預期運作。若要執行工作流程範本並使用其他功能,建議使用範本架構。

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 區段中傳遞該變數,以避免發生錯誤。