対象者
Rocky LinuxをSystems Managerのセッションマネージャー機能で繋ぎたいが、プライベートサブネットに配置してあってログインできないためssm agentを入れられない人向け
用語解説
Systems Manager・・WindowsやLinuxにコンソールからログイン出来たり、ログインしなくてもコンソール上でコマンドを一括投下できたりする便利なサービス
ssm agent・・今回Rocky Linuxに入れたいエージェント。これがOSにインストールされていることでSystems Managerのセッションマネージャー機能を使ってコンソールから直接ログインが来出る
環境
プライベートサブネットに配置されたRocky Linux9.4
事前作業
ここでは手順は割愛しますが、以下の設定を事前に行って下さい。
①セッションマネージャーを使うためのエンドポイントを作成する
②対象EC2のロールには、「AmazonS3FullAccess」⇐(これはいらないかも)と「AmazonSSMManagedInstanceCore」を付けておく
③S3のエンドポイントを作成する⇐ネットへのルートがある場合(NatGatewayとか)には必要ないです。
やり方
実はそんなに難しくないです。
EC2を作成する時設定の最後に、このような画面があるのはご存じでしょうか。
ユーザーデータとは、OSの起動時に一度のみ実行させたいコマンドを記載する箇所になります。
ここに「ssm agent」のインストールを記述しておくことで起動時にインストールされ、起動したときにはセッションマネージャーの画面に表示されるはずです。
記載は以下です。
#!/bin/bash
cd /tmp
sudo curl -OL https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
sudo rpm -ivh amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl restart amazon-ssm-agent
インストール後のrpmファイルはいらないので、勝手に消える/tmpにインストールされるように事前に/tmpに移動してから実行しています。
今回は、インストール元として「https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm」を指定しています。
パス内にあるlinux_amd64という部分が、Linuxのアーキテクチャ(x86_64とかARM64)によって変わるので環境によって変えてください。
以下の公式ページが参考になると思います。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/agent-install-al.html
公式ページにRocky Linuxのssm agentインストール手順もありますが、これはインターネットに出られないサーバでは使えないものになっています。
公式ページ
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/agent-install-rocky.html
理由はこちらのサイトが分かりやすく解説してくれています。
https://blog.serverworks.co.jp/agent-install-with-privatelink
無事インストール出来たでしょうか?
誰かのお役に立てれば幸いです。
補足
インターネットに出られないサーバだとCloudWatchも入れられないと思うので、その場合は以下のコマンドでインストールして下さい。
curl -OL https://amazoncloudwatch-agent-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/redhat/amd64/latest/amazon-cloudwatch-agent.rpm
(まぁインターネットに出られないとメトリクスも送信できないので一部しかCloudWatchでは見られませんが、、)
インターネットには出れないけどメトリクス送信したい場合は、別途CloudWatch用のエンドポイントを作成してください。
以上!!