Merge "Pass hieradata for internal TLS for RabbitMQ"
[apex-tripleo-heat-templates.git] / puppet / services / rabbitmq.yaml
1 heat_template_version: ocata
2
3 description: >
4   RabbitMQ service configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   EndpointMap:
17     default: {}
18     description: Mapping of service endpoint -> protocol. Typically set
19                  via parameter_defaults in the resource registry.
20     type: json
21   RabbitUserName:
22     default: guest
23     description: The username for RabbitMQ
24     type: string
25   RabbitPassword:
26     description: The password for RabbitMQ
27     type: string
28     hidden: true
29   RabbitFDLimit:
30     default: 65536
31     description: Configures RabbitMQ FD limit
32     type: string
33   RabbitIPv6:
34     default: false
35     description: Enable IPv6 in RabbitMQ
36     type: boolean
37   RabbitCookie:
38     type: string
39     default: ''
40     hidden: true
41   RabbitHAQueues:
42     description:
43       The number of HA queues to be configured in rabbit. The default is 0 which will
44       be automatically overridden to CEIL(N/2) where N is the number of nodes running
45       rabbitmq.
46     default: 0
47     type: number
48   MonitoringSubscriptionRabbitmq:
49     default: 'overcloud-rabbitmq'
50     type: string
51   EnableInternalTLS:
52     type: boolean
53     default: false
54
55 resources:
56
57   RabbitMQTLS:
58     type: OS::TripleO::Services::RabbitMQTLS
59     properties:
60       ServiceNetMap: {get_param: ServiceNetMap}
61       DefaultPasswords: {get_param: DefaultPasswords}
62       EndpointMap: {get_param: EndpointMap}
63
64 outputs:
65   role_data:
66     description: Role data for the RabbitMQ role.
67     value:
68       service_name: rabbitmq
69       monitoring_subscription: {get_param: MonitoringSubscriptionRabbitmq}
70       config_settings:
71         map_merge:
72           - get_attr: [RabbitMQTLS, role_data, config_settings]
73           -
74             rabbitmq::file_limit: {get_param: RabbitFDLimit}
75             rabbitmq::default_user: {get_param: RabbitUserName}
76             rabbitmq::default_pass: {get_param: RabbitPassword}
77             rabbit_ipv6: {get_param: RabbitIPv6}
78             tripleo.rabbitmq.firewall_rules:
79               '109 rabbitmq':
80                 dport:
81                   - 4369
82                   - 5672
83                   - 25672
84             rabbitmq::delete_guest_user: false
85             rabbitmq::wipe_db_on_cookie_change: true
86             rabbitmq::port: '5672'
87             rabbitmq::package_provider: yum
88             rabbitmq::package_source: undef
89             rabbitmq::repos_ensure: false
90             rabbitmq::tcp_keepalive: true
91             rabbitmq_environment:
92               NODE_PORT: ''
93               NODE_IP_ADDRESS: ''
94               RABBITMQ_NODENAME: "rabbit@%{::hostname}"
95               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>>}]"'
96               'export ERL_EPMD_ADDRESS': "%{hiera('rabbitmq::interface')}"
97             rabbitmq_kernel_variables:
98               inet_dist_listen_min: '25672'
99               inet_dist_listen_max: '25672'
100             rabbitmq_config_variables:
101               cluster_partition_handling: 'pause_minority'
102               queue_master_locator: '<<"min-masters">>'
103               loopback_users: '[]'
104             rabbitmq::erlang_cookie:
105               yaql:
106                 expression: $.data.passwords.where($ != '').first()
107                 data:
108                   passwords:
109                     - {get_param: RabbitCookie}
110                     - {get_param: [DefaultPasswords, rabbit_cookie]}
111             # NOTE: bind IP is found in Heat replacing the network name with the
112             # local node IP for the given network; replacement examples
113             # (eg. for internal_api):
114             # internal_api -> IP
115             # internal_api_uri -> [IP]
116             # internal_api_subnet - > IP/CIDR
117             rabbitmq::interface: {get_param: [ServiceNetMap, RabbitmqNetwork]}
118             rabbitmq::nr_ha_queues: {get_param: RabbitHAQueues}
119             rabbitmq::ssl: {get_param: EnableInternalTLS}
120             rabbitmq::ssl_port: '5672'
121             rabbitmq::ssl_depth: 1
122             rabbitmq::ssl_only: {get_param: EnableInternalTLS}
123             rabbitmq::ssl_interface: {get_param: [ServiceNetMap, RabbitmqNetwork]}
124             # TODO(jaosorior): Remove this once we set a proper default in
125             # puppet-tripleo
126             tripleo::profile::base::rabbitmq::enable_internal_tls: {get_param: EnableInternalTLS}
127       step_config: |
128         include ::tripleo::profile::base::rabbitmq
129       upgrade_tasks:
130         - name: Stop rabbitmq service
131           tags: step2
132           service: name=rabbitmq-server state=stopped
133         - name: Start rabbitmq service
134           tags: step4
135           service: name=rabbitmq-server state=started
136       metadata_settings:
137         get_attr: [RabbitMQTLS, role_data, metadata_settings]