[アップデート] AWS Systems Manager Patch ManagerがAlmaLinuxをサポートしました

2023.05.28

しばたです。

少し前にAWSよりAWS Systems Manager Patch ManagerがAlmaLinuxをサポートした旨のアナウンスがありました。

内容としてはシンプルなものですが、AWS Systems Manager(SSM)におけるAlmaLinuxのサポートに関してはひと癖あり、本記事ではそのあたりの事情を踏まえて解説したいと思います。

SSMにおけるAlmaLinuxのサポート

そもそもの話として今回のアナウンスの直前までSSM AgentはAlmaLinuxを正式にサポートしていませんでした。
GitHubのリリースノートを見るとわかりますが、先月のVer.3.2.815.0ではじめてAlmaLinuxのサポートが明記されています。

これまでAlmaLinuxコミュニティによりSSM Agentプリインストール済みのAMIが提供されておりSSM Agentの基本的な機能は利用可能だったものの、以下のIssueにある様にAWS-UpdateSSMAgentAWS-RunPatchBaselineといったプログラム更新系のSSMドキュメント実行に失敗する状況でした。

原因はシンプルでSSM Agent内部で保持しているサポート対象ディストリビューション情報にAlmaLinuxの記述が無いためです。

このほかに私も過去に経験した一例としてAWS-ConfigureAWSPackageドキュメントでCloudWatch Agentをインストールしようとすると

failed to find platform: failed to collect data: unknown platform: almalinux

のエラーとなったことがあります。

類似のディストリビューションであるRocky Linuxは割と早期にサポートされたのもの関わらず、なぜかAlmaLinuxは長い間非サポートのままであり今回やっとサポートしてくれた感じです。

サポートされるAlmaLinuxのバージョン

本日時点で以下のバージョンがサポート対象になっています。

先日リリースされたばかりのAlmaLinux 9.2以外はサポートしてるのであまり深く考えないで大丈夫でしょう。

試してみた

ここからは実際に動作確認をしてみます。

私の検証用AWSアカウント内に用意したVPC環境(東京リージョン)にAlmaLinux 9.1のEC2インスタンスを1台用意します。
AMIは本日時点で最新の公式イメージ(Marketplaceイメージ)を使っています。

  • AMI : ami-0c376282479945650 (AlmaLinux OS 9.1.20221117 x86_64) を使用
  • IAMロール : AmazonSSMManagedInstanceCoreポリシーを持つロールをアタッチ済み

公式イメージはデフォルトでSSM Agentがインストール済みであり、今回はVer.3.1.1927.0(2022年10月リリースのバージョン)が初期インストール済みでした。

初回バージョンアップ

Ver.3.1.1927.0は正式サポート前のバージョンなので最初に手動でVer.3.2.815.0までバージョンアップする必要があります。
残念ながらこのバージョンでAWS-UpdateSSMAgentドキュメントを実行しても

failed to download file reliably, https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/ssm-agent-manifest.json

と、適切なインストーラーを見つけることができずエラーになります。

このため以下の様に手動で上書きインストールしてやります。

# 最新版をインストールする場合
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

# 特定バージョンをインストールする場合
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/3.2.815.0/linux_amd64/amazon-ssm-agent.rpm

今回は正式サポート開始のVer.3.2.815.0に更新しておきます。

基本的なSSM Document

正式サポートされたVer.3.2.815.0であればAWS-UpdateSSMAgentドキュメントも正常に動作します。
今回はVer.3.2.815.0 → Ver.3.2.985.0と本日時点での最新バージョンに更新できました。

ただ、最初に触れたAWS-ConfigureAWSPackageドキュメントに関してはCloudWatch Agentをインストールしようとすると

failed to find platform: no manifest found for platform: almalinux, version 9.1, architecture x86_64

のエラーになってしまいました。

これはSSM AgentというよりはCloudWatch AgentおよびSSM Distributer側の設定が悪い予感がします。
CloudWatch Agentはまだ正式にAlmaLinuxをサポートしておらずSSM Distributer側の対象に含まれていないのでしょう。
ちなみにSSMを使わず手作業でインストールすればAlmaLinuxでもCloudWatch Agentは動作しました。

SSM Patch Manager

Patch Mangerのパッチベースラインを確認するとちゃんとAlmaLinux用のものが追加されていました。

詳細はこんな感じです。

カスタムベースラインを作る際の対象OSにもちゃんとAlmaLinuxがありました。

続けてパッチを適用してみます。
今回は単純にオンデマンドでインスタンスを指定してスキャンを実施します。

結果は成功し、コンプライアンスレポートの結果から5つのパッチが更新対象であることが分かる様になりました。

次にステートマネージャの設定を変えて更新を実施してみました。
こちらも成功しパッチが適用され再起動待ちになっています。

再起動後改めてスキャンしてやり最終的に全てのパッチが適用済みになったことが確認できました。

余談 : 古いSSM AgentでPatch Managerを利用した場合

失敗することを意図してAMIに初期インストール済みのSSM Agent Ver.3.1.1927.0の環境でPatch Managerを試してみたのですが、期待に反して成功してしまいました。
Patch Managerとしてはパッチベースラインのサポートが増えていればSSM Agentのバージョンはそこまで厳密に見ていない様です。 *1

とはいえ非サポートバージョンのSSM Agentを使い続ける理由は無いのでPatch Managerを利用する際は同時にSSM Agentのバージョンアップもしておきましょう。

最後に

簡単ですが以上となります。

今回SSM AgentがAlmaLinuxに正式に対応しSSM関連の基本機能およびPatch Managerでの利用がサポートされました。
ただ、CloudWatch Agent等の他の周辺ツールはまだ正式サポートされておらずSSMを使ったインストールに対応していない場合がありますのでご注意ください。 *2

脚注

  1. Patch Managerの前提条件であるVer.2.0.834.0以降でエラー無く動作していれば大丈夫っぽい
  2. なお、非サポートではあるものの、SSMを使わず手動インストールすれば大抵の場合は動作させること自体はできます