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
This commit is contained in:
Andrew Smith 2017-05-16 14:32:53 -04:00
parent 0bd1e3a84d
commit f034a8b209
8 changed files with 71 additions and 1 deletions

View File

@ -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.

View File

@ -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' %}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R qdrouterd\: /var/lib/qdrouterd, /bin/chown -R qdrouterd\: /var/lib/qdrouterd

View File

@ -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,
}
}

View File

@ -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.