今日を知り、明日を変えるシステム運用メディア

AWS Systems Managerにマネージドノードを追加しよう!

AWS Systems Managerにマネージドノードを追加しよう!

本記事では、AWSリソースを含むシステムの運用をする際に便利なサービス「AWS Systems Manager」を複数回にわたってご紹介します。
今回は第2回目の記事ということで、AWS Systems Managerの環境構築と題し、AWS Systems Managerのインストールについて解説します。

第1回の記事はこちらから参照してください。

Systems Managerにマネージドノードを追加する

システムにEC2インスタンスやオンプレミスサーバを新規追加する際、Systems Managerを利用している場合はマネージドノードとしても追加登録が必要になるケースがあるでしょう。
今回は、マネージドノードを追加する必要がある場合、具体的にどのような手順を踏むべきかを解説します。新規追加するマシンに対するSSM Agentのインストール、マネージドノードとしての登録手順について解説しますので、是非ご参考にしてください。

SSM Agentのインストール状況を確認

まず、SSM Agentのインストール状況を確認する手順について説明します。

SSM AgentがプリインストールされているAMIs

AWSのAMI(Amazon Machine Images)によっては、SSM Agent がインストール済みの状態で提供されているものがあります。次のいずれかのOSでEC2インスタンスを作成する場合は、SSM Agent が既にインストール済みであるか確認してみましょう。

Windows系

  • 2016 年11 月以降に公開されたWindows Server 2008-2012 R2 AMIs
  • Windows Server 2016、2019、2022 (Nano バージョンを除く)

Linux系

  • AlmaLinux
  • 2017 年9 月以降のAmazon Linux 1 Base AMI
  • Amazon Linux 2
  • Amazon Linux 2 ECS に最適化されたベースAMIs
  • Amazon Linux 2023 (AL2023)
  • Amazon EKS 最適化Amazon Linux AMIs
  • macOS 10.14.x (Mojave)、10.15.x (Catalina)、11.x (Big Sur)、12.x (Monterey)、13.x
  • (Ventura)、および14.x (Sonoma)
  • SUSE Linux Enterprise Server(SLES) 12 と15
  • Ubuntu Server 16.04、18.04、20.04、および22.04

SSM Agentがインストール済みか確認する方法

Windowsマシンの場合

WindowsマシンでSSM Agentがインストール済みか確認する方法を説明します。
※以降に掲載する確認手順のOSバージョンは、Windows Server 2022 Datacenter です。

1.EC2インスタンスに接続およびログインし、スタートボタンを右クリックして表示されるメニューより「アプリと機能」をクリックします。

「アプリと機能」をクリック

2.「設定」ウィンドウが起動するので、左ペインのメニューより「アプリと機能」が選択されていることを確認し、「このリストを検索」欄に“Amazon SSM Agent”と入力します(”Amazon”まで入力すれば見つかると思います)。

「このリストを検索」欄に“Amazon SSM Agent”と入力

3.以下画像のように、検索結果に“Amazon SSM Agent”が表示されれば、SSM Agentはインストール済みです。

検索結果に“Amazon SSM Agent”が表示されれば、SSM Agentはインストール済み

Linuxマシンの場合

続いて、LinuxマシンでSSM Agentがインストール済みか確認する方法を説明します。
※以降に掲載する確認手順のOSバージョンは、Amazon Linux 2023 です。

1.EC2インスタンスに接続およびログインし、次のコマンドを実行します。

$ rpm -qa | grep ssm

2.既にSSM Agent がインストール済みの場合、インストールされているSSM Agent のパッケージファイルが表示されます。

▼コマンド実行結果の例

amazon-ssm-agent-3.3.987.0-1.amzn2023.x86_64

▼TeraTermでのコマンド実行イメージ

TeraTermでのコマンド実行イメージ

EC2インスタンスへのインストール

SSM AgentがインストールされていないインスタンスやオンプレミスサーバをSystems Managerで管理する場合、手動でSSM Agentのインストールが必要となります。
ここでは、EC2インスタンスにSSM Agentをインストールする手順を解説します。

Windowsインスタンスへのインストール

WindowsマシンにSSM Agentを手動インストールする手順を説明します。

1.インターネット経由でSSM Agentインストーラをダウンロードします。
ブラウザを起動して、次のURLに接続するとただちにダウンロードが始まり、インストーラがダウンロード先に保存されます。

https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe

インストール作業対象のWindowsマシンがインターネットに接続可能な場合は、当該Windowsマシンのブラウザより直に接続しましょう。当該Windowsマシンからインターネットに接続できない場合は、インターネットに接続可能な環境でダウンロードし、インストール作業対象のWindowsマシンに移しましょう。

