From 26a55415abe75e74e22272758a04a2d3000d29eb Mon Sep 17 00:00:00 2001 From: Nir Magnezi Date: Wed, 8 Feb 2017 16:02:44 +0200 Subject: [PATCH] Auto-detect haproxy user_group As a followup to Id99948aec64656a0532afc68e146f0610bff1378, adding auto detection to haproxy_amphora.user_group haproxy is capable[1] handling a list of configuration files. This patch leverages that capability by simply providing haproxy with an additional configuration file, which is baked in the amphora image via a diskimage-builder element. The above-mentioned element will specify the following values for user group: Ubuntu: 'nogroup' RHEL/CentOS/Fedora: 'haproxy' The amphora-agent will parse and remove any user_group configuration provided by Octavia controller worker. This is in order to maintain amphora-agent backward compatibility to old Octavia workers, who still provide user_group to the amphora-agent. Octavia Workers that include this patch will no longer provide user_group configuration to the amphora-agent. [1] https://cbonte.github.io/haproxy-dconv/1.7/management.html#3 Related-Bug #1548070 Change-Id: Ia8fede9d7da4709a48661d1fc595a16d04fcbfa9 --- .../install.d/75-run_setup_install | 2 +- .../20-haproxy-user-group-config | 21 ++++++++++++++ .../20-haproxy-user-group-config | 21 ++++++++++++++ etc/octavia.conf | 6 ++-- .../backends/agent/agent_jinja_cfg.py | 2 ++ .../backends/agent/api_server/listener.py | 29 +++++++++++++++---- .../api_server/templates/systemd.conf.j2 | 6 ++-- .../api_server/templates/sysvinit.conf.j2 | 10 ++++--- .../api_server/templates/upstart.conf.j2 | 6 ++-- octavia/common/config.py | 5 ++-- octavia/common/constants.py | 1 + .../backend/agent/api_server/test_server.py | 17 ++++++----- ...t_haproxy_user_group-c220b6a2c8f1d589.yaml | 7 +++++ 13 files changed, 105 insertions(+), 28 deletions(-) create mode 100755 elements/haproxy-octavia-ubuntu/post-install.d/20-haproxy-user-group-config create mode 100755 elements/haproxy-octavia/post-install.d/20-haproxy-user-group-config create mode 100644 releasenotes/notes/auto_detect_haproxy_user_group-c220b6a2c8f1d589.yaml diff --git a/elements/amphora-agent/install.d/75-run_setup_install b/elements/amphora-agent/install.d/75-run_setup_install index 3ae520ec37..98216999ff 100755 --- a/elements/amphora-agent/install.d/75-run_setup_install +++ b/elements/amphora-agent/install.d/75-run_setup_install @@ -14,5 +14,5 @@ ln -s /bin/amphora-agent /usr/local/bin/amphora-agent || true mkdir /etc/octavia # we assume certs, etc will come in through the config drive mkdir /etc/octavia/certs -mkdir /var/lib/octavia +mkdir -p /var/lib/octavia diff --git a/elements/haproxy-octavia-ubuntu/post-install.d/20-haproxy-user-group-config b/elements/haproxy-octavia-ubuntu/post-install.d/20-haproxy-user-group-config new file mode 100755 index 0000000000..0fb982540a --- /dev/null +++ b/elements/haproxy-octavia-ubuntu/post-install.d/20-haproxy-user-group-config @@ -0,0 +1,21 @@ +#!/bin/bash + +set -eu +set -o pipefail + +case $DISTRO_NAME in + ubuntu | debian ) + HAPROXY_USER_GROUP=nogroup + ;; + fedora | centos* | rhel* ) + HAPROXY_USER_GROUP=haproxy + ;; + *) + HAPROXY_USER_GROUP=nogroup + ;; +esac + +cat >> /var/lib/octavia/haproxy-default-user-group.conf <> /var/lib/octavia/haproxy-default-user-group.conf <