Juju Charm - RabbitMQ
Go to file
Ryan Beisner 0e35fadab3
Update pre-install hooks to fail on error
The pre-install operations may fail, yet that failure is not
elevated to the user. This masks the failure and makes early
package install issues difficult to troubleshoot.

If the basic pre-install script fails, the charm should not
proceed to later hooks as the requirements may not be met.

Hashbangs for bash should specify -e (errexit) on all of the
pre-install bash scripts.

Change-Id: Ib9bc7a096972bac1b91d53d662b5f0469d9e0ffe
Closes-bug: #1815243
Partial-bug: #1815231
2019-02-08 15:57:25 -06:00
actions Change charm to py3 2018-10-24 14:50:35 +01:00
charmhelpers Sync charm-helpers 2019-01-11 14:40:34 +00:00
hooks Update pre-install hooks to fail on error 2019-02-08 15:57:25 -06:00
lib Update tox.ini files from release-tools gold copy 2016-09-19 09:33:20 +01:00
scripts Do not accidentaly overwrite DATA_FILE 2018-12-04 12:06:03 +01:00
templates Change charm to py3 2018-10-24 14:50:35 +01:00
tests Update requirements 2018-10-03 13:11:49 -05:00
unit_tests clustering: guard on hostname presentation 2019-01-21 16:29:45 +00:00
.coveragerc [wolson,r=jamespage,t=osci] Update restart logic around config-change hook to avoid extra restarts. 2015-01-22 15:37:28 +00:00
.gitignore Fix incorrect syntax in scripts/check_rabbitmq.py 2018-11-20 08:38:51 +00:00
.gitreview Add gitreview prior to migration to openstack 2016-02-24 21:53:36 +00:00
.stestr.conf Fix lint in unit tests re: py3-first and py2 compat 2018-11-01 21:57:56 -05:00
.testr.conf Add missing files 2016-02-16 07:52:08 +00:00
.zuul.yaml Make py3 gate job voting 2018-11-02 09:32:26 +01:00
LICENSE Re-license charm as Apache-2.0 2016-07-01 18:06:36 +01:00
Makefile Change charm to py3 2018-10-24 14:50:35 +01:00
README.md Trivial grammar changes: 2018-09-27 11:23:13 -04:00
actions.yaml Series Upgrade 2018-09-17 14:49:41 +02:00
charm-helpers-hooks.yaml Add support for certs relation 2018-10-29 17:11:50 +00:00
config.yaml Merge "Workaround notification topic filling with OpenStack" 2019-01-09 12:13:59 +00:00
copyright Re-license charm as Apache-2.0 2016-07-01 18:06:36 +01:00
hardening.yaml Add hardening support 2016-03-24 11:38:33 +00:00
icon.svg Added icon.svg 2013-04-25 14:23:14 -04:00
metadata.yaml Add support for certs relation 2018-10-29 17:11:50 +00:00
requirements.txt Update requirements 2018-10-03 13:11:49 -05:00
revision Added stats cronjob and queue monitoring nagios plugin 2014-05-07 10:52:24 +01:00
setup.cfg Add project infomation into setup.cfg 2019-01-09 14:54:21 +00:00
test-requirements.txt Update requirements 2018-10-03 13:11:49 -05:00
tox.ini Fix incorrect syntax in scripts/check_rabbitmq.py 2018-11-20 08:38:51 +00:00

README.md

Overview

RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging.

The RabbitMQ server is a robust and scalable implementation of an AMQP broker.

This charm deploys RabbitMQ server and provides AMQP connectivity to clients.

Usage

To deploy this charm:

juju deploy rabbitmq-server

deploying multiple units will form a native RabbitMQ cluster:

juju deploy -n 3 rabbitmq-server
juju config rabbitmq-server min-cluster-size=3

To make use of AMQP services, simply relate other charms that support the rabbitmq interface:

juju add-relation rabbitmq-server nova-cloud-controller

Clustering

When more than one unit of the charm is deployed the charm will bring up a native RabbitMQ cluster. The process of clustering the units together takes some time. Due to the nature of asynchronous hook execution, it is possible client relationship hooks are executed before the cluster is complete. In some cases, this can lead to client charm errors.

To guarantee client relation hooks will not be executed until clustering is completed use the min-cluster-size configuration setting:

juju deploy -n 3 rabbitmq-server
juju config rabbitmq-server min-cluster-size=3

When min-cluster-size is not set the charm will still cluster, however, there are no guarantees client relation hooks will not execute before it is complete.

Single unit deployments behave as expected.

Configuration: SSL

Generate an unencrypted RSA private key for the servers and a certificate:

openssl genrsa -out rabbit-server-privkey.pem 2048

Get an X.509 certificate. This can be self-signed, for example:

openssl req -batch -new -x509 -key rabbit-server-privkey.pem -out rabbit-server-cert.pem -days 10000

Deploy the service:

juju deploy rabbitmq-server

Enable SSL, passing in the key and certificate as configuration settings:

juju set rabbitmq-server ssl_enabled=True ssl_key="`cat rabbit-server-privkey.pem`" ssl_cert="`cat rabbit-server-cert.pem`"

Configuration: source

To change the source that the charm uses for packages:

juju set rabbitmq-server source="cloud:precise-icehouse"

This will enable the Icehouse pocket of the Cloud Archive (which contains a new version of RabbitMQ) and upgrade the install to the new version.

The source option can be used in a few different ways:

source="ppa:james-page/testing" - use the testing PPA owned by james-page
source="http://myrepo/ubuntu main" - use the repository located at the provided URL

The charm also supports use of arbitrary archive key's for use with private repositories:

juju set rabbitmq-server key="C6CEA0C9"

Note that in clustered configurations, the upgrade can be a bit racey as the services restart and re-cluster; this is resolvable using (with Juju version < 2.0) :

juju resolved --retry rabbitmq-server/1

Or using the following command with Juju 2.0 and above:

juju resolved rabbitmq-server/1

Network Spaces support

This charm supports the use of Juju Network Spaces, allowing the charm to be bound to network space configurations managed directly by Juju. This is only supported with Juju 2.0 and above.

The amqp relation can be bound to a specific network space, allowing client connections to be routed over specific networks:

juju deploy rabbitmq-server --bind "amqp=internal-space"

alternatively this can also be provided as part of a juju native bundle configuration:

rabbitmq-server:
  charm: cs:xenial/rabbitmq-server
  num_units: 1
  bindings:
    amqp: internal-space

NOTE: Spaces must be configured in the underlying provider prior to attempting to use them.

NOTE: Existing deployments using the access-network configuration option will continue to function; this option is preferred over any network space binding provided if set.

Contact Information

Author: OpenStack Charmers openstack-charmers@lists.ubuntu.com Bugs: http://bugs.launchpad.net/charms/+source/rabbitmq-server/+filebug Location: http://jujucharms.com/rabbitmq-server