概要

  • 今回は、Windows Server OS の環境で、sysprepを使った初期化時に、タイムゾーン、ロケールのパラメータを渡す方法をご紹介します。
  • 想定するシチュエーションは、EC2上に起動したWindows Server があり、そのイメージを横展したい時に必要となります。例えば、EC2 Windows をAuto Scaling によってスケールアウトする場合です。
  • sysprepは、Windows Server の固有情報(コンピューター SID )およびイベントログなどいくつかの情報を初期化します。また、sysprep後は、次回OS起動時に初期化タスクが起動します。この初期化タスクによって、タイムゾーン、ロケーションなどの情報が設定されます。本記事では、あらかじめ応答ファイルを準備して、sysprep後の初期化タスクでタイムゾーン、ロケーションといったパラメータを設定する方法を説明しています。

sysprepにタイムゾーン・ロケールを渡す方法

応答ファイルとは

  • 応答ファイル(Unattend.xml)とは、Windows Serverで行われる対話セットアップを自動化するための設定ファイルです。タイムゾーン、ロケールだけでなく、コンピューター名やパスワードを指定することも可能です。

Unattend.xmlの編集

C:\ProgramData\Amazon\EC2-Windows\Launch\SysprepディレクトリにあるUnattend.xmlを編集します。このファイルはWindowsのセットアップ自動化で使われる応答ファイルです。
TimeZoneパラメータが2箇所あり、「UTC」から「Tokyo Standard Time」に変更します。
ロケール関連のパラメータが4箇所(InputLocaleSystemLocaleUILanguageUserLocale)あり、すべて「ja-JP」に変更します。(英語環境であれば、en-USとなります)

EC2Launchの実行

  • テストのため、タイムゾーンをUTC に設定し、言語を英語(米国)に設定します。
  • EC2Launchを実行し、sysprepの応答ファイルにUnattend.xmlが指定されていることを確認します。

  • sysprep実行後、タイムゾーンがJST に変わり、言語が日本語に設定されていることを確認します。これで、Auto Scalig時に初期化前と同じタイムゾーン、ロケールでWindows Server を起動させることが可能となります。

参考資料

  • SSM(Systems Manager)を使ってsysprep を実行する方法は、下記記事が参考になります。
Windowsにログインせず、SSM(CLI)からsysprepを投げる概要はじめに今回は、SSM(Systems Manager)を使用して、EC2上のWindows Server に対してsysprepを行う方法をご紹介します。Sysprepはsysprepコマンドを直接実行するのではなく、AWSのEC2Config サービスを利...
  • EC2Launchを使った初期タスクの設定は、下記ドキュメントを参照ください。
EC2Launch は、Windows Server 2016 以降の AMIs の EC2Config Service を置き換えます。
  • 応答ファイル(Unattend.xml)は、windows Server のセットアップ自動化の一部です。詳細は、下記を参照ください。

元記事はこちら

EC2 Windows のsysprepにタイムゾーンを渡す方法