您可在參考機器上安裝客體代理程式,以在部署後進一步自訂機器。您可以使用保留的客體代理程式自訂內容執行基本自訂 (例如,新增和格式化磁碟),或者您可以針對客體代理程式建立自己的自訂指令碼,以在已佈建機器的客體作業系統內執行。

部署完成及自訂規格執行後 (如果已提供),客體代理程式會建立包含所有已部署機器自訂內容的 XML 檔案 c:\VRMGuestAgent\site\workitem.xml,並使用客體代理程式自訂內容完成指派給它的任何工作,然後從已佈建機器中刪除其本身。

您可以寫入自己的自訂指令碼以在已部署機器上執行客體代理程式,並使用機器藍圖上的自訂內容指定這些指令碼的位置和執行順序。也可以使用機器藍圖上的自訂內容,將自訂內容值做為參數傳遞至指令碼。

例如,可以使用客體代理程式在已部署機器上做出下列自訂:

  • 變更 IP 位址

  • 新增或格式化磁碟機

  • 執行安全指令碼

  • 初始化其他代理程式,例如,Puppet 或 Chef。

您也可以提供一個加密字串,做為命令列引數中的自訂內容。這可讓您儲存客體代理程式可解密並理解為有效命令列引數的加密資訊。

備註︰

在針對 Linux Kickstart 和 PXE 佈建 (相對於工作項目中的 vRealize Automation 自訂內容) 執行的建立和複製動作期間,Linux 客體代理程式將指派靜態 IP。指派靜態 IP 時,客體代理程式無法容納較新的一致網路命名配置 (例如在 Ubuntu 16.x 中)。

自訂指令碼無需在機器本機上安裝。只要已佈建機器具有指令碼位置的網路存取權,客體代理程式即可存取並執行指令碼。這可降低維護成本,原因在於您無需重建所有範本即可更新指令碼。

您可以透過在保留區、藍圖或客體代理程式指令碼中指定資訊,為要佈建的虛擬機器設定安全性設定。如果要佈建的機器需要客體代理程式,您必須新增安全性規則,其中包含保留區或藍圖的該項需求。例如,如果您使用的預設安全性原則會拒絕所有機器之間的通訊,並且仰賴個別的安全性原則來允許特定機器之間的通訊,在自訂階段,客體代理程式可能無法與 vRealize Automation 通訊。若要避免在機器佈建期間發生此問題,請使用會在自訂階段允許通訊的預設安全性原則。

如果您選擇在已佈建機器上安裝用於執行自訂指令碼的客體代理程式,藍圖必須包含適當的客體代理程式自訂內容。例如,如果您在用於複製的範本上安裝客體代理程式、建立變更已佈建機器之 IP 位址的自訂指令碼,並將指令碼置於共用位置,需要在藍圖中加入許多自訂內容。

表格 1. 用於變更包含客體代理程式之已佈建機器的 IP 位址的自訂內容

自訂內容

說明

VirtualMachine.Admin.UseGuestAgent

設為 true,以在已佈建機器啟動時初始化客體代理程式。

VirtualMachine.Customize.WaitComplete

設定為 True 可防止佈建工作流程在所有自訂完成之前將工作項目傳送給客體代理程式。

VirtualMachine.SoftwareN.ScriptPath

指定應用程式安裝指令碼的完整路徑。該路徑必須是客體作業系統所看到的有效絕對路徑,且必須包含指令碼檔案名稱。

透過在路徑字串中插入 {CustomPropertyName},您可以將自訂內容值做為參數傳遞至指令碼。例如,如果有名為 ActivationKey 且其值為 1234 的自訂內容,指令碼路徑為 D:\InstallApp.bat –key {ActivationKey}。客體代理程式執行命令 D:\InstallApp.bat –key 1234。隨後即可對指令碼檔案進行程式設計,以接受並使用此值。

插入 {Owner} 可將機器擁有者名稱傳遞至指令碼。

您也可透過在路徑字串中插入 {YourCustomProperty},將自訂內容值做為參數傳遞至指令碼。例如,輸入值 \\vra-scripts.mycompany.com\scripts\changeIP.bat 會從共用位置執行 changeIP.bat 指令碼,但是輸入值 \\vra-scripts.mycompany.com\scripts\changeIP.bat {VirtualMachine.Network0.Address} 會執行 changeIP 指令碼,但也會將 VirtualMachine.Network0.Address 內容的值做為參數傳遞至指令碼。

VirtualMachine.ScriptPath.Decrypt

允許 vRealize Automation 取得以格式正確的 VirtualMachine.SoftwareN.ScriptPath 自訂內容陳述式形式傳遞至 gugent 命令列的加密字串。

您可以在命令列引數中以自訂內容的形式提供加密字串,例如您的密碼。這可讓您儲存可由客體代理程式解密並視為有效命令列引數來瞭解的加密資訊。例如,VirtualMachine.Software0.ScriptPath = c:\dosomething.bat password 自訂內容字串就不安全,因為其中包含實際密碼。

若要將此密碼加密,您可以建立 vRealize Automation 自訂內容,例如 MyPassword = password,然後選取可用的核取方塊來啟用加密。客體代理程式會將 [MyPassword] 項目解密到自訂內容 MyPassword 中的值,然後以 c:\dosomething.bat password 的形式執行指令碼。

  • 建立自訂內容 MyPassword = password,其中 password 是實際密碼值。選取可用的核取方塊來啟用加密。

  • 設定自訂內容 VirtualMachine.ScriptPath.DecryptVirtualMachine.ScriptPath.Decrypt = true

  • 設定自訂內容 VirtualMachine.Software0.ScriptPathVirtualMachine.Software0.ScriptPath = c:\dosomething.bat [MyPassword]

如果您將 VirtualMachine.ScriptPath.Decrypt 設定為 false,或是未建立 VirtualMachine.ScriptPath.Decrypt 自訂內容,則不會解密方括弧 ([ 和 ]) 內的字串。

如需有關可與客體代理程式搭配使用之自訂內容的詳細資訊,請參閱 vRealize Automation 客體代理程式的自訂內容