使用 Windows Sysprep 搭配 EC2Launch v2 建立 AMI - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Windows Sysprep 搭配 EC2Launch v2 建立 AMI

當您從已安裝 EC2Launch v2 代理程式的執行個體建立映像時,EC2Launch v2 會在映像準備就緒時執行特定任務。這包括使用 Windows Sysprep。如需詳細資訊,請參閱Windows Sysprep 階段

Windows Sysprep 操作

Windows Sysprep 和 EC2Launch v2 會在準備映像時執行下列動作。

  1. 當您在 EC2Launch settings (EC2Launch 設定) 對話方塊中選擇 Shutdown with Sysprep (使用 Sysprep 關機) 時,系統會執行 ec2launch sysprep 命令。

  2. EC2Launch v2 透過讀取位於 unattend.xml 的登錄值來編輯 HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName 檔案的內容。檔案位於以下目錄:C:\ProgramData\Amazon\EC2Launch\sysprep

  3. 系統會執行 BeforeSysprep.cmd。此命令會建立一個登錄機碼,如下所示:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

    除非重新啟用 RDP 連接,否則此登錄機碼會停用連線。停用 RDP 連線是必要的安全措施,因為在執行 Windows Sysprep 之後的第一個開機工作階段期間,RDP 會有一小段時間允許連接,而且管理員密碼會空白。

  4. EC2Launch v2 服務會執行下列命令來呼叫 Windows Sysprep:

    sysprep.exe /oobe /generalize /shutdown /unattend: "C:\ProgramData\Amazon\EC2Launch\sysprep\unattend.xml"

一般化階段

  • EC2Launch v2 會移除映像特定資訊和組態 (例如電腦名稱和 SID)。如果執行個體是網域成員,即會從網域中移除。unattend.xml 回應檔案包括下列可影響此階段的設定:

    • PersistAllDeviceInstalls:此設定可防止 Windows 安裝程式移除和重新設定裝置,以加速映像準備程序,因為 Amazon AMI 需要執行特定驅動程式,而且重新偵測這些驅動程式需要一些時間。

    • DoNotCleanUpNonPresentDevices:此設定會保留目前不存在之裝置的隨插即用資訊。

  • Windows Sysprep 會在準備建立 AMI 時關閉 OS。系統會啟動新的執行個體,或啟動原始執行個體。

特製化階段

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 unattend.xml 回應檔案中指定的組態,來執行下列動作。

  • CopyProfile:Windows Sysprep 可以設定為刪除所有使用者描述檔 (包括內建管理員描述檔)。此設定會保留內建管理員帳戶,因此您對該帳戶進行的任何自訂都會帶到新的映像。預設值為 True

    CopyProfile 會以現有的本機管理員描述檔取代預設描述檔。執行 Windows Sysprep 之後登入的所有帳戶,將於第一次登入時收到該描述檔的複本及其內容。

    如果您沒有特定的使用者描述檔自訂要帶到新映像,請將此設定變更為 False。Windows Sysprep 將移除所有使用者描述檔 (這樣可節省時間和磁碟空間)。

  • TimeZone:時區會預設為國際標準時間 (UTC)。

  • 順序為 1 的同步命令:系統會執行下列命令,以啟用管理員帳戶並指定密碼要求。

    net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  • 順序為 2 的同步命令:系統會將管理員密碼變碼。此安全措施的用途在於您未設定 setAdminAccount 任務時,可防止在 Windows Sysprep 完成之後存取執行個體。

    系統從本機啟動代理程式目錄執行以下命令 (C:\Program Files\Amazon\EC2Launch\)。

    EC2Launch.exe internal randomize-password --username Administrator
  • 若要啟用遠端桌面連接,系統將終端伺服器 fDenyTSConnections 登錄機碼設定為 false。

OOBE 階段

  1. 系統使用 EC2Launch v2 回應檔案指定下列組態:

    • <InputLocale>en-US</InputLocale>

    • <SystemLocale>en-US</SystemLocale>

    • <UILanguage>en-US</UILanguage>

    • <UserLocale>en-US</UserLocale>

    • <HideEULAPage>true</HideEULAPage>

    • <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>

    • <ProtectYourPC>3</ProtectYourPC>

    • <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>

    • <TimeZone>UTC</TimeZone>

    • <RegisteredOrganization>Amazon.com</RegisteredOrganization>

    • <RegisteredOwner>EC2</RegisteredOwner>

    注意

    在一般化和特製化階段期間,EC2Launch v2 會監控 OS 的狀態。如果 EC2Launch v2 偵測到 OS 處於 Sysprep 階段,即會將下列訊息發佈至系統日誌:

    Windows is being configured. SysprepState=IMAGE_STATE_UNDEPLOYABLE

  2. 系統會執行 EC2Launch v2。

Sysprep 後續階段

Windows Sysprep 完成之後,EC2Launch v2 會將下列訊息傳送至主控台輸出:

Windows sysprep configuration complete.

EC2Launch v2 接著會執行下列動作:

  1. 讀取 agent-config.yml 檔案的內容並執行已設定的任務。

  2. 執行 preReady 階段中的所有任務。

  3. 完成後,會將 Windows is ready 訊息傳送至執行個體系統日誌。

  4. 執行 PostReady 階段中的所有任務。

如需 EC2Launch v2 的詳細資訊,請參閱在 EC2 Windows 執行個體啟動期間,使用 EC2Launch v2 代理程式執行任務

使用 EC2Launch v2 執行 Windows Sysprep

請使用下列程序,使用 Windows Sysprep 搭配 EC2Launch v2 來建立標準化 AMI。

  1. 在 Amazon EC2 主控台中,找出您要複製的 AMI。

  2. 啟動和連線至 Windows 執行個體。

  3. 自訂設定

    1. 在 Windows 的開始功能表中,搜尋並選擇 Amazon EC2Launch 設定。如需有關 Amazon EC2Launch 設定對話方塊中選項和設定的詳細資訊,請參閱設定 Windows 執行個體的 EC2Launch v2 設定

    2. 如果您已進行變更,請在關閉之前選擇儲存

  4. 選擇使用 Sysprep 關機不使用 Sysprep 的關機

系統會要求您確認要執行 Windows Sysprep 並將執行個體關機,請按一下。EC2Launch v2 執行 Windows Sysprep。接著,系統會將您登出執行個體,然後執行個體會關機。如果您檢查 Amazon EC2 主控台中的 Instances (執行個體) 頁面,執行個體狀態會從 Running 變更為 Stopping,再變更為 Stopped。這時便能放心地從此執行個體建立 AMI。

您可以從命令列使用下列命令手動調用 Windows Sysprep 工具:

"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true