Merge "Force epmd listening to a specific address"
[apex-tripleo-heat-templates.git] / puppet / services / rabbitmq.yaml
index 4c02f35..2c4ccbc 100644 (file)
@@ -1,9 +1,18 @@
-heat_template_version: 2016-04-08
+heat_template_version: ocata
 
 description: >
   RabbitMQ service configured with Puppet
 
 parameters:
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
   EndpointMap:
     default: {}
     description: Mapping of service endpoint -> protocol. Typically set
@@ -25,12 +34,27 @@ parameters:
     default: false
     description: Enable IPv6 in RabbitMQ
     type: boolean
+  RabbitCookie:
+    type: string
+    default: ''
+    hidden: true
+  RabbitHAQueues:
+    description:
+      The number of HA queues to be configured in rabbit. The default is 0 which will
+      be automatically overridden to CEIL(N/2) where N is the number of nodes running
+      rabbitmq.
+    default: 0
+    type: number
+  MonitoringSubscriptionRabbitmq:
+    default: 'overcloud-rabbitmq'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the RabbitMQ role.
     value:
       service_name: rabbitmq
+      monitoring_subscription: {get_param: MonitoringSubscriptionRabbitmq}
       config_settings:
         rabbitmq::file_limit: {get_param: RabbitFDLimit}
         rabbitmq::default_user: {get_param: RabbitUserName}
@@ -41,21 +65,49 @@ outputs:
             dport:
               - 4369
               - 5672
-              - 35672
+              - 25672
         rabbitmq::delete_guest_user: false
         rabbitmq::wipe_db_on_cookie_change: true
         rabbitmq::port: '5672'
+        rabbitmq::package_provider: yum
         rabbitmq::package_source: undef
         rabbitmq::repos_ensure: false
+        rabbitmq::tcp_keepalive: true
         rabbitmq_environment:
+          NODE_PORT: ''
+          NODE_IP_ADDRESS: ''
           RABBITMQ_NODENAME: "rabbit@%{::hostname}"
-          RABBITMQ_SERVER_ERL_ARGS: '"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"'
+          RABBITMQ_SERVER_ERL_ARGS: '"+K true +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"'
+          'export ERL_EPMD_ADDRESS': "%{hiera('rabbitmq::interface')}"
         rabbitmq_kernel_variables:
-          inet_dist_listen_min: '35672'
-          inet_dist_listen_max: '35672'
+          inet_dist_listen_min: '25672'
+          inet_dist_listen_max: '25672'
         rabbitmq_config_variables:
-          tcp_listen_options: '[binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]'
           cluster_partition_handling: 'pause_minority'
+          queue_master_locator: '<<"min-masters">>'
           loopback_users: '[]'
+        rabbitmq::erlang_cookie:
+          yaql:
+            expression: $.data.passwords.where($ != '').first()
+            data:
+              passwords:
+                - {get_param: RabbitCookie}
+                - {get_param: [DefaultPasswords, rabbit_cookie]}
+        # NOTE: bind IP is found in Heat replacing the network name with the
+        # local node IP for the given network; replacement examples
+        # (eg. for internal_api):
+        # internal_api -> IP
+        # internal_api_uri -> [IP]
+        # internal_api_subnet - > IP/CIDR
+        rabbitmq::interface: {get_param: [ServiceNetMap, RabbitmqNetwork]}
+        rabbitmq::nr_ha_queues: {get_param: RabbitHAQueues}
       step_config: |
         include ::tripleo::profile::base::rabbitmq
+      upgrade_tasks:
+        - name: Stop rabbitmq service
+          tags: step2
+          service: name=rabbitmq-server state=stopped
+        - name: Start rabbitmq service
+          tags: step4
+          service: name=rabbitmq-server state=started
+