aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorMichal Jastrzebski (inc0) <michal.jastrzebski@intel.com>2015-07-17 12:20:31 +0200
committerSam Yaple <sam@yaple.net>2015-07-28 15:46:42 +0000
commit2d920745a45eec166e2c381aa7b15b1168b03887 (patch)
tree71612a929fe71a0fffc1261e89acfd408457b321 /docker
parent4d6eaa25fc881dec699e5b0a4a4f196881338b2c (diff)
downloadkolla-2d920745a45eec166e2c381aa7b15b1168b03887.tar.gz
kolla-2d920745a45eec166e2c381aa7b15b1168b03887.zip
Ansible install of HAProxy
This commit consists HAProxy ansible bits including config generation, container deployment and hot reloads. Closes-Bug: #1477915 Co-Authored-By: Sam Yaple <sam@yaple.net> Change-Id: Ie93fa68fdb6b2885889c992ff1267d38b68e0cbc Partially-implements: blueprint ansible-service
Diffstat (limited to 'docker')
-rwxr-xr-xdocker/centos/binary/haproxy/Dockerfile2
l---------docker/centos/binary/haproxy/ensure_latest_config.sh1
-rwxr-xr-xdocker/common/haproxy/config-external.sh3
-rwxr-xr-xdocker/common/haproxy/ensure_latest_config.sh12
-rwxr-xr-xdocker/common/haproxy/start.sh15
5 files changed, 24 insertions, 9 deletions
diff --git a/docker/centos/binary/haproxy/Dockerfile b/docker/centos/binary/haproxy/Dockerfile
index 40f2af610..8e1a05f18 100755
--- a/docker/centos/binary/haproxy/Dockerfile
+++ b/docker/centos/binary/haproxy/Dockerfile
@@ -6,6 +6,6 @@ RUN yum -y install \
&& yum clean all
COPY start.sh /
-COPY config-external.sh /opt/kolla/
+COPY config-external.sh ensure_latest_config.sh /opt/kolla/
CMD ["/start.sh"]
diff --git a/docker/centos/binary/haproxy/ensure_latest_config.sh b/docker/centos/binary/haproxy/ensure_latest_config.sh
new file mode 120000
index 000000000..80c50f32a
--- /dev/null
+++ b/docker/centos/binary/haproxy/ensure_latest_config.sh
@@ -0,0 +1 @@
+../../../common/haproxy/ensure_latest_config.sh \ No newline at end of file
diff --git a/docker/common/haproxy/config-external.sh b/docker/common/haproxy/config-external.sh
index d267eb195..0c41a5bdb 100755
--- a/docker/common/haproxy/config-external.sh
+++ b/docker/common/haproxy/config-external.sh
@@ -4,8 +4,7 @@ TARGET="/etc/haproxy/haproxy.cfg"
OWNER="root"
if [[ -f "$SOURCE" ]]; then
- rm $TARGET
- cp $SOURCE $TARGET
+ cp -f $SOURCE $TARGET
chown ${OWNER}: $TARGET
chmod 0644 $TARGET
fi
diff --git a/docker/common/haproxy/ensure_latest_config.sh b/docker/common/haproxy/ensure_latest_config.sh
new file mode 100755
index 000000000..b91189ca5
--- /dev/null
+++ b/docker/common/haproxy/ensure_latest_config.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+CURRENT_CONFIG_HASH=$(sha1sum /etc/haproxy/haproxy.cfg | cut -f1 -d' ')
+NEW_CONFIG_HASH=$(sha1sum /opt/kolla/haproxy/haproxy.cfg | cut -f1 -d' ')
+
+if [[ $CURRENT_CONFIG_HASH != $NEW_CONFIG_HASH ]]; then
+ changed=changed
+ source /opt/kolla/config-external.sh
+ /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -sf $(cat /run/haproxy.pid)
+fi
+
+echo $changed
diff --git a/docker/common/haproxy/start.sh b/docker/common/haproxy/start.sh
index 68600f44e..c39184767 100755
--- a/docker/common/haproxy/start.sh
+++ b/docker/common/haproxy/start.sh
@@ -2,11 +2,7 @@
set -o errexit
CMD='/usr/sbin/haproxy'
-# Parameters:
-# -db for non-daemon execution and logging to stdout
-# -p pidfile to specify pidfile and allow hot reconfiguration
-# loop which generates -f file.conf for each file in /etc/haproxy and /etc/haproxy/conf.d
-ARGS="-db -f /etc/haproxy/haproxy.cfg"
+ARGS="-f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid"
# Loading common functions.
source /opt/kolla/kolla-common.sh
@@ -14,4 +10,11 @@ source /opt/kolla/kolla-common.sh
# Config-internal script exec out of this function, it does not return here.
set_configs
-exec $CMD $ARGS
+# We are intentionally not using exec so we can reload the haproxy config later
+$CMD $ARGS
+
+# TODO(SamYaple): This has the potential for a race condition triggered by a
+# config reload that could cause the container to exit
+while [[ -e "/proc/$(cat /run/haproxy.pid)" ]]; do
+ sleep 5
+done