aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorSam Yaple <sam@yaple.net>2015-07-01 17:23:13 +0000
committerSam Yaple <sam@yaple.net>2015-07-03 14:16:47 +0000
commitc97ccd6a5f7330d88dfba94a8226948fb320cba6 (patch)
tree585d60a5f5019d68acbbbd9c714c5e16e36fa1d9 /docker
parentefbfd7912b5fff41a3d3060af9e64c35c7e89f3b (diff)
downloadkolla-c97ccd6a5f7330d88dfba94a8226948fb320cba6.tar.gz
kolla-c97ccd6a5f7330d88dfba94a8226948fb320cba6.zip
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
Diffstat (limited to 'docker')
-rw-r--r--docker/centos/binary/rabbitmq/Dockerfile2
l---------docker/centos/binary/rabbitmq/config-external.sh1
l---------docker/centos/binary/rabbitmq/config-internal.sh1
l---------[-rw-r--r--]docker/centos/binary/rabbitmq/config-rabbit.sh58
-rw-r--r--docker/common/rabbitmq/config-external.sh14
-rwxr-xr-xdocker/common/rabbitmq/config-internal.sh10
-rw-r--r--docker/common/rabbitmq/config-rabbit.sh55
-rwxr-xr-xdocker/common/rabbitmq/start.sh22
8 files changed, 102 insertions, 61 deletions
diff --git a/docker/centos/binary/rabbitmq/Dockerfile b/docker/centos/binary/rabbitmq/Dockerfile
index f42bc8307..ba2d748b5 100644
--- a/docker/centos/binary/rabbitmq/Dockerfile
+++ b/docker/centos/binary/rabbitmq/Dockerfile
@@ -8,7 +8,7 @@ RUN yum -y install \
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
COPY rabbitmq.config rabbitmq-env.conf /etc/rabbitmq/
-COPY config-rabbit.sh /opt/kolla/config-rabbit.sh
+COPY config-rabbit.sh config-external.sh config-internal.sh /opt/kolla/
COPY start.sh /start.sh
CMD ["/start.sh"]
diff --git a/docker/centos/binary/rabbitmq/config-external.sh b/docker/centos/binary/rabbitmq/config-external.sh
new file mode 120000
index 000000000..e02e664c8
--- /dev/null
+++ b/docker/centos/binary/rabbitmq/config-external.sh
@@ -0,0 +1 @@
+../../../common/rabbitmq/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/rabbitmq/config-internal.sh b/docker/centos/binary/rabbitmq/config-internal.sh
new file mode 120000
index 000000000..73a13c772
--- /dev/null
+++ b/docker/centos/binary/rabbitmq/config-internal.sh
@@ -0,0 +1 @@
+../../../common/rabbitmq/config-internal.sh \ No newline at end of file
diff --git a/docker/centos/binary/rabbitmq/config-rabbit.sh b/docker/centos/binary/rabbitmq/config-rabbit.sh
index 2be0f5b9c..6feee2aba 100644..120000
--- a/docker/centos/binary/rabbitmq/config-rabbit.sh
+++ b/docker/centos/binary/rabbitmq/config-rabbit.sh
@@ -1,57 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-
-check_required_vars RABBITMQ_PASS RABBITMQ_USER
-
-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 configure_cluster {
- check_required_vars RABBITMQ_CLUSTER_COOKIE RABBITMQ_CLUSTER_NODES
-
- echo "${RABBITMQ_CLUSTER_COOKIE}" > /var/lib/rabbitmq/.erlang.cookie
- chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
- chmod 700 /var/lib/rabbitmq/.erlang.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
-}
+../../../common/rabbitmq/config-rabbit.sh \ No newline at end of file
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