本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Windows Sysprep 搭配 EC2Config 建立 AMI
當您從已安裝 EC2Config 服務的執行個體建立映像時,EC2Config 會在映像準備就緒時執行特定任務。這包括使用 Windows Sysprep。如需詳細資訊,請參閱Windows Sysprep 階段。
Windows Sysprep 操作
Windows Sysprep 和 EC2Config 服務會在準備映像時執行下列動作。
-
當您在 EC2 服務屬性對話方塊中選擇使用 Sysprep 關機時,系統會執行 ec2config.exe -sysprep 命令。
-
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。
-
-
系統會執行
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 會有一小段時間允許連接,而且管理員密碼會空白。
-
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 階段
-
使用 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 -
-
OOBE 階段完成後,系統會從下列位置執行
SetupComplete.cmd:C:\Windows\Setup\Scripts\SetupComplete.cmd。在 2015 年 4 月之前的 Amazon 公有 AMI 中,此檔案為空白,而且不會對映像執行任何操作。在 2015 年 4 月之後的公有 AMI 中,此檔案包含以下數值:call "C:\Program Files\Amazon\Ec2ConfigService\Scripts\PostSysprep.cmd"。 -
系統會執行
PostSysprep.cmd,執行下列操作:-
將本機管理員密碼設定為不過期。如果密碼過期,管理員可能會無法登入。
-
設定 MSSQLServer 機器名稱 (如果已安裝),讓名稱與 AMI 同步。
-
Sysprep 後續階段
Windows Sysprep 完成之後,EC2Config 服務會將下列訊息傳送至主控台輸出:
Windows sysprep configuration complete. Message: Sysprep Start Message: Sysprep End
EC2Config 接著會執行下列動作:
-
讀取 config.xml 檔案的內容,並列出所有已啟用的外掛程式。
-
同時執行所有「Windows 就緒之前」(“Before Windows is ready”) 外掛程式。
-
Ec2SetPassword
-
Ec2SetComputerName
-
Ec2InitializeDrives
-
Ec2EventLog
-
Ec2ConfigureRDP
-
Ec2OutputRDPCert
-
Ec2SetDriveLetter
-
Ec2WindowsActivate
-
Ec2DynamicBootVolumeSize
-
-
完成之後,會將「Windows 就緒」(“Windows is ready”) 訊息傳送至執行個體系統日誌。
-
同時執行所有「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。
-
在 Amazon EC2 主控台中,找出或建立您要複製的 AMI。
-
啟動和連線至 Windows 執行個體。
-
自訂執行個體。
-
在 EC2Config 服務回應檔案中指定組態設定:
C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml -
從 Windows 開始選單中,選擇所有程式,然後選擇 EC2ConfigService Settings (EC2ConfigService 設定)。
-
選擇 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中的 Image (映像) 標籤。如需 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中之選項和設定的詳細資訊,請參閱 Ec2 服務屬性。
-
選取管理員密碼的選項,然後選取 Shutdown with Sysprep (使用 Sysprep 關機) 或 Shutdown without Sysprep (不使用 Sysprep 關機)。EC2Config 會根據您選取的密碼選項來編輯設定檔案。
-
Random (隨機):EC2Config 會產生密碼,並以使用者金鑰加密,然後將已加密的密碼輸出到主控台。我們會在第一次啟動後停用此設定,以便執行個體重新開機或是停止後再啟動時,能持續使用這個密碼。
-
指定:密碼會以未加密形式 (純文字) 存放於 Windows Sysprep 回應檔案。Windows Sysprep 接著執行時,會設定管理員密碼。如果您立即關機,即會立即設定密碼。在服務重新啟動時,會移除管理員密碼。請務必記住此密碼,之後即無法再擷取此密碼。
-
保留現有項目:執行 Windows Sysprep 或重新啟動 EC2Config 時,管理員帳戶的現有密碼不會變更。請務必記住此密碼,之後即無法再擷取此密碼。
-
-
選擇 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。