Cloud Assembly 支援與 Puppet Enterprise 組態管理整合。

將 Puppet Enterprise 做為外部系統新增至 Cloud Assembly 時,依預設它在所有專案上均可使用。您可以將其限制為僅限特定專案使用。

若要新增 Puppet Enterprise 整合,您必須具有 Puppet Master 名稱以及 Master 的主機名稱或 IP 位址。

如果需要檢查 Puppet 記錄是否有錯誤或出於資訊目的,您可以在下列位置中找到這些記錄。

說明 記錄位置
與建立及安裝相關的事件的記錄

這些記錄位於已部署機器上的 ` ~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/` 中。

如需完整記錄,請參閱 log.txt 檔案。如需詳細的 Puppet 代理程式記錄,請參閱 https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
與 Puppet 刪除及執行相關的工作的記錄 這些記錄位於 PE 上的 `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/` 中。如需完整記錄,請參閱 log.txt 檔案。

程序

  1. 選取基礎結構 > 連線 > 整合,然後按一下新增整合
  2. 選取 [Puppet]。
  3. 在 [Puppet 組態] 頁面上,輸入所需的資訊。
    為了使 Puppet 整合正常運作,提供的認證必須同時對 SSH 和 API 帳戶有效。此外,指定的作業系統和應用程式使用者帳戶必須具有相同的使用者名稱和密碼。
  4. 按一下驗證來檢查整合。
  5. 按一下新增

結果

Puppet 可與雲端範本搭配使用。

下一步

將 Puppet 元件新增至所需雲端範本。

  1. 在 Cloud Assembly 的 [雲端範本] 下,選取雲端範本功能表上 [內容管理] 標題下的 Puppet,然後將 Puppet 元件拖曳至畫布。
  2. 在右側的窗格上輸入 Puppet 內容。
    內容 說明
    Master 輸入與此雲端範本搭配使用的 Puppet 主要機器的名稱。
    環境 選取 Puppet 主要機器的環境。
    角色 選取要與此雲端範本搭配使用的 Puppet 角色。
    代理程式執行間隔 希望 Puppet 代理程式輪詢 Puppet 主要機器以取得組態詳細資料的頻率,該組態詳細資料將套用至與此雲端範本相關的已部署虛擬機器。
  3. 按一下右窗格中的 [程式碼] 索引標籤,以檢視 Puppet 組態內容的 YAML 程式碼。

將 Puppet 元件新增到雲端範本時,可以將 installMaster 內容新增到 YAML 檔案,以指向 Puppet 安裝主機 (也稱為編譯主機)。此內容的值可以是 Puppet 編譯主機的 IP 位址或主機名稱。透過使用此內容,能夠存取已部署 Puppet 虛擬機器的增強型功能,同時還支援額外的第二天動作。

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
備註: 儘管此處定義的使用者是根使用者,但設定雲端範本時可以使用 sudoers 清單中包含的任何使用者。

在某些情況下,依預設,vRealize Automation 會將部分機器相關資訊作為事實傳遞至 Puppet 虛擬機器。Windows 電腦不支援自訂事實。在 Linux 機器上,預設會傳遞一些資訊,並且使用者可以使用自訂內容傳遞其他資訊。

對於傳遞至 Linux 下 Puppet 機器的內容存在一些限制。主機資源和 Puppet 代理程式上的自訂內容會傳遞到 Puppet 虛擬機器。網路資源上的自訂內容不會傳遞到虛擬機器。傳遞的項目包括簡單內容、布林值內容以及自訂的具名類型和複雜類型,例如具有陣列的巢狀對應。

下列範例顯示如何在主機資源上呼叫各種自訂資源:

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

如果 Puppet 清除命令導致錯誤,在大多數情況下,vRealize Automation 會略過節點的清除錯誤並繼續刪除節點。即使找不到特定節點的憑證,vRealize Automation 也將繼續刪除。如果 vRealize Automation 因某些原因無法繼續刪除節點,您可以在 [部署] 頁面之 [動作] 功能表上按一下 [刪除] 以開啟對話方塊,以便您能夠繼續刪除節點。從雲端範本移除 Puppet 整合,然後將範本套用至部署時,會執行類似的工作流程。此工作流程會觸發如上所述進行處理的節點清除作業。

與 Puppet Enterprise 整合需要公用 IP 位址。如果沒有為 Puppet Enterprise 機器設定公用 IP 位址,則使用第一個 NIC 的 IP 位址。

如果在 vSphere 機器上執行且佈建了 Puppet 的機器的 NIC 具有多個 IP 位址,可以使用雲端範本中的 primaryAddress YAML 內容指定要用於連線的 IP 位址。將 primaryAddress 內容指派給 NIC 時,Puppet 將使用此 NIC 的 IP 位址。只能將一個 NIC 指定為主要 NIC。有關如何使用 primaryAddress 內容的範例,請參閱以下 YAML 程式碼片段。

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

如果沒有為任何虛擬機器 NIC 設定 primaryAddress 內容,則雲端範本邏輯將預設為選取 IP 位址的目前行為。