[アップデート] AWS Systems Manager の Patch Manager で日付によるパッチの自動承認を試してみた
こんにちは。岩城です。
1週間ほど前、Systems Manager (以降、SSM) の Patch Manager で日付によるパッチの自動承認が可能になりました。
AWS Systems Manager で、日付によるパッチの自動承認が可能に
機能確認しながら試してみましたので紹介します。
何ができるようになったのか
Patch Manager とは、SSM の機能の一つです。SSM の管理対象のインスタンスに対して定期的にパッチを適用できます。これまではパッチがリリースされてから適用されるまでの待機日数を指定できました。
これに加えて今回のアップデートにより、特定の日付( YYYY-MM-DD
)までにリリースされたパッチを適用できるようになりました。
ユースケースとして、Patch Manager 運用していることを前提に、開発と本番環境といった複数環境に適用するパッチを特定の日付で揃えたい場合に活用できるのではないでしょうか。
やってみた
前提
SSM の Patch Manager を利用するには、以下の前提となる作業および設定が必要です。本エントリでは紹介だけに留めて具体的に取り上げません。
- 対象インスタンスの OS が Patch Manager でサポートされていること
- SSM の他の機能でサポートされていても Patch Manager ではサポートされていないOSがあります
- パッチマネージャーの前提条件
- 対象インスタンスに SSM エージェントがインストールされていること
- Amazon Linux をはじめ、いくつかの AMI にはプリインストールされています
- SSM エージェント プリインストールされた AMI
- 対象インスタンスに SSM の実行を許可する IAM ロールが割り当てられていること
- 今回の検証では、
AmazonSSMManagedInstanceCore
ポリシーがアタッチされたロールを作成しました - Systems Manager インスタンスプロファイルのポリシーについて
それではやっていきましょう。
パッチグループを設定する
インスタンスを Patch Manager の対象とするには、以下3つの方法があります。
- インスタンスタグの指定
- パッチグループの指定
- インスタンスの指定
今回はパッチグループを指定して、2つのインスタンスにパッチを適用してみます。
ちなみにパッチグループは、その名のとおりパッチ適用対象のインスタンスをグルーピングするために利用します。インスタンスのタグキーに Patch Group
(固定) 、タグ値に任意の文字列を設定し、パッチ適用時に指定します。
今回はタグ値を AmazonLinux2
としました。
パッチベースラインを作成する
デフォルトのパッチベースラインでは、待機日数の指定がされており変更できないため、新しくパッチベースラインを作成します。パッチベースラインの名前を AmazonLinux2-patch-baseline-20200225
としました。
今回は基本的にデフォルト設定とし、自動承認の設定のみ変更します。
Auto-approval
(自動承認)の Approve patches released up to a specific date
にて、2020-01-01
を指定しました。
ちなみに、YYYY-MM-DD
の形式で入力する必要があります。コンソールからだとカレンダーから選択することになり、自動入力されるので型式を意識する必要はありません。
後述しますがCLIから設定する場合、意識する必要があります。
CLIから設定する場合
CLI からの設定も試してみました。
$ aws ssm create-patch-baseline --name "AmazonLinux2-patch-baseline-20200225" --operating-system "AMAZON_LINUX_2" --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=PRODUCT,Values=*}]},ApproveUntilDate="2020-01-01"}]" { "BaselineId": "pb-0237f0edfd6c3d845" }
日付をあえて 2020/01/01
にしてみるとエラーになりました。
$ aws ssm create-patch-baseline --name "AmazonLinux2-patch-baseline-20200225" --operating-system "AMAZON_LINUX_2" --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=PRODUCT,Values=*}]},ApproveUntilDate="2020/01/01"}]" An error occurred (ValidationException) when calling the CreatePatchBaseline operation: 1 validation error detected: Value '2020/01/01' at 'approvalRules.patchRules.1.member.approveUntilDate' failed to satisfy constraint: Member must satisfy regular expression pattern: ^(\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))$
パッチベースラインにパッチグループを設定する
作成したパッチベースラインを選択し、 パッチグループの変更
からパッチグループを追加します。
ここで指定するのはタグ値です。今回明示的に指定した AmazonLinux2
を追加します。
パッチグループとパッチベースラインが関連付きました。
パッチを適用する
パッチ適用の設定
からパッチグループを指定してパッチ適用します。
パッチグループ AmazonLinux2
は前段で作成したパッチベースラインに関連付けられているので、AmazonLinux2-patch-baseline-20200225
に基づきパッチ適用されることになります。
今回は即時実行するため、 スケジュール作成とパッチインスタンスをスキップする
を選択しました。
Run Command
の コマンド履歴
からコマンドステータスを確認し成功していれば完了です。
おわりに
Patch Manager 素晴らしい機能だと思います。皆さんも是非使ってみてはいかがでしょうか。
本エントリが、どなたかのお役に立てれば幸いです。