2022年1月2日日曜日

AWS Windows インスタンスのカスタムAMIを作成してみる

 こんばんは

新しい年を迎えましたね。昨年度末は色々と体調を崩したりして大変でしたが、まあそれは、生活習慣などを考え直すいいチャンスをもらったのだと前向きに捉えて、今年は色々と食生活などにも注意して生活していきたいと思います。ここ2年ほどは、新型肺炎が流行したこともあって、家からはあまり出なくなって、運動は全くしなくなり、食事もめんどくさくなって簡単なもので済ませてしまったりすることが多かったなと思います。運動も心がけていきたいと思いますが、何よりも食事に注意したいと思います。


前置きとは全く関係がないのですが、今日は、AWSに作成したWindowServer2016インスタンスから、カスタムAMIを作成して、インスタンの作成を簡略化してみようかと思います。

AMI作成元のインスタンスの準備

まず、インストールしたアプリケーションの状態や設定が残っているかどうか確認するため、いくつか適当にアプリケーションをインストールしてみました。Acrobat DC、Google Chrome、Microsoft Edgeをインンストールしました。



「IEのセキュリティ強化の構成」を無効にして、「タイムゾーンをUTC+9」にします。



キーボード設定を「106/109」にもしています。



AMI作成

ユーザープロファイルの削除

ローカルのアカウント以外のユーザプロファイルを削除します。「コントロールパネル」の「ユーザーアカウント」をクリックします。


「ユーザープロファイルの詳細プロパティの構成」をクリックします。



「ユーザープロファイル」が開くので、一覧から不要なアカウントのプロファイルを選択して「削除」ボタンをクリックします。以下のようにAdministratorだけになっていれば良いと思います。



Sysprepの実行


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





