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 檔案。 |
程序
結果
下一步
將 Puppet 元件新增至所需雲端範本。
- 在 Cloud Assembly 的 [雲端範本] 下,選取雲端範本功能表上 [內容管理] 標題下的 Puppet,然後將 Puppet 元件拖曳至畫布。
- 在右側的窗格上輸入 Puppet 內容。
內容 說明 Master 輸入與此雲端範本搭配使用的 Puppet 主要機器的名稱。 環境 選取 Puppet 主要機器的環境。 角色 選取要與此雲端範本搭配使用的 Puppet 角色。 代理程式執行間隔 希望 Puppet 代理程式輪詢 Puppet 主要機器以取得組態詳細資料的頻率,該組態詳細資料將套用至與此雲端範本相關的已部署虛擬機器。 - 按一下右窗格中的 [程式碼] 索引標籤,以檢視 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
在某些情況下,依預設,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 位址的目前行為。