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

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

使用 Windows Sysprep 搭配 EC2Config 建立 AMI

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

Windows Sysprep 操作

Windows Sysprep 和 EC2Config 服務會在準備映像時執行下列動作。

  1. 當您在 EC2 服務屬性對話方塊中選擇使用 Sysprep 關機時,系統會執行 ec2config.exe -sysprep 命令。

  2. EC2Config 服務會讀取 BundleConfig.xml 檔案的內容。此檔案預設位在下列目錄:C:\Program Files\Amazon\Ec2ConfigService\Settings

    BundleConfig.xml 檔案包括下列設定。您可以變更這些設定:

    • AutoSysprep:指出是否自動使用 Windows Sysprep。如果您要從 EC2 服務屬性對話方塊中執行 Windows Sysprep,則不需要變更此值。預設值為 No

    • SetRDPCertificate:設定遠端桌面伺服器的自簽憑證。這可讓您安全地使用遠端桌面通訊協定 (RDP) 連線至執行個體。如果新的執行個體應該使用憑證,請將值變更為 Yes。此設定不適用於 Windows Server 2012 執行個體,因為這些作業系統可以產生自己的憑證。預設值為 No

    • SetPasswordAfterSysprep:在新啟動的執行個體上設定隨機密碼,並以使用者啟動金鑰加密,然後將加密的密碼輸出到主控台。如果新執行個體不應該設定為隨機加密密碼,請將值變更為 No。預設值為 Yes

    • PreSysprepRunCmd:要執行之命令的位置。根據預設,命令位於下列目錄:C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd

  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. EC2Config 服務會執行下列命令來呼叫 Windows Sysprep:

    sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown

一般化階段

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

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

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

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

特製化階段

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 sysprep2008.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 的同步命令:系統會將管理員密碼變碼。此安全措施的用途在於您未啟用 ec2setpassword 設定時,可防止在 Windows Sysprep 完成之後存取執行個體。

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • 順序為 3 的同步命令:系統會執行下列命令:

    C:\Program Files\Amazon\Ec2ConfigService\Scripts\SysprepSpecializePhase.cmd

    此命令會新增下列登錄機碼,以重新啟用 RDP:

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

OOBE 階段

  1. 使用 EC2Config 服務回應檔案,系統可以指定下列組態:

    • <InputLocale>en-US</InputLocale>

    • <SystemLocale>en-US</SystemLocale>

    • <UILanguage>en-US</UILanguage>

    • <UserLocale>en-US</UserLocale>

    • <HideEULAPage>true</HideEULAPage>

    • <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>

    • <NetworkLocation>Other</NetworkLocation>

    • <ProtectYourPC>3</ProtectYourPC>

    • <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>

    • <TimeZone>UTC</TimeZone>

    • <RegisteredOrganization>Amazon.com</RegisteredOrganization>

    • <RegisteredOwner>Amazon</RegisteredOwner>

    注意

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

    EC2ConfigMonitorState: 0 Windows is being configured. SysprepState=IMAGE_STATE_UNDEPLOYABLE

  2. OOBE 階段完成後,系統會從下列位置執行 SetupComplete.cmdC:\Windows\Setup\Scripts\SetupComplete.cmd。在 2015 年 4 月之前的 Amazon 公有 AMI 中,此檔案為空白,而且不會對映像執行任何操作。在 2015 年 4 月之後的公有 AMI 中,此檔案包含以下數值:call "C:\Program Files\Amazon\Ec2ConfigService\Scripts\PostSysprep.cmd"

  3. 系統會執行 PostSysprep.cmd,執行下列操作:

    • 將本機管理員密碼設定為不過期。如果密碼過期,管理員可能會無法登入。

    • 設定 MSSQLServer 機器名稱 (如果已安裝),讓名稱與 AMI 同步。

Sysprep 後續階段

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

Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End

EC2Config 接著會執行下列動作:

  1. 讀取 config.xml 檔案的內容,並列出所有已啟用的外掛程式。

  2. 同時執行所有「Windows 就緒之前」(“Before Windows is ready”) 外掛程式。

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

  3. 完成之後,會將「Windows 就緒」(“Windows is ready”) 訊息傳送至執行個體系統日誌。

  4. 同時執行所有「Windows 就緒之後」(“After Windows is ready”) 外掛程式。

    • Amazon CloudWatch Logs

    • UserData

    • AWS Systems Manager (Systems Manager)

如需 Windows 外掛程式的詳細資訊,請參閱在 EC2 舊版 Windows 作業系統執行個體啟動期間,使用 EC2Config 服務執行任務

搭配 EC2Config 服務執行 Windows Sysprep

使用下列程序,使用 Windows Sysprep 和 EC2Config 服務來建立標準化 AMI。

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

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

  3. 自訂執行個體。

  4. 在 EC2Config 服務回應檔案中指定組態設定:

    C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml

  5. 從 Windows 開始選單中,選擇所有程式,然後選擇 EC2ConfigService Settings (EC2ConfigService 設定)

  6. 選擇 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中的 Image (映像) 標籤。如需 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中之選項和設定的詳細資訊,請參閱 Ec2 服務屬性

  7. 選取管理員密碼的選項,然後選取 Shutdown with Sysprep (使用 Sysprep 關機)Shutdown without Sysprep (不使用 Sysprep 關機)。EC2Config 會根據您選取的密碼選項來編輯設定檔案。

    • Random (隨機):EC2Config 會產生密碼,並以使用者金鑰加密,然後將已加密的密碼輸出到主控台。我們會在第一次啟動後停用此設定,以便執行個體重新開機或是停止後再啟動時,能持續使用這個密碼。

    • 指定:密碼會以未加密形式 (純文字) 存放於 Windows Sysprep 回應檔案。Windows Sysprep 接著執行時,會設定管理員密碼。如果您立即關機,即會立即設定密碼。在服務重新啟動時,會移除管理員密碼。請務必記住此密碼,之後即無法再擷取此密碼。

    • 保留現有項目:執行 Windows Sysprep 或重新啟動 EC2Config 時,管理員帳戶的現有密碼不會變更。請務必記住此密碼,之後即無法再擷取此密碼。

  8. 選擇 OK (確定)。

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

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

"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep""
注意

如果 CMD shell 已在 C:\Program Files\Amazon\EC2ConfigService\ 目錄中,則不需要命令中的雙引號標記。

不過,您必須審慎確認 Ec2ConfigService\Settings 資料夾中指定的 XML 檔案選項正確;否則,您可能無法連線至該執行個體。如需設定檔案的詳細資訊,請參閱 EC2Config 設定檔。如需從命令列設定 Windows Sysprep 並執行的範例,請參閱 Ec2ConfigService\Scripts\InstallUpdates.ps1