Rocky Linux の起動時に Systems Manager ステートマネージャーを実行してみた

Rocky Linux の起動時に SSM Agent をインストールし Systems Manager ステートマネージャーを実行してみました
2022.12.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、望月です。
前回、Rocky Linux で起動時に SSM Agent と AWS CLI を User data でインストールしてみたというブログを書きました。

Rocky Linux に SSM Agent と AWS CLI を User data でインストールしてみた

このブログを書いた理由としてそもそも SSM ステートマネージャーを利用する場合は SSM Agent が必要となり、Rocky Linux の起動時に SSM ステートマネージャーを利用し Web サーバーをセットアップすることができるかというのを確認するためにまずは User data で SSM Agent と AWS CLI をインストールしてみました。

今回は起動時に SSM ステートマネージャーを利用し Web サーバーをセットアップできるかを確認していきたいと思います。

やってみた

ステートマネージャーの関連付けの作成

ステートマネージャーのコンソールに移動し、関連付けの作成を行います。

設定については以下内容にて設定を行っています。

  • 名前: rockylinux-startup-web
    • 例として rockylinux-startup-web という名前にしています
  • ドキュメント: AWS-RunShellScript
    • 実行するコマンドを指定するために AWS-RunShellScript を選択しています
  • パラメーター: 実行するコマンドについては以下を参照
sudo dnf update -y
sudo dnf install -y httpd php
sudo systemctl start httpd
sudo systemctl enable httpd
sudo usermod -a -G apache rocky
sudo chown -R rocky:apache /var/www
sudo chmod 2775 /var/www
sudo find /var/www -type d -exec chmod 2775 {} \;
sudo find /var/www -type f -exec chmod 0664 {} \;
sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
  • ターゲットの選択: インスタンスタグを指定 (Key: Env / Value: Web)
    • 特定のインスタンスのみ実行するためにタグを利用し、インスタンスを指定する形にしています。ここでは Env / Web を指定しています。
  • スケジュールを指定: スケジュールなし
    • 関連付けを1回のみ実行するためにスケジュールなしを選択しています

EC2 インスタンスの作成

作成時にはタグの設定を以下のように Key: Env / Value: Web で行い、User data で SSM Agent をインストールするのを忘れないようにしましょう。

SSM Agent をインストールするための User data については以下ブログをご確認ください。

Rocky Linux に SSM Agent と AWS CLI を User data でインストールしてみた

EC2 インスタンスの確認

EC2 インスタンスに HTTP アクセスし 「http://[IPアドレス]/phpinfo.php」 で PHP Info が閲覧でき 「http://[IPアドレス]/」 で Apache のテストページが閲覧できれば問題ありません。

また、SSM ステートマネージャー側でも実行ログを確認することができます。 ステートマネージャーの一覧から Success: 1 になっていることを確認でき、以下流れのように実行 ID 等をたどっていくと最終的に Run Command の実行ログを確認することができます。

  • ステートマネージャーの一覧から関連 ID をクリック
  • 続けて実行 ID をクリック
  • リソース ID に対象インスタンス ID であることを確認し、出力の Output をクリック

まとめ

Rocky Linux の起動時に SSM ステートマネージャーを実行し、ステートマネージャーを使って Web サーバーのセットアップを行うことが出来ました。 しかし、そもそも User data でステートマネージャーで実行しているコマンドも一緒に流せばいいと思いましたよね。私も思いました。

今回、User data を利用しているのは Rocky Linux が SSM Agent をデフォルトでインストールされていないからで、Amazon Linux 2 などであれば、そもそも User data を利用する必要がなく、ステートマネージャーのみで完結することが出来ます。

そこで気になるのが User data をステートマネージャーに置き換えるのはどうなんだろうということです。複数の記事に分けてしまいましたが次回は User data とステートマネージャーの機能を比較し、どういった使い分けが考えられるかということを記事にしたいと思います。