在建立映像之前,先取消布建或一般化 VM 來移除電腦特定資訊

警告

本文參考 CentOS,這是接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據此考量您的使用方式和規劃。

除非您特別想要建立沒有計算機規格資訊的映像,例如使用者帳戶,否則在 Azure Compute Gallery 中建立映像不需要將 VM 一般化或取消布建。 在資源庫外部建立受控映像時仍然需要先進行一般化。

一般化會移除機器的特定資訊,讓映像可用來建立多個 VM。 一旦將 VM 一般化或取消佈建,您就必須讓平台知道,以便正確設定開機順序。

重要

一旦您在 Azure 中將 VM 標示為 generalized,就無法重新啟動 VM。

必要條件

Linux

為 Azure 準備 Linux 映像的散發特定指示可在這裡取得:

下列指示只涵蓋將 VM 設定為一般化。 建議您遵循生產工作負載的散發特定指示。

首先使用 Azure VM 代理程式來取消佈建 VM,以將電腦特定的檔案和資料刪除。 在來源 Linux VM 上使用 waagent 命令搭配 -deprovision+user 參數。 如需詳細資訊,請參閱 Azure Linux 代理程式使用者指南。 這個流程是不可逆的。

  1. 使用 SSH 用戶端連線到 Linux VM。

  2. 在 SSH 視窗中,輸入下列命令:

       sudo waagent -deprovision+user
    

    注意

    只在您要擷取作為映像的 VM 上執行這個命令。 此命令不能保證映像檔中的所有機密資訊都會清除完畢或適合轉散發。 +user 參數也會移除最後一個佈建的使用者帳戶。 若要在 VM 中保留使用者帳戶認證,僅使用 -deprovision

  3. 輸入 y 繼續。 您可以新增 -force 參數,便不用進行此確認步驟。

  4. 在命令完成之後,請輸入exit 關閉 SSH 用戶端。 此時 VM 仍會在執行中。

    az vm deallocate 解除配置您取消佈建的 VM,以便將其一般化。

    az vm deallocate \
       --resource-group myResourceGroup \
       --name myVM
    

    然後 VM 必須在平台上標示為已一般化。

    az vm generalize \
       --resource-group myResourceGroup \
       --name myVM
    

Windows

Sysprep 會移除您的所有個人帳戶與安全性資訊,然後準備使用機器做為映像。 如需 Sysprep 的詳細資訊,請參閱 Sysprep 概觀

請確定 Sysprep 支援電腦上執行的伺服器角色。 如需詳細資訊,請參閱伺服器角色的 Sysprep 支援不支援的案例

重要

在 VM 中執行 Sysprep 之後,該 VM 便會被視為「已一般化」,而且無法重新啟動。 將 VM 一般化的程序是無法復原的。 如果您需要讓原始 VM 正常運作,您應該建立 OS 磁碟的快照集、從快照集建立 VM,然後將該 VM 複本一般化。

Sysprep 需要磁碟處於完全解密狀態。 如果您已在 VM 上啟用了加密,請先停用加密再執行 Sysprep。

如果您打算在第一次將虛擬硬碟 (VHD) 上傳到 Azure 之前,先執行 Sysprep,請確定您已準備好 VM

我們在 sysprep 步驟中不支援自訂回應檔案,因此您不應該搭配 sysprep 命令使用 "/unattend:answerfile" 參數。

當從一般化映像建立 Windows VM 時,Azure 平台會將 ISO 檔案掛接至 DVD-ROM。 基於這個理由,DVD-ROM 必須在一般化映像的 OS 中啟用。 如果停用 DVD-ROM,則 Windows VM 會停滯在全新體驗 (OOBE) 的程序中。

若要將您的 Windows VM 一般化,請依照下列步驟執行:

  1. 登入您的 Windows VM。

  2. 開啟命令提示字元視窗,以系統管理員身分執行。

  3. 刪除 panther 目錄 (C:\Windows\Panther)。

  4. 確認 CD/DVD-ROM 是否已啟用。 如果停用 DVD-ROM,則 Windows VM 會停滯在全新體驗 (OOBE) 的程序中。

      Registry key Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom\start (Value 4 = disabled, expected value 1 = automatic) Make sure it is set to 1.
    

    注意

    驗證是否套用任何限制卸除式儲存體裝置存取的原則 (例如:計算機設定\系統管理範本\系統\卸除式儲存設備存取\所有卸除式儲存類別:拒絕所有存取)

  5. 然後將目錄變更為 %windir%\system32\sysprep,然後執行:

    sysprep.exe /generalize /shutdown
    
  6. 當 Sysprep 完成 VM 一般化時,VM 將會關閉。 不要重新啟動 VM。

    在 Sysprep 完成後,請將虛擬機器的狀態設定為 [已一般化]

    Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized