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

如果使用 vSphere,則必須設定雲端 Proxy。

必要條件

  • 為非管理員使用者授與存取 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. 如果需要雲端 Proxy,請按一下新增雲端 Proxy,然後輸入所需資訊。通常,僅在使用 vSphere 時,才需要雲端 Proxy。請參閱在 Cloud Assembly 中將雲端 Proxy 新增至 vCenter Server
  6. 按一下驗證來驗證整合。
  7. 為整合輸入適當的名稱說明
  8. 按一下新增

結果

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

下一步

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

  1. 在雲端範本畫布頁面上,選取藍圖選項功能表上 [組態管理] 標題下的 Ansible,然後將 Ansible Tower 元件拖曳至畫布。
  2. 使用右側面板設定適當的 Ansible Tower 內容,例如工作範本。

將 Ansible Tower 動態磚新增到雲端範本時,vRealize Automation Cloud 會在 Ansible Tower 中為已連結的虛擬機器建立主機項目。依預設,vRealize Automation Cloud 將使用虛擬機器的資源名稱來建立主機項目,但您可以使用藍圖 YAML 中的 hostName 內容指定任何名稱。為了與機器通訊,vRealize Automation Cloud 將針對主機項目建立主機變數 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 Cloud 預設會假設您要呼叫工作範本。

下列 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 Cloud 支援僅使用雲端範本中的 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 區段中傳遞該變數,以避免發生錯誤。