Amazon EC2(Windows Server2019)をSysprepして複製してみた

2021.07.01

こんにちは、リサリサです。

本番環境のEC2を複製してテスト環境を作成したい場合や、EC2(Windows Server)を複数台構築する際に、一台のマスターイメージを作成して、複数台に展開したい場合など、Windows Serverの複製をすることがあるかと思います。

Linuxでは、EC2からカスタムAMIを作成し、そのカスタムAMIを起動するだけで複製が完了してしまうのですが、Windowsでは、それだけではよくありません。WindowsマシンにはマシンSIDというユニークに付与されるIDがあります。EC2をAMIからそのまま複製すると、このSIDがそのまま複製されてしまうため、バックアップ目的ではなくEC2の複製をしたい場合は、Sysprepを実施したAMIから複製をする必要があります

この手順がWindows Server 2012の記事しかなかったので、Windows Server 2019の手順で書き直させて頂きました。下記記事を元に書いています。Windows Server 2012までの場合は下記記事を参照ください。

SIDとは?

このマシンSID は、ドメインコントローラの識別や Windows Update などに利用されているので、WindowsはコンピューターごとにユニークなマシンSID が付与されていることが前提で設計されています。よって、AMIなどで複製した場合にマシン SID が重複しないように、複製したEC2インスタンスに新たなマシンSIDを設定する必要があります。一般にWindowsでは Sysprepというツールを用いることで新たなマシンSID を付与することができます。EC2インスタンスにおいては後述するEC2Launchツールを用いて、複製時に必要となる設定やSysprepの実行など一連の作業を行います。

全ての環境においてマシンSIDの重複で直ちに問題が顕在化するとは限りませんが、複製されたシステムが動作保障されるのは、Sysprepが実施されている場合に限られますので、EC2Launchツールを用いてSysprepを実行することをおすすめします。

引用:Amazon EC2(Windows Server 2012)の カスタムAMI の作成 (すみません、丸っとお借りしました…)

複製してみた

複製をする場合は、AMIを取得する前に EC2Launch(Windows Server 2012 R2 までは、EC2Config) によって、Sysprepが必要となります。しかし、本番環境ですでに動いているEC2インスタンスに対してこの操作をしてしまうと、本番稼働中のEC2インスタンスのマシンSID等が初期化されてしまうので、以下の手順で複製を行う必要があります。

1.本番環境EC2インスタンスのAMIを作成

2.本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動

3.複製用EC2インスタンスでEC2LaunchからSysprepを実行

4.複製用EC2インスタンスのAMIを作成

5.複製用EC2インスタンスのAMIを起動して複製

一台のマスターイメージを作成して、複数台に展開したい場合など、元環境を使っておらず、マシンSID等が初期化されても問題ない場合は、「3.複製用EC2インスタンスでEC2LaunchからSysprepを実行」から初めても大丈夫です。

1.本番環境EC2インスタンスのAMIを作成

対象のインスタンスを選択して、「アクション」⇒「イメージとテンプレート」⇒「イメージを作成」からAMIを作成します。Linuxと同じです。

「再起動しない」のチェックを外すと、自動で再起動し、インスタンスが停止した状態でイメージが作成されます。

「再起動しない」にチェックを付けると、再起動せずにイメージを作成する事が出来はするのですが、不整合を発生させないために、「再起動しない」のチェックは外し、インスタンスを停止させて静止点を作り、AMIを作成することをおすすめします

2.本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動

本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動します。

「EC2」の「AMI」をクリック。該当のAMIを選択して「起動」します。

後は、EC2を立ち上げる時と同じです。

ちなみに、このインスタンスはSysprepしていないので、Administratorのパスワードはコピー元の本番環境EC2インスタンスと同じです。

※コピー元の本番環境EC2インスタンスがドメインに参加している場合は、本番環境に起動してしまうと、一時的に同一のSIDのインスタンスが同一の本番環境に存在してしまうことになるため、本番環境EC2インスタンスとは別のVPCなど、ネットワーク的に分離した環境で複製用EC2インスタンスを起動することをおすすめします。

3.複製用EC2インスタンスでEC2LaunchからSysprepを実行

複製用EC2インスタンスが立ち上がったら、リモートデスクトップ接続します。

スタートメニューから「EC2 Launch Settings」を起動します。

EC2Launchアプリが起動すると、このような画面になります。

「Administrator Password」は 「Random」を選択し、「Shutdown with Sysprep」を押してSysprepを実行します。

「Yes」を押します。

この様な画面が5分ほど出て、終わると自動でシャットダウンされます。

※「Administrator Password」で「Specify」や「Do Nothing」を選択すると、マネジメントコンソールからパスワードの参照をしようとしても、以下のようなメッセージが表示され、パスワードの参照ができなくなりますのでご注意ください。

パスワードは使用できません。インスタンスはカスタム AMI から作成されたか、デフォルトパスワードが変更されています。このインスタンスについては、パスワードを取得できません。パスワードを忘れた場合は、Amazon EC2 構成サービスを使用してパスワードをリセットできます。

4.複製用EC2インスタンスのAMIを作成

「1.本番環境EC2インスタンスのAMIを作成」と同じように、「3.複製用EC2インスタンスでEC2LaunchからSysprepを実行」で作った複製用EC2インスタンスのAMIを作成します。

5.複製用EC2インスタンスのAMIを起動して複製

「2.本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動」と同じように、「2.本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動」で作ったAMIを起動します。必ずキーペアを設定するようにしてください。

Administratorのパスワードが変わっているので、マネジメントコンソール上で、キーペアからパスワードの取得が必要です。

最後に

Windows Serverを複製する事はよくありそうですが、Windows Server2019についてのちょうどいい記事がなかったので書いてみました。どなたかのお役に立てば幸いです。

参考

Sysprep を使用して、カスタマイズされた再利用可能な Windows AMI を作成し、インストールするにはどうすればよいですか?