はじめに
SRE2課の篠﨑です。
今回はEC2インスタンス作成の際に使うUserdataでSSM Agentを入れる方法について書いていこうと思います。
Amazon LinuxなどAMIによってはデフォルトで入っているものもあるかとは思いますが、RHEL 7やRHEL 8などではデフォルトでSSM Agentが入っていないものしか用意されていない場合もあります。
こういった場合、Userdataに組み込んであげてSSM Agentの導入ができればインスタンスに入って行う作業が減るので楽ですよね!!
ということで今回は特にRHEL 7、RHEL 8でSSM Agentを導入するためのUserdataの書き方について紹介していこうと思います。
全体像
先に、今回のゴールとなるものを提示します。 こちらはRHEL 7にUserdataを用いたSSM Agentを導入するためのものとなります。
#!/bin/bash -v # Metadata AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) Region=$(echo ${AZ} | sed -e 's/.$//g') # Install SSM Agent yum install -y https://s3.${Region}.amazonaws.com/amazon-ssm-${Region}/latest/linux_amd64/amazon-ssm-agent.rpm # Enable SSM Agent systemctl enable amazon-ssm-agent systemctl is-enabled amazon-ssm-agent systemctl restart amazon-ssm-agent systemctl status amazon-ssm-agent
部分解説
基本的には、Amazon公式ドキュメントにある通りに入れてあげることでインストールすることが可能です。
後述するインストールコマンドを見ていただくと分かるかとは思うのですが、インスタンスを立てるリージョンの識別子が必要となりますので、先に、インスタンスメタデータを活用して取得しましょう。
# Metadata AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) Region=$(echo ${AZ} | sed -e 's/.$//g')
インストールコマンド
次に、インストールコマンドを書きます。
RHEL 7.xの場合
Intel 64-bit (x86_64) インスタンス:
yum install -y https://s3.${Region}.amazonaws.com/amazon-ssm-${Region}/latest/linux_amd64/amazon-ssm-agent.rpm
ARM 64-bit (arm64) インスタンス:
yum install -y https://s3.${Region}.amazonaws.com/amazon-ssm-${Region}/latest/linux_arm64/amazon-ssm-agent.rpm
(${Region}には立てるリージョンの識別子を代入します。)
※ 注意点
インターネットと接続ができない場合、S3のエンドポイントの設定をすることでインストールをすることができます。
RHEL 8.xの場合
Intel 64-bit (x86_64) インスタンス:
sudo dnf install -y https://s3.${Region}.amazonaws.com/amazon-ssm-${Region}/latest/linux_amd64/amazon-ssm-agent.rpm
ARM 64-bit (arm64) インスタンス:
sudo dnf install -y https://s3.${Region}.amazonaws.com/amazon-ssm-${Region}/latest/linux_arm64/amazon-ssm-agent.rpm
(${Region}には立てるリージョンの識別子を代入します。)
※ 注意点
RHEL 8の場合はinstall時にレポジトリと通信を行うため、S3エンドポイントがあっても、インターネットと接続ができない場合はインストールができません。
また、インターネットと接続ができないままUserdataに入れてインスタンスを起動させると、タイムアウトが起こるため、時間がかかってしまいますので、NATやプロキシの設定を行うなどしてからインストールを行ってください。
Agentの有効化
以下コマンドを入れることで、SSM Agentを有効にすることができます。
systemctl status amazon-ssm-agent systemctl enable amazon-ssm-agent systemctl is-enabled amazon-ssm-agent systemctl restart amazon-ssm-agent systemctl status amazon-ssm-agent
さいごに
「そういえばこのEC2、RHELだからSSMできないのでは、、」と不安になることもあるかと思いますので、ぜひ構築をする際にはUserdataを活用してSSMを導入してみてください。
篠﨑 勇輔(書いた記事を見る)
クラウドインテグレーション部 SA1課