2.前手順で入手したAmazonSSMAgentSetup.exe をインストール作業対象のWindowsマシンで実行します。

AmazonSSMAgentSetup.exe を右クリックし、表示されるメニューより「管理者として実行」をクリックすることで実行可能です。

AmazonSSMAgentSetup.exe を右クリックし、表示されるメニューより「管理者として実行」をクリック

3.インストーラが起動し、利用規約に同意を求める画面が表示されます。「I agree to the license terms and conditions」にチェックを入れて利用規約に同意し、「Install」をクリックします。クリック直後、ただちにインストール処理が開始します。

利用規約に同意

4.インストール処理完了後、「Installation Successfully Completed」というメッセージが表示されれば、インストールは正常に完了したことになります。「Close」をクリックしてインストーラを終了しましょう。

インストール完了

Linuxインスタンスへのインストール

LinuxマシンにSSM Agentを手動インストールする手順を説明します。

手順は、Red Hat Enterprise Linux 9 のLinuxインスタンスを対象に検証したものです。

1.EC2インスタンスに接続およびログインします。

2.ログイン後、対象マシンのアーキテクチャを確認するため、次のコマンドを実行します。

$ uname -m

▼アーキテクチャ確認コマンド実行例

アーキテクチャ確認コマンド実行例

3.対象マシンのアーキテクチャに合わせて、インストールコマンドを実行します。

▼アーキテクチャがx86_64の場合

$ sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazonssm-agent.rpm

▼アーキテクチャがamd64の場合

$ sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazonssm-agent.rpm

今回インストール対象とするマシンは、x86_64アーキテクチャです。インストールコマンドを実行すると、ただちにSSM Agentのダウンロードとインストールが始まるので注意してください。

コマンド実行後、インストール処理の結果が逐次出力され、完了すると出力最終行に Complete! と表示されます。

▼インストールコマンド実行後の出力例

