EC2Config で Windows Sysprep を使って AMI を作成する - Amazon Elastic Compute Cloud

EC2Config で Windows Sysprep を使って 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 の実行後にログインしたすべてのアカウントは、最初のログイン時にそのプロファイルとその内容のコピーを受け取ります。

    新しいイメージに引き継ぐことを希望する特定のユーザープロファイルがない場合、この設定を「いいえ」に変更します。Windows Sysprep はすべてのユーザーを削除します。これによって時間とディスク領域が節約されます。

  • タイムゾーン: タイムゾーンはデフォルトで世界時 (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>その他</NetworkLocation>

    • <ProtectYourPC>3</ProtectYourPC>

    • <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>

    • <TimeZone>UTC</TimeZone>

    • <RegisteredOrganization>Amazon.com</RegisteredOrganization>

    • <RegisteredOwner>Amazon</RegisteredOwner>

    注記

    一般化と特定化ステップにおいて、EC2Config サービスは OS のステータスをモニタリングします。OS が Sysprep のステップにあることが EC2Config によって検出された場合、以下のメッセージがシステムログに発行されます。

    EC2ConfigMonitorState: 0 Windows is being configured. SysprepState=IMAGE_STATE_UNDEPLOYABLE

  2. 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" の値が含まれます。

  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 の準備が終了する前」のすべてのプラグインを同時に実行します。

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

  3. これが完了すると、「Windows の準備完了」のメッセージをインスタンスのシステム ログに送信します。

  4. 「Windows の準備が終了した後」のすべてのプラグインを同時に実行します

    • Amazon CloudWatch Logs

    • UserData

    • AWS Systems Manager (Systems Manager)

Windows プラグインの詳細については、「EC2Config サービスを使用して、EC2 レガシー Windows オペレーティングシステムインスタンスの起動時にタスクを実行する」を参照してください。

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 設定] を選択します。

  6. [Ec2 サービスプロパティ] ダイアログボックスで [イメージ] タブを選択します。Ec2 サービスプロパティダイアログボックスのオプションと設定についての詳細は、「Ec2 サービスプロパティ」を参照してください。

  7. 管理者パスワードのオプションを選択してから、[Shutdown with Sysprep] または [Shutdown without Sysprep] を選択します。EC2Config は、選択したパスワードオプションに基づいて設定ファイルを編集します。

    • ランダム: EC2Config はパスワードを生成してユーザーのキーで暗号化し、暗号化されたパスワードをコンソールに表示します。この設定は初回起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。

    • 指定: パスワードは、Windows Sysprep 応答ファイルに暗号化されていない形式 (平文) で保存されます。Windows Sysprep が次に実行されると、管理者パスワードに設定されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。サービスを再開すると、管理者パスワードは削除されます。このパスワードは後で取得できないため覚えておくことが重要です。

    • 既存のパスワードを保持: Windows Sysprep の実行時や EC2Config の再起動時に、管理者アカウントの既存のパスワードは変更されません。このパスワードは後で取得できないため覚えておくことが重要です。

  8. [OK] を選択してください。

Windows Sysprep を実行しインスタンスをシャットダウンするかどうか確認を求められたら [はい] をクリックします。これにより、EC2Config が Windows Sysprep を実行します。次に、ユーザーは自動的にログオフさせられ、インスタンスがシャットダウンします。Amazon EC2 コンソールの [インスタンス] ページを見ると、インスタンスの状態が Running から Stopping、最終的に Stopped に変わるのがわかります。この状態になれば、インスタンスから AMI を安全に作成できます。

コマンドラインから Windows Sysprep ツールを手動で呼び出すには、次のコマンドを使います。

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

CMD シェルが C:\Program Files\Amazon\EC2ConfigService\ ディレクトリ内に既に存在する場合、コマンドの二重引用符は不要です。

ただし、この操作は慎重に行ってください。Ec2ConfigService\Settings フォルダで指定した XML ファイルオプションが正しくないと、インスタンスに接続できなくなる場合があります。設定ファイルの詳細については、「EC2Config の設定ファイル」を参照してください。コマンドラインから Windows Sysprep を設定して実行する例については、「Ec2ConfigService\Scripts\InstallUpdates.ps1」を参照してください。