|
|
@@ -260,15 +260,43 @@ if [ -z "$RELX_CONFIG_PATH" ]; then
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
+IS_BOOT_COMMAND='no'
|
|
|
+case "$1" in
|
|
|
+ start|start_boot)
|
|
|
+ IS_BOOT_COMMAND='yes'
|
|
|
+ ;;
|
|
|
+ console|console_clean|console_boot)
|
|
|
+ IS_BOOT_COMMAND='yes'
|
|
|
+ ;;
|
|
|
+ foreground)
|
|
|
+ IS_BOOT_COMMAND='yes'
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+
|
|
|
if [ -z "$NAME_ARG" ]; then
|
|
|
NODENAME="${EMQX_NODE_NAME:-}"
|
|
|
# compatible with docker entrypoint
|
|
|
[ -z "$NODENAME" ] && [ -n "$EMQX_NAME" ] && [ -n "$EMQX_HOST" ] && NODENAME="${EMQX_NAME}@${EMQX_HOST}"
|
|
|
- [ -z "$NODENAME" ] && NODENAME=$(grep -E '^[ \t]*node.name[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | cut -d = -f 2-)
|
|
|
+ if [ -z "$NODENAME" ] && [ "$IS_BOOT_COMMAND" = 'no' ]; then
|
|
|
+ # for non-boot commands, inspect vm.<time>.args for node name
|
|
|
+ LATEST_VM_ARGS="$(ls -t $RUNNER_DATA_DIR/configs/vm.*.args | head -1)"
|
|
|
+ if [ -z "$LATEST_VM_ARGS" ]; then
|
|
|
+ echo "For command $1, there is no vm.*.args config file found in $RUNNER_DATA_DIR/configs/"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+ NODENAME="$(grep -E '^-name' $LATEST_VM_ARGS | awk '{print $2}')"
|
|
|
+ else
|
|
|
+ # for boot commands, inspect emqx.conf for node name
|
|
|
+ NODENAME=$(grep -E '^[ \t]*node.name[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | cut -d = -f 2-)
|
|
|
+ fi
|
|
|
if [ -z "$NODENAME" ]; then
|
|
|
- echoerr "vm.args needs to have a -name parameter."
|
|
|
- echoerr " -sname is not supported."
|
|
|
- echoerr "perhaps you do not have read permissions on $RUNNER_ETC_DIR/emqx.conf"
|
|
|
+ echoerr "Failed to resolve emqx node name"
|
|
|
+ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
|
|
|
+ echoerr "Make user emqx has read permissions on $RUNNER_ETC_DIR/emqx.conf"
|
|
|
+ fi
|
|
|
+ echoerr "Maybe set environment variable ENQX_NODE_NAME='name@host.name'"
|
|
|
+ echoerr "or set EMQX_NAME='name' EMQX_HOST='host.name'"
|
|
|
exit 1
|
|
|
else
|
|
|
NAME_ARG="-name ${NODENAME# *}"
|
|
|
@@ -283,22 +311,23 @@ export ESCRIPT_NAME="$NODENAME"
|
|
|
|
|
|
PIPE_DIR="${PIPE_DIR:-/$RUNNER_DATA_DIR/${WHOAMI}_erl_pipes/$NAME/}"
|
|
|
|
|
|
-# Extract the target cookie
|
|
|
-if [ -z "$COOKIE_ARG" ]; then
|
|
|
- COOKIE="${EMQX_NODE_COOKIE:-}"
|
|
|
- [ -z "$COOKIE" ] && COOKIE=$(grep -E '^[ \t]*node.cookie[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | cut -d = -f 2-)
|
|
|
+# COOKIE is only needed for non-boot commands
|
|
|
+# so, either read environment variable override
|
|
|
+# or inspect vm.<time>.args
|
|
|
+COOKIE="${EMQX_NODE_COOKIE:-}"
|
|
|
+if [ -z "$COOKIE" ] && [ "$IS_BOOT_COMMAND" = 'no' ]; then
|
|
|
+ LATEST_VM_ARGS="$(ls -t $RUNNER_DATA_DIR/configs/vm.*.args | head -1)"
|
|
|
+ if [ -z "$LATEST_VM_ARGS" ]; then
|
|
|
+ echo "For command $1, there is no vm.*.args config file found in $RUNNER_DATA_DIR/configs/"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+ COOKIE="$(grep -E '^-setcookie' $LATEST_VM_ARGS | awk '{print $2}')"
|
|
|
if [ -z "$COOKIE" ]; then
|
|
|
- echoerr "vm.args needs to have a -setcookie parameter."
|
|
|
- echoerr "please check $RUNNER_ETC_DIR/emqx.conf"
|
|
|
+ echoerr "Please set node.cookie in $RUNNER_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE_COOKIE"
|
|
|
exit 1
|
|
|
- else
|
|
|
- COOKIE_ARG="-setcookie $COOKIE"
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
-# Extract cookie name from COOKIE_ARG
|
|
|
-COOKIE="$(echo "$COOKIE_ARG" | awk '{print $2}')"
|
|
|
-
|
|
|
# Support for IPv6 Dist. See: https://github.com/emqtt/emqttd/issues/1460
|
|
|
PROTO_DIST=$(grep -E '^[ \t]*cluster.proto_dist[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | cut -d = -f 2-)
|
|
|
if [ -z "$PROTO_DIST" ]; then
|