summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Smith <ansmith@redhat.com>2017-05-16 14:32:53 -0400
committerAndrew Smith <ansmith@redhat.com>2017-05-18 09:39:31 -0400
commitf034a8b2098e73f47ad6fa05d95d4a30ae2e4d2e (patch)
tree94d451eb15631cece91bac7bde38739e68c8c780
parent0bd1e3a84deef5a0c0a3efec4f44744c8e4e58c5 (diff)
downloadkolla-f034a8b2098e73f47ad6fa05d95d4a30ae2e4d2e.tar.gz
kolla-f034a8b2098e73f47ad6fa05d95d4a30ae2e4d2e.zip
Add qdrouterd container
The qdrouterd is a high performance, lightweight AMQP 1.0 message router that support oslo.messaging RPC communications. Change-Id: I42783fb50c9f6750071d797b3f07a6283454c7a7 Implements: blueprint dispatch-router-messaging-component
-rw-r--r--README.rst4
-rw-r--r--docker/base/Dockerfile.j22
-rw-r--r--docker/base/sources.list.ubuntu3
-rw-r--r--docker/qdrouterd/Dockerfile.j241
-rw-r--r--docker/qdrouterd/extend_start.sh10
-rw-r--r--docker/qdrouterd/qdrouterd_sudoers1
-rwxr-xr-xkolla/common/config.py5
-rw-r--r--releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml6
8 files changed, 71 insertions, 1 deletions
diff --git a/README.rst b/README.rst
index 7024ceca0..6cda64892 100644
--- a/README.rst
+++ b/README.rst
@@ -141,7 +141,9 @@ Kolla provides images to deploy the following infrastructure components:
- `MongoDB <https://www.mongodb.org/>`__ as a database back end for Ceilometer
and Gnocchi.
- `Open vSwitch <http://openvswitch.org/>`__ and Linuxbridge back ends for Neutron.
-- `RabbitMQ <https://www.rabbitmq.com/>`__ as a messaging back end for
+- `Qdrouterd <https://qpid.apache.org/components/dispatch-router/index.html>`__ as a
+ direct messaging back end for communication between services.
+- `RabbitMQ <https://www.rabbitmq.com/>`__ as a broker messaging back end for
communication between services.
- `Telegraf <https://www.docs.influxdata.com/telegraf/>`__ as a plugin-driven server
agent for collecting & reporting metrics.
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 30a3150f0..84f1b579e 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) <dev_ops@elasticsearch.org> #}
{# 4D1BB29D63D98E422B2113B19334A25F8507EFA5 -- Percona MySQL Development Team (Packaging key) <mysql-dev@percona.com> #}
{# 58118E89F3A912897C070ADBF76221572C52609D -- Docker Release Tool (releasedocker) <docker@docker.com> #}
+ {# 4D8EB5FDA37AB55F41A135203BF88A0C6A770882 -- Apache Qpid PPA Signing Key <dev@qpid.apache.org> #}
{# 901F9177AB97ACBE -- Treasure Data, Inc (Treasure Agent Official Signing key) <support@treasure-data.com> #}
{% 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 9ec6da2e5..d81692fdb 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 000000000..e8ce9339a
--- /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 000000000..829b0758b
--- /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 000000000..dbcd341a4
--- /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 bb838314b..90fbc2777 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 000000000..8317a805a
--- /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.