diff --git a/README.rst b/README.rst index 7024ceca06..6cda648927 100644 --- a/README.rst +++ b/README.rst @@ -141,7 +141,9 @@ Kolla provides images to deploy the following infrastructure components: - `MongoDB `__ as a database back end for Ceilometer and Gnocchi. - `Open vSwitch `__ and Linuxbridge back ends for Neutron. -- `RabbitMQ `__ as a messaging back end for +- `Qdrouterd `__ as a + direct messaging back end for communication between services. +- `RabbitMQ `__ as a broker messaging back end for communication between services. - `Telegraf `__ as a plugin-driven server agent for collecting & reporting metrics. diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 30a3150f07..84f1b579e9 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -297,6 +297,7 @@ COPY apt_preferences.{{ base_distro }} /etc/apt/preferences {# 46095ACC8548582C1A2699A9D27D666CD88E42B4 -- Elasticsearch (Elasticsearch Signing Key) #} {# 4D1BB29D63D98E422B2113B19334A25F8507EFA5 -- Percona MySQL Development Team (Packaging key) #} {# 58118E89F3A912897C070ADBF76221572C52609D -- Docker Release Tool (releasedocker) #} + {# 4D8EB5FDA37AB55F41A135203BF88A0C6A770882 -- Apache Qpid PPA Signing Key #} {# 901F9177AB97ACBE -- Treasure Data, Inc (Treasure Agent Official Signing key) #} {% set base_apt_keys = [ '05CE15085FC09D18E99EFB22684A14CF2582E0C5', @@ -306,6 +307,7 @@ COPY apt_preferences.{{ base_distro }} /etc/apt/preferences '46095ACC8548582C1A2699A9D27D666CD88E42B4', '4D1BB29D63D98E422B2113B19334A25F8507EFA5', '58118E89F3A912897C070ADBF76221572C52609D', + '4D8EB5FDA37AB55F41A135203BF88A0C6A770882', '901F9177AB97ACBE', ] %} {% elif base_distro == 'debian' %} diff --git a/docker/base/sources.list.ubuntu b/docker/base/sources.list.ubuntu index 9ec6da2e56..d81692fdb4 100644 --- a/docker/base/sources.list.ubuntu +++ b/docker/base/sources.list.ubuntu @@ -35,3 +35,6 @@ deb https://packagecloud.io/grafana/stable/debian/ jessie main # Fluentd repo deb http://packages.treasuredata.com/2/ubuntu/xenial/ xenial contrib + +# Qdrouterd repo +deb http://ppa.launchpad.net/qpid/released/ubuntu/ xenial main diff --git a/docker/qdrouterd/Dockerfile.j2 b/docker/qdrouterd/Dockerfile.j2 new file mode 100644 index 0000000000..e8ce9339a3 --- /dev/null +++ b/docker/qdrouterd/Dockerfile.j2 @@ -0,0 +1,41 @@ +FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block qdrouterd_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{{ macros.configure_user(name='qdrouterd') }} + +{% block qdrouterd_install %} +{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} + {% set qdrouterd_packages = [ + 'cyrus-sasl-lib', + 'cyrus-sasl-plain', + 'qpid-dispatch-router' + ] %} + +{{ macros.install_packages(qdrouterd_packages | customizable("packages")) }} + +{% elif base_distro in ['debian', 'ubuntu'] %} + {% set qdrouterd_packages = [ + 'sasl2-bin', + 'libpython2.7', + 'qdrouterd', + ] %} + +{{ macros.install_packages(qdrouterd_packages | customizable("packages")) }} + +{% endif %} +{% endblock %} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start +COPY qdrouterd_sudoers /etc/sudoers.d/kolla_qdrouterd_sudoers +RUN chmod 755 /usr/local/bin/kolla_extend_start \ + && chmod 750 /etc/sudoers.d \ + && chmod 440 /etc/sudoers.d/kolla_qdrouterd_sudoers + +{% block qdrouterd_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER qdrouterd diff --git a/docker/qdrouterd/extend_start.sh b/docker/qdrouterd/extend_start.sh new file mode 100644 index 0000000000..829b0758b8 --- /dev/null +++ b/docker/qdrouterd/extend_start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Create log directory, with appropriate permissions +QDROUTERD_LOG_DIR="/var/log/kolla/qdrouterd" +if [[ ! -d "${QDROUTERD_LOG_DIR}" ]]; then + mkdir -p ${QDROUTERD_LOG_DIR} +fi +if [[ $(stat -c %a ${QDROUTERD_LOG_DIR}) != "755" ]]; then + chmod 755 ${QDROUTERD_LOG_DIR} +fi diff --git a/docker/qdrouterd/qdrouterd_sudoers b/docker/qdrouterd/qdrouterd_sudoers new file mode 100644 index 0000000000..dbcd341a4d --- /dev/null +++ b/docker/qdrouterd/qdrouterd_sudoers @@ -0,0 +1 @@ +%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R qdrouterd\: /var/lib/qdrouterd, /bin/chown -R qdrouterd\: /var/lib/qdrouterd diff --git a/kolla/common/config.py b/kolla/common/config.py index bb838314be..90fbc2777d 100755 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -70,6 +70,7 @@ _PROFILE_OPTS = [ 'mongodb', 'opendaylight', 'openvswitch', + 'qdrouterd', 'rabbitmq', 'redis', 'tgtd', @@ -848,6 +849,10 @@ USERS = { 'dragonflow-user': { 'uid': 42464, 'gid': 42464, + }, + 'qdrouterd-user': { + 'uid': 42465, + 'gid': 42465, } } diff --git a/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml b/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml new file mode 100644 index 0000000000..8317a805a2 --- /dev/null +++ b/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml @@ -0,0 +1,6 @@ +--- +features: + - Introduce qdrouterd (dispatch router) infrastructure component for + oslo.messaging backend. The AMQP 1.0 oslo.messaging driver supports + integration with this high performance AMQP 1.0 message router for + RPC messaging backend.