tripleo-image-elements/elements/rabbitmq-server
Jenkins 8b2acd270f Merge "Provide a way to set user permission for rabbitmq users" 2014-05-24 16:23:12 +00:00
..
install.d Ensure rabbitmq can be successfully restarted 2014-05-08 12:37:23 +01:00
os-config-applier Ensure rabbitmq can be successfully restarted 2014-05-08 12:37:23 +01:00
os-refresh-config Merge "Provide a way to set user permission for rabbitmq users" 2014-05-24 16:23:12 +00:00
README.md Provide a way to set user permission for rabbitmq users 2014-05-19 13:25:09 -07:00
element-deps sort the element-deps to please dib-lint 2014-04-24 15:38:03 +02:00

README.md

Install RabbitMQ server package and optionally configure it using Heat metadata.

Heat

We will create a random password and feed it to a Heat wait condition if directed by Metadata. The relevant Metadata would look something like this in Heat:

Metadata:
  rabbit:
    users:
      guest:
        username: guest
        tags: administrator
      nova:
        username: nova
        password: SuperSecret
        tags: 
          - administrator
          - monitoring
        permissions:
          conf: .*
          write: .*
          read: .*
    password_handle: {Ref: RabbitMQPasswordHandle}

Using cfn-signal, we will feed back a generated password into the handle for use by other resources.

RabbitMQ Cluster

Additional parameters in heat template are required for each clustered node:

Metadata:
  rabbit:
    cookie: some_cookie
      - make sure same cookie is set for all nodes in cluster
    nodes:
      node0,node1

'rabbit.nodes' contains short hostnames of all nodes in RabbitMq cluster.

If a node has 'rabbit.nodes' set to true, this node is added into cluster with other nodes listed in 'rabbit.nodes'.

RabbitMQ inter-node communication is restricted to port 5535 only in config file (otherwise random ports would be used) to make sure this port can be enabled in firewall.

Sample 2-node cluster definition:

node0:
  rabbit:
    cookie: some_cookie
    nodes:
      Fn::Join:
      - ','
      - - Fn::Select:
          - name
          - Fn::GetAtt:
            - node0
            - show
        - Fn::Select:
          - name
          - Fn::GetAtt:
            - node1
            - show

node1:
  rabbit:
    cookie: some_cookie
    nodes:
      Fn::Join:
      - ','
      - - Fn::Select:
          - name
          - Fn::GetAtt:
            - node0
            - show
        - Fn::Select:
          - name
          - Fn::GetAtt:
            - node1
            - show