Rundeck(version:3.0.22)のdocker版を冗長構成で利用しようとしたところ、全てのコンテナのUUIDが同じで、再起動しても毎回同じ値になるので設定箇所を調査した。 コンテナに入り、設定値を確認 再起動しても同じ コンテナ起動時に実行されるのは rundeck/Dockerfile at release/3.0.22 · rundeck/rundeck · GitHub rundeck/entry.sh at release/3.0.22 · rundeck/rundeck · GitHub コンテナ起動時に デフォルト値はどこ? rundeck/entry.sh at release/3.0.22 · rundeck/rundeck · GitHub rundeck/100_defaults.sh at release/3.0.22 · rundeck/rundeck · GitHub clusterモードでジョブを他系に引き継ぐにはUUIDがそれぞれでユニークになる必要あるので、起動時に RUNDECK_SERVER_UUID
Identifies Rundeck instances when multiple are running in the same cluster. While hard-coded to a default for getting started, this should be set manually for more advanced configurations.はじめに
調査
実際の設定値
docker exec -it 45b59a2ea285 bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
rundeck@45b59a2ea285:~$ grep uuid /home/rundeck/etc/framework.properties
rundeck.server.uuid = a14bc3e6-75e8-4fe4-a90d-a16dcc976bf6
rundeck@45b59a2ea285:~$
a14bc3e6-75e8-4fe4-a90d-a16dcc976bf6
が設定されるuuidの設定箇所
entry.sh
ENTRYPOINT [ "/tini", "--", "docker-lib/entry.sh" ]
entry.sh
内ではRUNDECK_SERVER_UUID
変数の値から判断# Generate a new server UUID
if [[ "${RUNDECK_SERVER_UUID}" = "RANDOM" ]] ; then
RUNDECK_SERVER_UUID=$(uuidgen)
fi
echo "rundeck.server.uuid = ${RUNDECK_SERVER_UUID}" > ${REMCO_TMP_DIR}/framework/server-uuid.properties
RUNDECK_SERVER_UUID
変数は特に指定していないentry.sh
内でincludeしてるファイルがあるfor inc in $(ls $DIR/includes | sort -n); do
source $DIR/includes/$inc
done
100_defaults.sh
内でデフォルト値が設定されてた!RUNDECK_SERVER_UUID="${RUNDECK_SERVER_UUID:-a14bc3e6-75e8-4fe4-a90d-a16dcc976bf6}"
結論
RUNDECK_SERVER_UUID
変数を明示的に指定する必要がある。