1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
#!/usr/bin/env bash
init_rabbitmq() {
RABBITMQ_CONFIG_DIR=${TEST_CONFIG_DIR}
RABBITMQ_DOCKER_IMAGE=${RABBITMQ_DOCKER_IMAGE:-rabbitmq}
print "> RABBITMQ_CONFIG_DIR: ${RABBITMQ_CONFIG_DIR}"
print "> RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
[[ -z "${OAUTH_SERVER_CONFIG_BASEDIR}" ]] || print "> OAUTH_SERVER_CONFIG_BASEDIR: ${OAUTH_SERVER_CONFIG_BASEDIR}"
[[ -z "${OAUTH_SERVER_CONFIG_DIR}" ]] || print "> OAUTH_SERVER_CONFIG_DIR: ${OAUTH_SERVER_CONFIG_DIR}"
if [[ ! -d "${RABBITMQ_CONFIG_DIR}/certs" ]]; then
mkdir ${RABBITMQ_CONFIG_DIR}/certs
fi
generate-ca-server-client-kpi rabbitmq $RABBITMQ_CONFIG_DIR/certs
generate-server-keystore-if-required rabbitmq $RABBITMQ_CONFIG_DIR/certs
generate-client-keystore-if-required rabbitmq $RABBITMQ_CONFIG_DIR/certs
generate-truststore-if-required rabbitmq $RABBITMQ_CONFIG_DIR/certs
}
start_rabbitmq() {
if [[ "$PROFILES" == *"docker"* ]]; then
if [[ "$PROFILES" == *"cluster"* ]]; then
start_docker_cluster_rabbitmq
else
start_docker_rabbitmq
fi
else
start_local_rabbitmq
fi
}
stop_rabbitmq() {
if [[ "$PROFILES" == *"docker"* ]]; then
if [[ "$PROFILES" == *"cluster"* ]]; then
docker compose -f $CONF_DIR/rabbitmq/compose.yml kill
else
kill_container_if_exist "$component"
fi
else
stop_local_rabbitmq
fi
}
stop_local_rabbitmq() {
RABBITMQ_SERVER_ROOT=$(realpath ../)
gmake --directory=${RABBITMQ_SERVER_ROOT} stop-node
}
save_logs_rabbitmq() {
if [[ "$PROFILES" == *"docker"* ]]; then
if [[ "$PROFILES" == *"cluster"* ]]; then
docker compose -f $CONF_DIR/rabbitmq/compose.yml logs > $LOGS/rabbitmq.log
else
save_container_logs "rabbitmq"
fi
fi
}
start_local_rabbitmq() {
begin "Starting rabbitmq ..."
init_rabbitmq
RABBITMQ_SERVER_ROOT=$(realpath ../)
MOUNT_RABBITMQ_CONF="/etc/rabbitmq/rabbitmq.conf"
MOUNT_ADVANCED_CONFIG="/etc/rabbitmq/advanced.config"
RABBITMQ_TEST_DIR="${RABBITMQ_CONFIG_DIR}" ${BIN_DIR}/gen-rabbitmq-conf ${RABBITMQ_CONFIG_DIR} $ENV_FILE /tmp$MOUNT_RABBITMQ_CONF
print "> EFFECTIVE RABBITMQ_CONFIG_FILE: /tmp$MOUNT_RABBITMQ_CONF"
${BIN_DIR}/gen-advanced-config ${RABBITMQ_CONFIG_DIR} $ENV_FILE /tmp$MOUNT_ADVANCED_CONFIG
cp ${RABBITMQ_CONFIG_DIR}/enabled_plugins /tmp/etc/rabbitmq/
RESULT=$?
cp ${RABBITMQ_CONFIG_DIR}/enabled_plugins /tmp/etc/rabbitmq/
if [ $RESULT -eq 0 ]; then
print "> EFFECTIVE RABBITMQ_CONFIG_FILE: /tmp$MOUNT_ADVANCED_CONFIG"
gmake --directory=${RABBITMQ_SERVER_ROOT} run-broker \
RABBITMQ_ENABLED_PLUGINS_FILE=/tmp/etc/rabbitmq/enabled_plugins \
RABBITMQ_CONFIG_FILE=/tmp$MOUNT_RABBITMQ_CONF \
RABBITMQ_ADVANCED_CONFIG_FILE=/tmp$MOUNT_ADVANCED_CONFIG
else
gmake --directory=${RABBITMQ_SERVER_ROOT} run-broker \
RABBITMQ_ENABLED_PLUGINS_FILE=/tmp/etc/rabbitmq/enabled_plugins \
RABBITMQ_CONFIG_FILE=/tmp$MOUNT_RABBITMQ_CONF
fi
print "> RABBITMQ_TEST_DIR: ${RABBITMQ_CONFIG_DIR}"
}
start_docker_cluster_rabbitmq() {
begin "Starting rabbitmq cluster in docker ..."
init_rabbitmq
kill_container_if_exist rabbitmq
kill_container_if_exist rabbitmq1
kill_container_if_exist rabbitmq2
mkdir -p $CONF_DIR/rabbitmq
RABBITMQ_TEST_DIR="/var/rabbitmq" ${BIN_DIR}/gen-rabbitmq-conf ${RABBITMQ_CONFIG_DIR} $ENV_FILE $CONF_DIR/rabbitmq/rabbitmq.conf
print "> EFFECTIVE RABBITMQ_CONFIG_FILE: $CONF_DIR/rabbitmq/rabbitmq.conf"
${BIN_DIR}/gen-advanced-config ${RABBITMQ_CONFIG_DIR} $ENV_FILE $CONF_DIR/rabbitmq/advanced.config
RESULT=$?
if [ $RESULT -eq 0 ]; then
if [ -s $RESULT ]; then
print "> EFFECTIVE ADVANCED_CONFIG_FILE: $CONF_DIR/rabbitmq/advanced.config"
else
rm $CONF_DIR/rabbitmq/advanced.config
fi
fi
if [ -f ${RABBITMQ_CONFIG_DIR}/logging.conf ]; then
mkdir -p $CONF_DIR/rabbitmq/conf.d/
cp ${RABBITMQ_CONFIG_DIR}/logging.conf $CONF_DIR/rabbitmq/conf.d/
fi
if [ -f ${RABBITMQ_CONFIG_DIR}/enabled_plugins ]; then
cp ${RABBITMQ_CONFIG_DIR}/enabled_plugins $CONF_DIR/rabbitmq
fi
if [ -d ${RABBITMQ_CONFIG_DIR}/certs ]; then
cp -r ${RABBITMQ_CONFIG_DIR}/certs $CONF_DIR/rabbitmq
fi
if [ -d ${RABBITMQ_CONFIG_DIR}/imports ]; then
cp -r ${RABBITMQ_CONFIG_DIR}/imports $CONF_DIR/rabbitmq
fi
cat > $CONF_DIR/rabbitmq/image_compose.yml <<EOF
x-rabbitmq_image: &rabbitmq_image
image: ${RABBITMQ_DOCKER_IMAGE}
volumes:
- $CONF_DIR/rabbitmq/:/etc/rabbitmq
- $CONF_DIR/rabbitmq/:/var/rabbitmq
- ${TEST_DIR}:/config
EOF
cat $CONF_DIR/rabbitmq/image_compose.yml > $CONF_DIR/rabbitmq/compose.yml
cat ${BIN_DIR}/components/../rabbit-compose.yml >> $CONF_DIR/rabbitmq/compose.yml
docker compose -f $CONF_DIR/rabbitmq/compose.yml up -d
wait_for_message rabbitmq "Server startup complete"
wait_for_message rabbitmq1 "Server startup complete"
wait_for_message rabbitmq2 "Server startup complete"
end "RabbitMQ cluster ready"
}
start_docker_rabbitmq() {
begin "Starting rabbitmq in docker ..."
init_rabbitmq
kill_container_if_exist rabbitmq
mkdir -p $CONF_DIR/rabbitmq
RABBITMQ_TEST_DIR="/var/rabbitmq" ${BIN_DIR}/gen-rabbitmq-conf ${RABBITMQ_CONFIG_DIR} $ENV_FILE $CONF_DIR/rabbitmq/rabbitmq.conf
print "> EFFECTIVE RABBITMQ_CONFIG_FILE: $CONF_DIR/rabbitmq/rabbitmq.conf"
${BIN_DIR}/gen-advanced-config ${RABBITMQ_CONFIG_DIR} $ENV_FILE $CONF_DIR/rabbitmq/advanced.config
RESULT=$?
if [ $RESULT -eq 0 ]; then
if [ -s $RESULT ]; then
print "> EFFECTIVE ADVANCED_CONFIG_FILE: $CONF_DIR/rabbitmq/advanced.config"
else
rm $CONF_DIR/rabbitmq/advanced.config
fi
fi
if [ -f ${RABBITMQ_CONFIG_DIR}/logging.conf ]; then
mkdir -p $CONF_DIR/rabbitmq/conf.d/
cp ${RABBITMQ_CONFIG_DIR}/logging.conf $CONF_DIR/rabbitmq/conf.d/
fi
if [ -f ${RABBITMQ_CONFIG_DIR}/enabled_plugins ]; then
cp ${RABBITMQ_CONFIG_DIR}/enabled_plugins $CONF_DIR/rabbitmq
fi
if [ -d ${RABBITMQ_CONFIG_DIR}/certs ]; then
cp -r ${RABBITMQ_CONFIG_DIR}/certs $CONF_DIR/rabbitmq
fi
if [ -d ${RABBITMQ_CONFIG_DIR}/imports ]; then
cp -r ${RABBITMQ_CONFIG_DIR}/imports $CONF_DIR/rabbitmq
fi
print "> RABBITMQ_TEST_DIR: /var/rabbitmq"
docker run \
--detach \
--name rabbitmq \
--net ${DOCKER_NETWORK} \
-p 5672:5672 \
-p 5671:5671 \
-p 15672:15672 \
-p 15671:15671 \
-v $CONF_DIR/rabbitmq/:/etc/rabbitmq \
-v $CONF_DIR/rabbitmq/:/var/rabbitmq \
-v ${TEST_DIR}:/config \
${RABBITMQ_DOCKER_IMAGE}
wait_for_message rabbitmq "Server startup complete"
end "RabbitMQ ready"
}
|