0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Systems Manager (旧SSM) でWindowsUpdateを自動化する

Last updated at Posted at 2022-10-09

今回はAWS Systems Manager (以下SSM)を利用して、AWSに構築したWindows ServerOSのEC2のWindowsVerUpを自動化を設定してみます。Windows ServerOSはいったん構築したらバージョンアップ運用をしないという会社もそこそこあるのはないでしょうか?OS上のアプリ動作に影響が出る可能性があるので大型のバージョンアップは適用していない会社が多数派なのではと思いますが、まったくバージョンアップしないのもいかがなものかと...やるなら「簡単」で、「自動」の方が良いでしょうという単純思考に基づいてやってみましょう!

今回のゴール

SSMを利用して、自動的にWindows ServerOSを更新する(EC2にリモートログインやコマンド記述はしない)
バージョンアップ配信した結果のログを取得する
SSM_自動アップデート.png

前提環境

・EC2(Windows Server 2019)をデプロイ済み
・IAMロールやポリシー作成の可能なIAMユーザ権限がある
・FeatureUpdates(FU)ではなく、QUやsecurityUpdateなどのバージョンアップの配信想定

設定の流れ

①IAMロールの作成
②SSM パッチベースライン作成
③SSM メンテナンスウィンドウの設定
④実行ログの確認

実際にやってみた

①IAMロールの作成

まずはSSMでEC2の設定を変更できるように、適切なポリシーがアタッチされたIAMロールを作成してEC2にアタッチしてやる必要があります。
SSM_IAMロール.png
IAMロールについて、初めから作成しても問題ないのですが、今回はSSM用にAWSが作成してくれるIAMロール(AmzonSSM~QuickSetUp)に権限を付け足して利用しようと思います。

AWSが作成してくれるIAMロールですがSSMの管理コンソールの左上に「高速セットアップ」というボタンがあり、ここから作成することができます。
SSM_アクセス.png

Quick Setupのライブラリから[Host Management]を選択し、[作成]をクリックします。
デフォルトで以下の画面のように設定が入っているので、このまま[作成]をします。
image.png
QuickSetUp.png
デフォルトのままだと現在選択されているリージョンのEC2全てにIAMロールが適用されます。
WindowsUpdateしたいEC2がデプロイされているリージョンと違うリージョンが選択されている場合やリージョン内全てのEC2には適用したくない場合、ターゲットの項目を適宜変更して下さい。

しばらくすると適用したリージョン内のEC2のIAMロールが[AmazonSSMRoleForInstanceQuickSetup]に変更されています。変更されていない場合は手動でIAMロールを変更しましょう。

次にSSM上でEC2が認識出来ているかを確認します。SSM管理コンソールの[フリートマネージャ]に現在のリージョンでSSMが認識しているEC2が表示されます。
IAMロール[AmazonSSMRoleForInstanceQuickSetup]がアタッチされてからフリートマネージャに反映するまでタイムラグがあるので気長に待ちましょう。
上手くいけば下記のように起動しているEC2は[オンライン]、停止しているものは[接続が失われました]という表示がでます。
image.png

SSM管理画面に表示されるようになったところで、IAMロール=[AmazonSSMRoleForInstanceQuickSetup]を編集してSSMでEC2の操作ができるようにしていきます。編集と言っても[AmazonEC2RoleforSSM]のポリシーを追記するだけです。

image.png

②SSM パッチベースライン作成

続いてどういうOSに、どういうパッチを当てていくのかパッチベースラインを作成していきます。
SSMの管理コンソール画面の左側メニューで[パッチマネージャー]を選択します。
image.png

[パッチベースライン]-[パッチベースラインを作成]を選択します。
image.png

新しくパッチベースラインをこんな感じで設定していきます。
image.png

【パッチベースライン】
名前 →任意
説明 →任意
オペレーティングシステム →Windows

【オペレーティングシステムの承認ルール】
製品 →WindowsServer2019
分類 →[criticalUpdates],[securityUpdates],[ServerPacks],[UpdateRollups]
重要度 →[Critical],[Important]

ちなみに分類ですが、各項目の内容はこんな感じです。
image.png
出典 https://bizlog.tech/windows-update-category/

upgradesを含めてしまうとFUまで当たってしまうので、今回は外しています。

バッチベースラインをしたら、適用していきます。
image.png

先ほど作成したパッチベースラインを選択して、右上の[パッチを適用]をクリックします。

パット適用.png

パッチベースラインを適用するターゲットやスケジュールなどを設定していきます。
今回は[パッチを適用するインスタンス]は[インスタンスを手動で選択する]にして、パッチ適用スケジュールは[新しいメンテナンスウィンドウを作成する]で設定していきます。またパッチ適用操作は[スキャンとインストール]を選択します。
スケジュールについて、既に作成している場合は[既存のメンテナンスウィンドウを選択する]でもOKです。

③メンテナンスウィンドウの設定

メンテナンスウィンドウがWindowsServerでいうところのタスクスケジューラ的なものです。
今回は毎日日本時間24:00にパッチ適用させたいので以下のように設定していきます。
image.png

時間指定が15:00になっていますが、これはUTCなので、日本時間にしたいときには+9:00してください。
メンテナンスウィンドウ名は任意のものを入れてください。

これで時間になれば、パッチベースラインに設定した処理が、ターゲット指定したEC2で実行されることになります。d(`・ω・’)

④実行ログの確認

パッチ適用が成功したかログで確認してみましょう。
[メンテナンスウィンドウ]-対象のメンテナンスウィンドウIDを選択して[詳細の表示]-[履歴]でパッチ適用ジョブが成功したのステータス状況が確認できます。
実行ログ.png

ウィンドウ実行IDを選択し詳細情報を表示させることで、以下のような詳細ログも表示させることができます。
コマンドログ.png

おわりに

本番環境をバージョンアップする際には動作影響ないか確認して、バックアップ(スナップショット取得)してから作業しましょう。
WSUSを個別に用意する必要がなくなるので便利機能なのですが、やはりちゃんと運用できることが前提ですね...

参考にしたサイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?