起動すると以下のような画面になりますので、「Random(Retrieve from console」(ランダム、コンソールから取得)を選択して、「Shutdown with Sysprep」をクリックします。


「Sysprep Confirmation」と表示されるので、特に変更せずそのまま「Yes」ボタンをクリックします。


「Sysprepを実行しています...」と表示されますので、そのまましばらく待ちます。処理が終わるとシャットダウンされて、接続が切断されると思います。AMIを作成する時に、サーバが停止している必要がありますので、再起動しにないように注意してください。



AMIの作成

Sysprepを実行したインスタンスから、AMIイメージを作成します。しつこいようですが、AMIイメージを作成する元となるインスタンスは低下状態にしておきます。

EC2コンソールを開いて、先ほどSysprepを実行したインスタンスを選択して、「アクション」、「イメージとテンプレート」、「イメージを作成」を選択します。


「イメージを作成」という以下のような画面が開きますので、「イメージ名」「イメージの説明」を設定します。「再起動しない」の「有効化」という箇所はチェックを外して、「イメージの作成」ボタンをクリックします。「再起動しない」オプションは、起動しているインスタンスを再起動せずにそのままイメージを作成するオプションなのですが、不具合の元となるので緊急時以外はチェックを外して実施した方が良いようです。


AMIの一覧に作成されていることが確認できます。上のRHEL7.9は前回作成したイメージです。




AMIからインスタンスを起動する

AMIからインスタンスを起動する

作成したAMIからインスタンスを起動してみます。EC2コンソールから「インスタンスの起動」ボタンを押して、「マイAMI」を選択し、先ほど作成したAMIの横にある「選択」ボタンをクリックします。


インスタンスタイプ選択画面が表示されます。作成した際に使っていたインスタンスと同じでなければいけないわけではありません。好きなインスタンスを選択して良いと思います。



起動したインスタンスに接続してみます。まず、デスクトップですが、インストールしたアプリケーションは残っているようですが、タスクバーに固定したプリケーションのアイコンは消えてしまっていますね。パブリックユーザープロファイルに登録されているものは残りますが、個々のユーザに登録されている情報は消えてしまうようです。



キーボードの設定は残っているようです。



サーバーマネージャで確認してみると、「IEセキュリティ強化の構成」は「無効」のままになっていますが、「タイムゾーン」はUTC時間になってしまっています。それから、なんと、「プロダクトID」が「ライセンス認証されていません」になってしまっています。


手動でライセンス認証を行う

AWSのドキュメントそのままコピーペーストですが、以下のコマンドを実行してみてください。まず、アウトバンドでTCPポート1688への通信をブロックしている場合は解除する必要がありますので、解除しておいてください。

TCPポート1688からアウトバンド通信が許可された状態で以下のコマンドを実行します。

Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
Add-Routes
Set-ActivationSettings
slmgr /ato

実行例をいかに示します。
PS C:\Users\Administrator> Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
PS C:\Users\Administrator> Add-Routes

ifIndex DestinationPrefix                              NextHop                                  RouteMetric PolicyStore
------- -----------------                              -------                                  ----------- -----------
6       169.254.169.254/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.254/32                             10.20.2.1                                         15 Persiste...
6       169.254.169.250/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.250/32                             10.20.2.1                                         15 Persiste...
6       169.254.169.251/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.251/32                             10.20.2.1                                         15 Persiste...
6       169.254.169.249/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.249/32                             10.20.2.1                                         15 Persiste...
6       169.254.169.123/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.123/32                             10.20.2.1                                         15 Persiste...
6       169.254.169.253/32                             10.20.2.1                                         15 ActiveStore
6       169.254.169.253/32                             10.20.2.1                                         15 Persiste...
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。


PS C:\Users\Administrator> Set-ActivationSettings
PS C:\Users\Administrator> slmgr /ato
PS C:\Users\Administrator>


上記のようにコマンドを実行すると、以下のように表示されて、ライセンス認証が正常に行われたようです。



サーバーマネージャのライセンス認証のところを確認します。今度は、ライセンス認証済みになりました。




自動でライセンス認証を行う

自動でライセンス認証する方法は、なんかうまく行ったようなうまくいかないような感じになってしまっていますので、今のところは手動でやる方が良いような気がします。

まず、AWS System Managerコンソールを開いて、左の欄から「自動化」を選択します。



次のような画面が表示されますので、「オートメーションの実行」ボタンをクリックします。


検索ボックスに「ActivateWindowsWithAmazonLicense」と入力して検索すると以下のように「ActivateWindowsWithAmazonLicense」が表示されますので、選択して「次へ」ボタンをクリックします。



「オートメーションドキュメントの実行」が開きますので、「シンプルな実行」を選択します。
 

同じ画面で、「インタラクティブなインスタンススピーカーを表示する」をチェックして「すべてのインスタンスを表示する」を選択し、ライセンス認証を行いたいホストを選択します。




最後に、「Allow Offline」を「True」に設定して、「実行」ボタンをクリックします。「Allow Offline」が「True」になっていると、サーバが再起動しますので注意してください。ライセンス認証が行われていないサーバが再起動されても問題ないかもしれませんが。。。



実行すると、次のようにステータスが表示されます。が、なんだか最後のステップが「保留中」のまま進みません。



おかしいなと思いながら、ライセンス認証を行なったはずのサーバに接続してみると。。。。あれ?すでにライセンス認証が行われています。



あらためて、ステータスを見ると、「成功」に。。。



自動実行によりライセンス認証されたのか、時間が解決したのかよくわからない状態に。。。オートメーションの実行結果は成功になっているので、うまく行ったということにして良いのでしょうか?

やっぱり、なんとなく不安なので、私はサーバ立ち上げるごとにします。どうせいくつか設定変更が必要ですので、手動でやってもいいかなと思います。




0 件のコメント:

結局 Kindle にケースを買いました。

 こんばんわ 私、最近ほとんど外出しなくなったのですが、妻の買い物に一緒に行って、ぼけーっと待っていたり、病院に行ってぼけーっと待っていたりする機会が多くなり、なんなら家でもボケーっとしていることが非常に多くなったためか、Kindleの出番が結構ありそうです。 前回、タブレットで...