[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpmsudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

Last metadata expiration check: 0:54:29 ago on Thu 12 Dec 2024 08:30:30 AM UTC.
amazon-ssm-agent.rpm                            3.1 MB/s |  24 MB     00:07    
Dependencies resolved.
================================================================================
 Package               Arch        Version              Repository         Size
================================================================================
Installing:
 amazon-ssm-agent      x86_64      3.3.1345.0-1         @commandline       24 M

Transaction Summary
================================================================================
Install  1 Package

Total size: 24 M
Installed size: 122 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64                   1/1 
  Preparing        :                                                        1/1 
  Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64                   1/1 
  Installing       : amazon-ssm-agent-3.3.1345.0-1.x86_64                   1/1  
Created symlink /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service → /etc/systemd/system/amazon-ssm-agent.service.

  Verifying        : amazon-ssm-agent-3.3.1345.0-1.x86_64                   1/1 
Installed products updated.

Installed:
  amazon-ssm-agent-3.3.1345.0-1.x86_64                                          

Complete!

4.インストール完了後、問題なくインストールされているかは、次のコマンドを実行することで確認できます。

$ rpm -qa | grep ssm

5.SSM Agent が正常に起動できているかは、次のサービス状態確認コマンドを実行することで確認できます。

$ sudo systemctl status amazon-ssm-agent.service

正常に実行されている場合、次のようにステータス情報が出力されます。

Loaded: loaded(/etc/systemd/system/amazon-ssm-agent.service; enabled; …
Active : active(running)

▼実際に確認コマンドを実行して得られる出力結果

SSM Agentが実行されておらず、次のように出力される場合もあります。

● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendo>
Active: inactive (dead) since Tue 2022-04-19 16:42:05 UTC;
2s ago
--truncated–

この場合は、次のコマンドを2つとも実行してSSM Agentをアクティブ化しましょう。

▼SSM Agent の自動起動有効化

$ sudo systemctl enable amazon-ssm-agent

▼SSM Agent の起動

$ sudo systemctl start amazon-ssm-agent

※自動起動は有効にしておきましょう。無効状態だとマシンを起動する際にSSM Agentサービスが起動せず、Systems Managerでの監視ができません。一般的に監視エージェントのような常時運用するサービスは自動起動させます。

これら2つのコマンドを実行後、先述のサービス状態確認コマンドを実行し、LoadedとActiveのステータスが変更されていればアクティブ化は完了です。

以上で、LinuxインスタンスへのSSM Agentインストールは完了です。

オンプレミスへのインストール

ハイブリッドアクティベーションの作成

EC2インスタンスではないオンプレミスマシンやVM(仮想マシン)をSystems Manager の管理ノードに追加する場合、SSM Agentのインストールに加えてハイブリッドアクティベーションを実施する必要があります。
以降では、SSMAgentの準備作業としてアクティベーションの作成手順を説明します。

1.AWS管理コンソールにログインし、Systems Managerの画面に移動します。

2.Systems Managerの左ペインにあるメニューより、「ハイブリッドアクティベーション」のリンクをクリックします。

「ハイブリッドアクティベーション」のリンクをクリック

3.表示される画面にて、「アクティベーションを作成する」をクリックします。

「アクティベーションを作成する」をクリック

4.アクティベーション設定画面が表示されるので、次の設定項目について、それぞれ入力します。

  • アクティベーションの説明– オプション
  • インスタンス制限
  • IAM ロール
  • アクティベーションの有効期限
  • デフォルトのインスタンス名– オプション

これらの設定項目で重要なのは、「インスタンス制限」、「IAMロール」、「アクティベーションの有効期限」です。

インスタンス制限

今回アクティベーション予定のオンプレミスマシンやマルチクラウドのマシン数に合わせて設定します。少し余裕を持たせて設定するといいでしょう。

IAMロール

「システムによって作成されたデフォルトのロール」か「必要な許可を持つ既存のカスタムIAMロールを選択する」を選択します。カスタムIAMロールを使用する場合は、事前にIAMロールを作成しておき、「AmazonSSMManagedInstanceCore」をポリシーで許可しておきましょう。

アクティベーションの有効期限

アクティベーション作業を行う予定スケジュールに合わせて、今後30日間の範囲で任意の日付を指定しましょう。日付のみ設定すればよく、時間まで設定する必要はありません。

5.すべて設定を終えたら、「アクティベーションの設定」をクリックします。

「アクティベーションの設定」をクリック

6.アクティベーションが正常に作成されると、次のメッセージが表示されます。この「Activation Code」と「Activation ID」は、後のSSM Agentインストール時に使用するので、このタイミングで控えてください。

「Activation Code」と「Activation ID」を控える

これでアクティベーションの準備は完了です。

Windowsマシンへのインストール

オンプレミスのWindowsマシンにSSM Agentをインストールする手順を説明します。今回はWindows Server 2022 Standard のWindows VMを対象に手順を検証しています。

1.インストール対象のWindowsマシンに接続およびログインします。

2.インターネット経由でSSM Agentインストーラをダウンロードします。ブラウザを起動して、次のURLに接続するとただちにダウンロードが始まり、AmazonSSMAgentSetup.exe がダウンロード先に保存されます。
※先述のEC2 Windows インスタンスで利用しているインストーラと同じURLです。

https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe

3.Windowsマシンのスタートメニューを右クリックして、表示されるメニューより「Windows PowerShell(管理者)」をクリックします。

「Windows PowerShell(管理者)」をクリック

4.起動したWindows PowerShellで以下2つのコマンドを順に実行します。

$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force

5.次のコマンドを実行し、手順2でダウンロードしたAmazonSSMAgentSetup.exe を手順4で作ったディレクトリに移動します。

mv C:\Users\Administrator\Downloads\AmazonSSMAgentSetup.exe $dir\

6.次のコマンドを実行し、WindowsマシンへのSSMAgentインストールとSystems Manager へのマネージドノード登録を行います。
activation-codeactivation-idは、Systems Manager のアクティベーション作成時に控えた値を入力します。regionは、Systems Managerを使用しているリージョンを入力します。

[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$code = "activation-code"
$id = "activation-id"
$region = "region"
cd $dir
Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log",
"CODE=$code", "ID=$id", "REGION=$region") -Wait

7.インストールを確認するには、次のコマンドを実行します。

Get-Service -Name “AmazonSSMAgent”

インストールが完了し、SSMAgentが正常に稼働しているならStatus: Runningが出力されます。

▼コマンド実行例

コマンド実行例

8.Systems Managerマネージドノードとしての登録を確認するには、次のコマンドを実行します。

Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")

マネージドノードとして登録が正常に行われている場合は、ManagedInstanceIDが出力されます。

▼コマンド実行例

コマンド実行例

Linuxマシンへのインストール

オンプレミスのLinuxマシンにSSM Agentをインストールする手順を説明します。今回はCentOS 9 のLinux VMを対象に手順を検証しています。

1.インストール対象のLinuxマシンに接続およびログインします。

2.対象マシンのアーキテクチャに合わせて、インストールコマンドを実行します。今回対象となるCentOS 9 はx86_64 アーキテクチャです。

▼アーキテクチャがx86_64の場合

# sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazonssm-agent.rpm

▼アーキテクチャがamd64の場合

# sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazonssm-agent.rpm

インストールが成功すると、rpmがインストール済みである旨、処理が完了した旨がコマンド実行結果として出力されます。

▼インストールコマンド実行結果

インストールコマンド実行結果

3.インストールしたSSM Agentの状態を確認するには、次のコマンドを実行します。

# sudo systemctl status amazon-ssm-agentsudo systemctl status amazon-ssm-agent

正常に稼働していれば次のように出力されます。

● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; pre>
Active: activating (auto-restart) since Sat 2024-12-14 21:26:53 JST; 1min >
Main PID: 10203 (code=exited, status=0/SUCCESS)
CPU: 409ms

4.次にLinuxマシンをマネージドノードとしてSystems Manager に登録します。
次のコマンドを続けて実行し、ssm-setup-cli をダウンロードします。ssm-setup-cliは、マネージドノード追加に必要なツールです。

# mkdir /tmp/ssm
# curl https://amazon-ssm-region.s3.region.amazonaws.com/latest/linux_amd64/ssm-setup-cli -o/tmp/ssm/ssm-setup-cli

※regionはAWSで利用しているリージョン名に置き換えてください。東京リージョンの場合は、ap-northeast-1であり、次のように置き換えます。

# curl https://amazon-ssm-region.s3.region.amazonaws.com/latest/linux_amd64/ssm-setup-cli -o/tmp/ssm/ssm-setup-cli

ダウンロードされたかどうか確認するには、次のコマンドを実行します。

# ls /tmp/ssm

ssm-setup-cli と出力されれば、きちんとダウンロードされています。

5.次のコマンドを実行して、ssm-setup-cliの実行権限を変更します。

# sudo chmod +x /tmp/ssm/ssm-setup-cli

実行権限が変更されたことを確認するには、次のコマンドを実行します。

# ls -l /tmp/ssm/

結果が次のように出力されれば、実行権限は正常に変更されています。

-rwxr-xr-x. 1 root root 14375896 12月14 12:32 ssm-setup-cli

6.次のコマンドを実行します。
activation-codeactivation-idは、Systems Manager のアクティベーション作成時に控えた値を入力します。regionは、Systems Managerを使用しているリージョンを入力します。

echo "yes" | sudo /tmp/ssm/ssm-setup-cli -register -activation-code
"activation-code" -activation-id "activation-id" -region "region"

コマンドを実行すると、当該Linuxマシンをマネージドノードとして登録する処理が開始されます。出力結果の最終行に次のメッセージが出力されれば、処理は完了です。

YYYY-MM-DD hh:mm:ss INFO Agent registration completed

マネージドノードの確認

マネージドノードとして登録したオンプレミスマシンは、Systems Manager 管理コンソールから確認できます。

ノードのインサイトを確認

1.AWS管理コンソールにログインし、Systems Managerの画面に移動します。
※詳細な手順は「ハイブリッドアクティベーションの作成」で説明しています。

2.Systems Managerの左ペインにあるメニューより、「ノードのインサイトを確認」のリンクをクリックします。

「ノードのインサイトを確認」のリンクをクリック

3.表示される画面より次のような情報を確認できます。

▼ノード概要

AWS環境におけるマネージドノードとアンマネージドEC2インスタンスの割合を表示します。
※ハイブリッドアクティベーションが済んでいない非EC2インスタンスは表示されません。

ノード概要

▼マネージドノードタイプ

マネージドノードのうち、EC2インスタンスとハイブリッドノードの割合を表示します。

マネージドノードタイプ

▼SSMエージェントのバージョン

マネージドノードに実装されているSSM Agentのバージョン情報を表示します。環境全体でバージョンが統一されているかが一目でわかります。

SSMエージェントのバージョン

▼マネージドノードオペレーティングシステム

マネージドノードのうち、使用されているOSの内訳を割合で表示します。

マネージドノードオペレーティングシステム

ノードの詳細を確認

1.AWS管理コンソールにログインし、Systems Managerの画面に移動します。
 ※詳細な手順は「ハイブリッドアクティベーションの作成」で説明しています。

2.Systems Managerの左ペインにあるメニューより、「ノードを詳しく見る」のリンクをクリックします。

「ノードを詳しく見る」のリンクをクリック

3.マネージドノードをリストで確認することができます。
ノードIDが ”i-” で始まるものはEC2インスタンス、”mi-” で始まるものはオンプレミス(VM含む)を示すノードです。ちなみに、エッジデバイスはAWS IoT Thingsの名前が表示されます。

マネージドノードをリストで確認

さいごに

さて、今回は「AWS Systems Managerフル攻略マニュアル」の第2回ということで、AWS Systems Managerのマネージドノードを追加する手順を説明しました。
この記事を参考にしていただければ、EC2インスタンスでもオンプレミスでも、新たにSystems Managerの管理下にノードを追加する作業もスムーズにできるはずです。

サーバエンジニア歴7年、ネットワークエンジニア歴4年。 長らくSI業界のインフラ部隊に勤め、基本設計から導入まで一通りの経験あり。

人気の記事

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録