FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

Amazon Linux 2 EOL をきっかけに Rundeck を ECS 化してハマった話(ノード・SSH編):その➁

こんにちは、ピクトリンク開発で運用保守を担当している藤本です。

※この記事は、前回の記事 Amazon Linux 2 EOL をきっかけに Rundeck を ECS 化してハマった話(環境変数編):その① の続きです。
前回の記事では、ECS コンテナ内で Rundeck を起動する際の環境変数や entrypoint の設定でハマったポイントをまとめました。 その➁では、SSH 接続・ノード定義・Network Error などのハマりどころを紹介します。


ノード定義と Network Error の問題

ECS 上で Rundeck を起動したとき、resources.xml に定義した localhost ノードが Network Error になる現象に遭遇しました。
パスワードなしでログインするために、公開鍵など/home/rundeck/.ssh/配下にデプロイするようにDockerfileに書いています。 ポイントは以下です。

  • 他の EC2 ノードには パスワードなしでSSH ログイン可能
  • localhost は最初 SSH できず、Network Error が出る
  • Rundeck GUI でプロジェクトを開くと、ジョブの実行が失敗する

ハマったポイント①:rundeck ユーザで SSH できない

現象

rundeck@ecs-container:~$ ssh localhost
Permission denied (publickey)

原因

  • .sshディレクトリや鍵ファイルの権限・所有者が正しくない
  • ECS コンテナのベースイメージでは rundeck グループが存在せず、権限がrundeck:rootになっていた

解決策:rundeck ユーザの権限調整

1. Rundeck ユーザ用のグループ作成

ECS コンテナのベースイメージでは rundeck グループが存在しないため、Dockerfile 上で作成しました。

# rundeck グループ作成(存在しない場合)
RUN groupadd -g 1000 rundeck \
    && usermod -g rundeck rundeck

2..ssh ディレクトリと鍵ファイルの権限を調整

ECS コンテナ内で Rundeck が SSH を使えるようにするために、Dockerfile 上で以下を実施しました。

# .ssh ディレクトリと鍵ファイルの権限を調整
RUN chmod 700 /home/rundeck/.ssh \
 && chmod 600 /home/rundeck/.ssh/id_rsa \
 && chmod 644 /home/rundeck/.ssh/id_rsa.pub \
 && chmod 600 /home/rundeck/.ssh/authorized_keys \
 && chown -R rundeck:rundeck /home/rundeck/.ssh

3. rundeck 公開鍵をauthorized_keysに登録

RUN cat /home/rundeck/.ssh/id_rsa.pub >> /home/rundeck/.ssh/authorized_keys \
 && chown rundeck:rundeck /home/rundeck/.ssh/authorized_keys \
 && chmod 600 /home/rundeck/.ssh/authorized_keys

これで rundeck ユーザが localhost にパスワードなしで SSH 接続可能に


ハマったポイント➁:resources.xml と project.properties

現象

  • Rundeck のジョブを ECS 上で実行すると、localhost や他ノードに対して Network Errorが出る

  • GUI 上ではジョブが失敗してしまう

原因

  • resources.xml にノード情報を配置しても、SSH 設定が正しくないと接続できない
  • localhost だけでなく、他ノードも含め authorized_keys に鍵情報が存在し、権限が正しいこと が重要
  • project.properties が正しく設定されていないと自動ジョブ実行ができない

解決策:resources.xml / project.properties の配置と権限設定

1. resources.xmlを正しい場所に配置し、権限を設定

COPY ${ENVIRONMENT_NAME}/project/pictlink/resources.xml /home/rundeck/projects/pictlink/etc/resources.xml
RUN chown rundeck:rundeck /home/rundeck/projects/pictlink/etc/resources.xml \
    && chmod 644 /home/rundeck/projects/pictlink/etc/resources.xml

2.project.propertiesを正しい場所に配置し、権限を設定

COPY ${ENVIRONMENT_NAME}/project/pictlink/project.properties \
     /home/rundeck/projects/pictlink/etc/project.properties
RUN chown rundeck:rundeck /home/rundeck/projects/pictlink/etc/project.properties \
    && chmod 644 /home/rundeck/projects/pictlink/etc/project.properties

3. 確認ポイント

  • resources.xmlはノード情報
  • project.propertiesはプロジェクト全体の設定
  • 両方揃って初めてジョブが自動実行可能

記事➁のまとめ

  • ECS では rundeck ユーザの SSH 権限設定が非常に重要
  • authorized_keys に公開鍵を追記し、権限・所有者を適切に設定
  • resources.xml だけではジョブ実行は完結せず、project.properties も必須