aboutsummaryrefslogtreecommitdiff
path: root/docker/examples/docker-compose-cluster/scripts
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2017-09-25 17:48:57 +0200
committerChristophe Romain <christophe.romain@process-one.net>2017-09-25 17:48:57 +0200
commitb8ab80d1f373165239b3861b992e24411cc60310 (patch)
tree84dd73cbe36c9504a8c411869ca68324abd2064b /docker/examples/docker-compose-cluster/scripts
parentAdd mod_avatar to the example configuration (diff)
Sync containers from rroemhild and add instructions in README (#1655)
Diffstat (limited to 'docker/examples/docker-compose-cluster/scripts')
-rw-r--r--docker/examples/docker-compose-cluster/scripts/lib/functions.sh37
-rwxr-xr-xdocker/examples/docker-compose-cluster/scripts/pre/30_join_cluster.sh28
2 files changed, 65 insertions, 0 deletions
diff --git a/docker/examples/docker-compose-cluster/scripts/lib/functions.sh b/docker/examples/docker-compose-cluster/scripts/lib/functions.sh
new file mode 100644
index 000000000..2ff16f659
--- /dev/null
+++ b/docker/examples/docker-compose-cluster/scripts/lib/functions.sh
@@ -0,0 +1,37 @@
+# overwrite get_nodename to discover hostname from DNS
+get_nodename() {
+ local hostname=${HOSTNAME}
+
+ # get hostname from dns
+ if ( is_true ${USE_DNS} ); then
+ # wait for dns registration
+ sleep 1
+
+ nodename=$(discover_dns_hostname ${HOSTIP})
+
+ is_set ${nodename} \
+ && hostname=${nodename}
+ fi
+
+ echo $hostname
+ return 0
+}
+
+
+# discover hostname from dns with a reverse lookup
+discover_dns_hostname() {
+ local hostip=$1
+
+ # try to get the hostname from dns
+ local dnsname=$(drill -x ${hostip} \
+ | grep PTR \
+ | awk '{print $5}' \
+ | grep -E "^[a-zA-Z0-9]+([-._]?[a-zA-Z0-9]+)*.[a-zA-Z]+\.$" \
+ | cut -d '.' -f1 \
+ | tail -1)
+
+ is_set ${dnsname} \
+ && echo ${dnsname}
+
+ return 0
+}
diff --git a/docker/examples/docker-compose-cluster/scripts/pre/30_join_cluster.sh b/docker/examples/docker-compose-cluster/scripts/pre/30_join_cluster.sh
new file mode 100755
index 000000000..f68e22eec
--- /dev/null
+++ b/docker/examples/docker-compose-cluster/scripts/pre/30_join_cluster.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -e
+
+source "${EJABBERD_HOME}/scripts/lib/base_config.sh"
+source "${EJABBERD_HOME}/scripts/lib/config.sh"
+source "${EJABBERD_HOME}/scripts/lib/base_functions.sh"
+source "${EJABBERD_HOME}/scripts/lib/functions.sh"
+
+
+get_cluster_node_from_dns() {
+ local cluster_host=$(drill ${DOMAINNAME} \
+ | grep ${DOMAINNAME} \
+ | grep -v ${HOSTIP} \
+ | awk '{print $5}' \
+ | grep -v "^$" \
+ | head -1)
+ echo $(discover_dns_hostname ${cluster_host})
+}
+
+
+file_exist ${FIRST_START_DONE_FILE} \
+ && exit 0
+
+
+join_cluster $(get_cluster_node_from_dns)
+
+
+exit 0