SSMパッチマネージャー利用時のハマりポイントをまとめてみた

こんにちは、臼田です。

みなさん、パッチ適用してますか?(挨拶

AWS Systems Managerの機能の一つであるPatch ManagerではEC2インスタンス上のパッチ適用を行うことが出来る有用なものです。

リリース時はWindows OS用でしたが、現在はLinux OSにも利用でき、運用の自動化には欠かせない機能の一つになっています。

今回は実運用に向けて細く設定をいじっているときにハマったことを中心に注意事項をまとめました。これからPatch Managerを触る方、ハマっている方に役に立てばと思います。

問題と解決策

選択しているベースラインと違うものが実行される

Patch Managerで実際に適用するパッケージを選定するのはベースラインの設定によりますが、デフォルトのベースラインではSecurityの特に重要なものとBugfixのみで、セキュリティ以外の更新プログラムは外されています。

そのため、かなりのパッケージが取り残されてしまいます。

例えば、基本全部アップデートするというベースラインを作成してそれを利用しようとした際に、この問題が起きます。

下記のようにPatch Managerの画面からベースラインを選択してパッチを適用しようとします。

そして対象のインスタンスを選んで実行すると、選択した新しいベースラインではなく、デフォルトのベースラインが実行されました。

原因

実はこれ、マネジメントコンソールを利用している場合に起きる勘違いが原因です。

解決策

パッチグループを設定して、ベースラインに登録しましょう。

Patch Managerのベースライン適用の仕組みは下記のようになっています。

  • 選択したインスタンスがパッチグループに所属している場合、そのパッチグループの登録済みベースラインを利用する
  • 対応するパッチグループがない場合、もしくはパッチグループのベースラインが設定されていない場合デフォルトのベースラインを利用する

詳細な動作はこちらや下記のように実行画面の「追記設定」にも書いてあります。

Patch Managerからのパッチ適用は内部的にはRun CommandでAWS-RunPatchBaselineを実行しているだけです。AWS-RunPatchBaselineにはベースラインをパラメータに取らないので、Run Command画面やAWS CLIから実行している人は引っかかることはありませんが、初めてPatch Managerをコンソールから触る方はハマるかもしれません。(私はハマりました)

もちろん、デフォルトのベースラインを変更する事によって適用する方法もあります。

パッチグループが適用されない

上記に気づいてパッチグループを設定してみたのですが、うまく適用されずデフォルトのベースラインが使用され続ける事がありました。

原因

Patch GroupタグをEC2につけて間もない場合に起きる可能性があります。

単純にタグを付けてから、SSM側でそれを認識するまでに時間がかかるためです。

実行したあとRun Commandの出力を確認して、「Patch Group: 」という項目に値があるか確認します。タグを設定したばかりの場合には引き続き空欄になっている可能性があります。

解決策

何回かスキャンしていればPatch Groupが反映されていることが確認でき、正常に利用できます。

まとめ

私がPatch Managerを使い始めるときに実際にハマったポイントをまとめました。

誰かの役に立てば幸いです。

それでは良いパッチ管理ライフを!