こんにちは、ピクトリンク開発で運用保守を担当している藤本です。
※この記事は、前回の記事 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 も必須