AWS System Manager (SSM) の Patch Manager 機能を利用すると、OS パッチ適用を自動化できるそうです。
すごく便利だと思ったので、設定手順をまとめてみました。
アーキテクチャ
今回は、下図の構成で実装してみました。
Systems Managerとは、
オンプレミスでもマルチクラウド環境でも、AWS 内のノードを広範囲にわたって一元的に表示、管理、および運用できます。統合コンソールエクスペリエンスのリリースにより、Systems Manager では AWS アカウントとリージョン全体にわたってよく使用するノードタスクを完了できるさまざまなツールが統合されています。
AWS Systems Manager とは – AWS Systems Manager
Patch Managerとは、
オペレーティングシステムとアプリケーションの両方にパッチを適用することができます。
AWS Systems Manager Patch Manager – AWS Systems Manager
設定手順
今回は、以下手順でOS「Windows2022」のEC2に、毎月第4月曜日の9:00にパッチ適用する手順をまとめました。
1.パッチベースラインの作成
2.パッチグループの作成
3.メンテナンスウィンドウの作成
4.ターゲットの登録
5.Run Commandタスクの登録
1.パッチベースラインの作成
AWS System Managerの左メニュー「パッチマネージャー」をクリックし、「パッチベースライン」>「パッチベースラインを作成する」をクリックします。
▼ パッチベースラインの詳細
「名前」欄は、任意のパッチベースライン名を入力します。
「オペレーティングシステム」欄は、パッチ適用対象のインスタンスのOSを選択します。
今回は、windowsを選択しました。
▼ オペレーティングシステムの承認ルール
「製品」欄は、パッチ適用対象のインスタンスのOSイメージを選択します。
「分類」欄は「CriticalUpdates」、「SecurityUpdates」を選択します。
「重要度」欄は「Critical」、「Important」を選択します。
「コンプライアンスレポート」欄は、「重大」を選択します。
そのほかはデフォルトのままにします。
以下の欄はデフォルトのままにし、「パッチベースラインの作成」をクリックします。
▼アプリケーションの承認ルール
▼パッチの例外
▼タグの管理
2.パッチグループの作成
作成したバッチペースラインのIDをクリックし、「アクション」>「パッチグループの変更」をクリックします。
「バッチグループ」欄に任意のパッチグループ名を入力し、「追加」をクリックします。
入力したパッチグループ名が追加されたことを確認後、「閉じる」をクリックします。
3.メンテナンスウィンドウの作成
AWS System Managerの左メニュー「メンテナンスウィンドウ」をクリックし、「メンテナンスウィンドウの作成」をクリックします。
▼ メンテナンスウィンドウの詳細の入力
「名前」欄は、任意のメンテナンスウィンドウ名を入力します。
そのほかはデフォルトのままにします。
▼ スケジュール
「次で指定」欄は、「CRON/Rate 式」を選択し、実行させる時間帯をcronで記載します。
※今回は第4月曜日の9時に実行させたいので、cron(00 09 ? * MON#4 *)で登録してみます。
「期間」欄は、「3」時間を選択します。
「タスクの開始を停止する」欄は、「0」を選択します。
「スケジュールのタイムゾーン」欄は、任意のタイムゾーンを選択します。
※今回は「(GMT+09:00) Asia/Tokyo」を選択しました。
そのほかはデフォルトのままにします。
▼ スケジュール
デフォルトのままにし、「メンテナンスウィンドウの作成」をクリックします。
4.ターゲットの登録
作成したメンテナンスウィンドウのIDをクリックし、「アクション」>「ターゲットの登録」をクリックします。
▼ Maintenance window target details
「Target name」欄は、任意のターゲット名を入力します。
そのほかはデフォルトのままにします。
▼ ターゲット
「ターゲットの選択」欄は、「インスタンスタグを指定」を選択します。
「インスタンスタグを指定」欄は、パッチ適用対象のインスタンスにアタッチしている任意のタグを入力し、「Add」をクリックします。
入力したタグが追加されたことを確認後、「Register target」をクリックします。
5.Run Commandタスクの登録
作成したメンテナンスウィンドウのIDをクリックし、「アクション」>「Run Commandタスクの登録」をクリックします。
▼ メンテナンスウィンドウタスクの詳細
「名前」欄は、任意のメンテナンスウィンドウタスク名を入力します。
そのほかはデフォルトのままにします。
▼ コマンドドキュメント
「ドキュメント」欄は、「AWS-RunPatchBaseline」を選択します。
そのほかはデフォルトのままにします。
▼ ターゲット
「登録済みターゲットグループの選択」を選択し、「4.ターゲットの登録」で設定したターゲットを選択します。
▼ レート制御
「同時実行数」欄は、「1」ターゲットを選択します。
「エラーのしきい値」欄は、「1」エラーを選択します。
▼ IAM サービスロール
パッチ適用用のIAMロールを選択します。
▼ 出力オプション
「CloudWatch output」を選択し、任意のロググループ名を入力します。
※パッチ適用の実行結果がCloudWatch logsに出力されます。
▼ SNS通知
デフォルトのままにします。
▼ パラメータ
「Operation」欄は、「Install」を選択します。
「Snapshot Id」欄は、「{{WINDOW_EXECUTION_ID}}」を入力します。
そのほかはデフォルトのままにします。
▼ CloudWatch alarm
デフォルトのままにします。
すべての項目を設定後、「Run Commandタスクの登録」をクリックします。
パッチ実行結果確認
パッチ適用結果は以下の方法で確認することができます。
①「メンテナンスウィンドウ」>「履歴」
②CloudWatch logsに出力する設定をした場合は、
「ロググループ」>「ロググループ名」>「ログストリーム」
まとめ
今回は、Windowsのパッチ適用を設定するところまでをまとめてみました。
適用結果をSNSで通知させる方法もあるみたいなので、次の記事でご紹介します。
パッチ適用以外にもSSMの機能でいろいろできそうだと思ったので、もう少し調べてみようと思います。