NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

オンプレミス Windows Server を AWS Systems Manager 管理下にする

本記事は  AWSアワード記念!夏のアドベントカレンダー  21日目の記事です。
🎆🏆  20日目  ▶▶ 本記事 ▶▶  22日目  🏆🎆

こんにちは、クラウド事業推進部所属の今村です。
今年の夏も暑い日が続いておりますが、暑さに負けずゴルフを頑張っております。
最近はナイターゴルフに興味津々です。

この度、2024 Japan AWS All Certifications Engineer に選出いただき、 AWSアワード記念!夏のアドベントカレンダー の21日目を担当させていただくことになりました。

今回はオンプレミス Windows Server に AWS Systems Manager エージェント(以降、SSM Agent) をインストールして AWS Systems Manager (以降、SSM) 管理下にしてみたというテーマです。
SSM Agent をインストールすることで、 SSM の Patch Manager や Run Command といった機能をオンプレミス環境でも利用できるようになります。
AWS 環境の運用をサポートする機能をオンプレミス環境でも利用できることを知るきっかけになれば嬉しいです。

はじめに

SSM Agent とは

SSM Agent は公式ドキュメントでは以下のように説明されています。

AWS Systems Manager エージェント (SSM Agent) は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) で実行される Amazon のソフトウェアです。SSM Agent を使用すると、AWS Systems Manager でこれらのリソースを更新、管理、設定できるようになります。エージェントは、AWS クラウド で Systems Manager サービスからのリクエストを処理し、リクエストで指定されたとおりに実行します。SSM Agent は、Amazon Message Gateway Service (ssmmessages) を使用して、Systems Manager サービスにステータスと実行情報を返します。

docs.aws.amazon.com つまり SSM Agent をインストールすれば、EC2のみならずオンプレミスサーバーも SSM による管理が可能になり、 SSM の Patch Manager や Run Command といった機能をオンプレミス環境でも利用できるようになります。

簡単な構成紹介

オンプレミスサーバーを SSM 管理下にするために最低限必要なリソースを整理しました。 ①管理したいサーバーに SSM Agent がインストールされている
② SSM Agent と AWS の間での通信を有効にするための IAM ロールが設定されている(システムによって作成されたデフォルトのロールでひとまずOKです)
③管理したいサーバーがインターネットとの通信が可能である

これら3つをクリアすることで、 SSM Agent は SSM からのリクエストを処理し、リクエストで指定されたとおりに実行できるようになります。

SSM Agent インストール手順の概要

手順は大きく分けて以下3つで、結構簡単に SSM Agent をインストールすることができます。
① SSM でアクティベーションを作成
②オンプレミスサーバーでアクティベーション情報を含むコマンドを実行し、 SSM Agent をインストール
③インストールされていることを確認
それでは詳細を見ていきましょう。

① SSM でアクティベーションを作成

まずは AWS コンソール上でのポチポチ作業です。

①-1 SSM のコンソール画面に移動

SSM のハイブリッドアクティベーションにて「アクティベーションを作成する」を押下

①-2 遷移先の画面で必要項目入力

項目 説明
アクティベーションの説明– オプション アクティベーション一覧での説明部分になる
インスタンス制限 SSM Agent を登録する数を指定する
IAM ロール システムによって作成されたデフォルトのロール
アクティベーションの有効期限 アクティベーションを作成したその日に SSM Agent のインストールを完了させるのであれば設定不要
デフォルトのインスタンス名– オプション フリートマネージャ画面でのノード名になる

名前とインストールする Agent の数を入力するだけなので難しいことは考えなくて大丈夫です。

①-3 インストールに必要な情報を取得

「アクティベーションの作成」を押下 すると、画面上部に「Activation Code」と「Activation ID」が表示されるので、これを記録しておきます。 (まだインストールしていないので「登録済みインスタンス」は "0" )

②オンプレミス Windows Server 上でコマンドを実行し、 SSM Agent をインストール

インストール先サーバーでの作業です。

②-1 インストール用のコマンドを実行

オンプレミス Windows Server 上で管理者権限の Windows PowerShell を開き、諸々の変数をセットしてインストール用のコマンドを実行します。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
PS C:\Users\imamura> $code = "<取得したActivation Code>"
PS C:\Users\imamura> $id = "<取得したActivation ID>"
PS C:\Users\imamura> $region = "ap-northeast-1"
PS C:\Users\imamura> $dir = $env:TEMP + "\ssm"
PS C:\Users\imamura> New-Item -ItemType directory -Path $dir -Force

    ディレクトリ: C:\Users\imamura\AppData\Local\Temp

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/08/04      7:36                ssm

PS C:\Users\imamura> cd $dir
PS C:\Users\imamura\AppData\Local\Temp\ssm> (New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-$region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe")
PS C:\Users\imamura\AppData\Local\Temp\ssm> Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=$code", "ID=$id", "REGION=$region") -Wait
PS C:\Users\imamura\AppData\Local\Temp\ssm> Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")
{"ManagedInstanceID":"mi-029e27053a3613a36","Region":"ap-northeast-1"}
PS C:\Users\imamura\AppData\Local\Temp\ssm> Get-Service -Name "AmazonSSMAgent"
Status   Name               DisplayName
------   ----               -----------
Running  AmazonSSMAgent     Amazon SSM Agent

PS C:\Users\imamura\AppData\Local\Temp\ssm> 

以上でインストール完了です。 先ほどまで "0" だった「登録済みインスタンス」が "1" になっています。

③インストールされていることの確認

では、最後にインストールされていることを別の方法からも確認してみます。

③-1 オンプレミス Windows Server のホスト名を確認

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
PS C:\Users\imamura\AppData\Local\Temp\ssm> hostname
WINDOWS-193UV74
PS C:\Users\imamura\AppData\Local\Temp\ssm>

インストール先サーバーホスト名は "WINDOWS-193UV74" です。
SSM は正しく認識してくれているでしょうか。

③-2 SSM のフリートマネージャーでの確認

SSM 管理下のマネージドノードは同じく SSM のフリートマネージャーで確認可能です。 OSが Windows として認識され、ホスト名も正しく認識されてるみたいです。

まとめ

このように、オンプレミス Windows Server への SSM Agent インストールはとても簡単です!
オンプレミス環境のサーバーに SSM Agent をインストールしてAWS 環境の運用をサポートする機能が多く含まれるAWS Systems Manager を活用してみてはいかがでしょうか。