您可以使用 vSphere Auto Deploy 將自訂指令碼與某個 vSphere Auto Deploy 規則建立關聯,藉以設定一或多個主機。

這些指令碼會接在主機的初始 ESXi 開機工作流程後按字母順序執行。

必要條件

  • 請確認您要與 vSphere Auto Deploy 規則建立關聯的指令碼服務包為 .tgz 格式、最大不超過 10 MB,而且是以 Python 或 BusyBox ash 指令碼語言撰寫。

程序

  1. PowerCLI 工作階段中,執行 Connect-VIServer cmdlet 以連線至 vSphere Auto Deploy 向其登錄的 vCenter Server 系統。
    Connect-VIServer ipv4_or_ipv6_address
    cmdlet 可能會傳回伺服器憑證警告。在生產環境中,請確保不會產生伺服器憑證警告。在開發環境中,可以忽略此警告。
  2. 執行 Add-ScriptBundle cmdlet,新增包含必要指令碼的指令碼服務包至 vSphere Auto Deploy 詳細目錄。
    Add-ScriptBundle c:/temp/MyScriptBundle.tgz
    指令碼服務包的名稱 (不含副檔名 .tgz) 是指令碼服務包項目的名稱識別碼或物件。您可以對 Add-ScriptBundle cmdlet 使用 -Update 參數來更新現有指令碼服務包。
  3. (選擇性) 執行 Get-ScriptBundle cmdlet 以確認指令碼服務包已新增至 vSphere Auto Deploy 詳細目錄。
  4. 定義將具有特定屬性 (例如 IP 位址範圍) 的主機指派給指令碼服務包的規則。
    New-DeployRule -Name "testrule4" -Item "MyScriptBundle" -Pattern "vendor=Acme,Zven", "ipv4=192.XXX.1.10-192.XXX.1.20"

    如果名稱中包含空格,則必須使用雙引號,否則可自行選擇是否使用雙引號。指定 -AllHosts (而非模式),可將項目套用到所有主機。

    您會建立名為 testrule4 的規則。該規則會將名為 My Script Bundle 的指令碼服務包指派給廠商為 Acme 或 Zven 且 IP 位址在指定範圍內的所有主機。您可以使用指令碼服務包 (或 Get-ScriptBundle cmdlet 所傳回物件) 的名稱識別碼,識別要與規則建立關聯的指令碼服務包。
  5. 將規則新增到規則集。
    Add-DeployRule testrule4
    依預設,該規則會新增到工作規則集和作用中規則集。如果使用 NoActivate 參數,則工作規則集不會變為作用中規則集。

下一步

  • 對於已使用 vSphere Auto Deploy 佈建的主機,請執行符合性測試和修復作業,以使用新的指令碼來佈建這些主機。請參閱測試和修復規則符合性
  • 開啟未佈建的主機,以使用新的指令碼進行佈建。