From c97ccd6a5f7330d88dfba94a8226948fb320cba6 Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Wed, 1 Jul 2015 17:23:13 +0000 Subject: Ansible Rabbitmq support Adds initial support for Rabbitmq in Ansible using the CONFIG_EXTERNAL methods. Additionally, this refactors some of the Rabbitmq config script to allow for reuse by CONFIG_EXTERNAL. Partially Implements: blueprint ansible-service Change-Id: I1765548f7e4f1258eb8a49e2a23242955f52655d --- docker/common/rabbitmq/config-external.sh | 14 ++++++++ docker/common/rabbitmq/config-internal.sh | 10 ++++++ docker/common/rabbitmq/config-rabbit.sh | 55 +++++++++++++++++++++++++++++++ docker/common/rabbitmq/start.sh | 22 +++++++++++-- 4 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 docker/common/rabbitmq/config-external.sh create mode 100755 docker/common/rabbitmq/config-internal.sh create mode 100644 docker/common/rabbitmq/config-rabbit.sh (limited to 'docker/common') diff --git a/docker/common/rabbitmq/config-external.sh b/docker/common/rabbitmq/config-external.sh new file mode 100644 index 000000000..40abd6156 --- /dev/null +++ b/docker/common/rabbitmq/config-external.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Cluster configuration +if [[ -f /opt/kolla/rabbitmq/rabbitmq.config ]]; then + cp -af /opt/kolla/rabbitmq/rabbitmq.config /etc/rabbitmq/rabbitmq.config + chown rabbitmq: /etc/rabbitmq/rabbitmq.config + chmod 0600 /etc/rabbitmq/rabbitmq.config +fi + +if [[ -f /opt/kolla/rabbitmq/rabbitmq-env.conf ]]; then + cp -af /opt/kolla/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf + chown rabbitmq: /etc/rabbitmq/rabbitmq-env.conf + chmod 0600 /etc/rabbitmq/rabbitmq-env.conf +fi diff --git a/docker/common/rabbitmq/config-internal.sh b/docker/common/rabbitmq/config-internal.sh new file mode 100755 index 000000000..8fc77f421 --- /dev/null +++ b/docker/common/rabbitmq/config-internal.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. /opt/kolla/kolla-common.sh +. /opt/kolla/config-rabbit.sh + +check_required_vars RABBITMQ_PASS RABBITMQ_USER + +configure_rabbit + +exec /usr/sbin/rabbitmq-server diff --git a/docker/common/rabbitmq/config-rabbit.sh b/docker/common/rabbitmq/config-rabbit.sh new file mode 100644 index 000000000..750b253a4 --- /dev/null +++ b/docker/common/rabbitmq/config-rabbit.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +RABBITMQ_CLUSTER_CONFIGURATION="" + +function configure_files { + sed -i ' + s|@RABBITMQ_USER@|'"$RABBITMQ_USER"'|g + s|@RABBITMQ_PASS@|'"$RABBITMQ_PASS"'|g + s|@RABBITMQ_CLUSTER_CONFIGURATION@|'"$RABBITMQ_CLUSTER_CONFIGURATION"'|g + ' /etc/rabbitmq/rabbitmq.config + + sed -i ' + s|@RABBITMQ_LOG_BASE@|'"$RABBITMQ_LOG_BASE"'|g + ' /etc/rabbitmq/rabbitmq-env.conf +} + +function set_rabbitmq_cookie { + echo "${RABBITMQ_CLUSTER_COOKIE}" > /var/lib/rabbitmq/.erlang.cookie + chown rabbitmq: /var/lib/rabbitmq/.erlang.cookie + chmod 400 /var/lib/rabbitmq/.erlang.cookie +} + +function configure_cluster { + check_required_vars RABBITMQ_CLUSTER_COOKIE RABBITMQ_CLUSTER_NODES + set_rabbitmq_cookie + + HOSTNAME="" + IP_ADDRESS="" + DELIMETER="" + + for node in ${RABBITMQ_CLUSTER_NODES}; do + HOSTNAME=`echo ${node} | cut -d'@' -f1` + IP_ADDRESS=`echo ${node} | cut -d'@' -f2` + CLUSTER_NODES="${CLUSTER_NODES}${DELIMETER}rabbit@${HOSTNAME}" + echo "${IP_ADDRESS} ${HOSTNAME}" >> /etc/hosts + DELIMETER="," + done + RABBITMQ_CLUSTER_CONFIGURATION="{cluster_nodes, {[$CLUSTER_NODES], disc}}," +} + +function configure_rabbit { + if [ "$RABBITMQ_CLUSTER_NODES" ] && [ "$RABBITMQ_CLUSTER_COOKIE" ]; then + configure_cluster + elif [ "$RABBITMQ_SERVICE_HOST" ]; then + # work around: + # https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/653405 + echo "${RABBITMQ_SERVICE_HOST} `/usr/bin/hostname -s`" > /etc/hosts + else + echo "You need RABBITMQ_SERVICE_HOST or RABBITMQ_CLUSTER_NODES & " \ + " RABBITMQ_CLUSTER_COOKIES variables" + exit 1 + fi + + configure_files +} diff --git a/docker/common/rabbitmq/start.sh b/docker/common/rabbitmq/start.sh index 4e76e382f..8f7fef330 100755 --- a/docker/common/rabbitmq/start.sh +++ b/docker/common/rabbitmq/start.sh @@ -1,7 +1,23 @@ #!/bin/bash -. /opt/kolla/config-rabbit.sh +set -o errexit -configure_rabbit +CMD="/usr/sbin/rabbitmq-server" +ARGS="" -exec /usr/sbin/rabbitmq-server +# loading common functions +source /opt/kolla/kolla-common.sh + +# config-internal script exec out of this function, it does not return here +set_configs + +# loading functions +source /opt/kolla/config-rabbit.sh + +# This catches all cases of the BOOTSTRAP variable being set, including empty +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + set_rabbitmq_cookie + exit 0 +fi + +$CMD $ARGS -- cgit v1.2.3