0
0

EC2でユーザーデータとCodeDeployの実行順序を制御する

Last updated at Posted at 2024-07-14

概要

EC2起動時にユーザデータを使用して処理を実行させることができます。
また、オートスケーリンググループを使用してEC2を起動した場合は、ライフサイクルフックを利用してCodeDeployにデプロイを実行する事が可能です。

ユーザデータ実行中にCodeDeployを起動するのではなく、ユーザデータが終了した後にCodeDeployを起動したい時の設定方法を説明します。

image.png

環境

以下の環境を想定します

  • AWS
    • EC2(Linux)
    • オートスケーリンググループによりEC2を起動
    • CodeDeployでデプロイを実行

設定方法

CodeDeployを実行する場合は、対象となるEC2にCodeDeploy Agentのインストールを行います。
CodeDeploy Agentをユーザデータ終了後に起動する設定を実施します。

1. ユニットファイルのコピー

/usr/lib/systemd/system/ にあるCodeDeployのユニットファイルを
/etc/systemd/system/ にコピー

2.ユニットファイルの修正

[Unit]の項目目の下に Afterを追加します。
すでにAfterの行がある場合は(多分あるはず)、その行に cloud-final.service をスペース区切りで追記します。

[Unit]
After=cloud-final.service    # これを追加する

ユニットファイルの編集が完了したら、設定を有効にするためデーモンリロードします

sudo systemctl daemon-reload

これで順番の制御ができているか動作確認を行います。
CodeDeployに限らず、systemctlで起動しているサービスは順序の制御が可能ですので、他のサービスについても応用可能だと思います。

参考

  • systemd 管理のサービスをcloud-init の後に実行する

  • 10.6. systemd のユニットファイルの作成および変更

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0