本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Windows Sysprep 搭配 EC2Launch v2 建立 AMI
當您從已安裝 EC2Launch v2 代理程式的執行個體建立映像時,EC2Launch v2 會在映像準備就緒時執行特定任務。這包括使用 Windows Sysprep。如需詳細資訊,請參閱Windows Sysprep 階段。
Windows Sysprep 操作
Windows Sysprep 和 EC2Launch v2 會在準備映像時執行下列動作。
-
當您在 EC2Launch settings (EC2Launch 設定) 對話方塊中選擇 Shutdown with Sysprep (使用 Sysprep 關機) 時,系統會執行
ec2launch sysprep命令。 -
EC2Launch v2 透過讀取位於
unattend.xml的登錄值來編輯HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName檔案的內容。檔案位於以下目錄:C:\ProgramData\Amazon\EC2Launch\sysprep。 -
系統會執行
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 會有一小段時間允許連接,而且管理員密碼會空白。
-
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 階段
-
系統使用 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 -
-
系統會執行 EC2Launch v2。
Sysprep 後續階段
Windows Sysprep 完成之後,EC2Launch v2 會將下列訊息傳送至主控台輸出:
Windows sysprep configuration complete.
EC2Launch v2 接著會執行下列動作:
-
讀取
agent-config.yml檔案的內容並執行已設定的任務。 -
執行
preReady階段中的所有任務。 -
完成後,會將
Windows is ready訊息傳送至執行個體系統日誌。 -
執行
PostReady階段中的所有任務。
如需 EC2Launch v2 的詳細資訊,請參閱在 EC2 Windows 執行個體啟動期間,使用 EC2Launch v2 代理程式執行任務。
使用 EC2Launch v2 執行 Windows Sysprep
請使用下列程序,使用 Windows Sysprep 搭配 EC2Launch v2 來建立標準化 AMI。
-
在 Amazon EC2 主控台中,找出您要複製的 AMI。
-
啟動和連線至 Windows 執行個體。
-
自訂設定
-
在 Windows 的開始功能表中,搜尋並選擇 Amazon EC2Launch 設定。如需有關 Amazon EC2Launch 設定對話方塊中選項和設定的詳細資訊,請參閱設定 Windows 執行個體的 EC2Launch v2 設定。
-
如果您已進行變更,請在關閉之前選擇儲存。
-
-
選擇使用 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