Adds network/cidr mapping into a new service property
[apex-tripleo-heat-templates.git] / docker / services / rabbitmq.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack containerized Rabbitmq service
5
6 parameters:
7   DockerNamespace:
8     description: namespace
9     default: 'tripleoupstream'
10     type: string
11   DockerRabbitmqImage:
12     description: image
13     default: 'centos-binary-rabbitmq:latest'
14     type: string
15   DockerRabbitmqConfigImage:
16     description: The container image to use for the rabbitmq config_volume
17     default: 'centos-binary-rabbitmq:latest'
18     type: string
19   EndpointMap:
20     default: {}
21     description: Mapping of service endpoint -> protocol. Typically set
22                  via parameter_defaults in the resource registry.
23     type: json
24   ServiceData:
25     default: {}
26     description: Dictionary packing service data
27     type: json
28   ServiceNetMap:
29     default: {}
30     description: Mapping of service_name -> network name. Typically set
31                  via parameter_defaults in the resource registry.  This
32                  mapping overrides those in ServiceNetMapDefaults.
33     type: json
34   DefaultPasswords:
35     default: {}
36     type: json
37   RoleName:
38     default: ''
39     description: Role name on which the service is applied
40     type: string
41   RoleParameters:
42     default: {}
43     description: Parameters specific to the role
44     type: json
45   RabbitCookie:
46     type: string
47     default: ''
48     hidden: true
49
50 resources:
51
52   ContainersCommon:
53     type: ./containers-common.yaml
54
55   RabbitmqBase:
56     type: ../../puppet/services/rabbitmq.yaml
57     properties:
58       EndpointMap: {get_param: EndpointMap}
59       ServiceData: {get_param: ServiceData}
60       ServiceNetMap: {get_param: ServiceNetMap}
61       DefaultPasswords: {get_param: DefaultPasswords}
62       RoleName: {get_param: RoleName}
63       RoleParameters: {get_param: RoleParameters}
64
65 outputs:
66   role_data:
67     description: Role data for the Rabbitmq API role.
68     value:
69       service_name: {get_attr: [RabbitmqBase, role_data, service_name]}
70       # RabbitMQ plugins initialization occurs on every node
71       config_settings:
72         map_merge:
73           - {get_attr: [RabbitmqBase, role_data, config_settings]}
74           - rabbitmq::admin_enable: false
75       step_config: &step_config
76         list_join:
77           - "\n"
78           - - "['Rabbitmq_policy', 'Rabbitmq_user'].each |String $val| { noop_resource($val) }"
79             - get_attr: [RabbitmqBase, role_data, step_config]
80       service_config_settings: {get_attr: [RabbitmqBase, role_data, service_config_settings]}
81       # BEGIN DOCKER SETTINGS
82       puppet_config:
83         config_volume: rabbitmq
84         step_config: *step_config
85         config_image: &rabbitmq_config_image
86           list_join:
87             - '/'
88             - [ {get_param: DockerNamespace}, {get_param: DockerRabbitmqConfigImage} ]
89       kolla_config:
90         /var/lib/kolla/config_files/rabbitmq.json:
91           command: /usr/lib/rabbitmq/bin/rabbitmq-server
92           config_files:
93             - source: "/var/lib/kolla/config_files/src/*"
94               dest: "/"
95               merge: true
96               preserve_properties: true
97           permissions:
98             - path: /var/lib/rabbitmq
99               owner: rabbitmq:rabbitmq
100               recurse: true
101       docker_config:
102         # Kolla_bootstrap runs before permissions set by kolla_config
103         step_1:
104           rabbitmq_init_logs:
105             start_order: 0
106             detach: false
107             image: &rabbitmq_image
108               list_join:
109                 - '/'
110                 - [ {get_param: DockerNamespace}, {get_param: DockerRabbitmqImage} ]
111             privileged: false
112             user: root
113             volumes:
114               - /var/log/containers/rabbitmq:/var/log/rabbitmq
115             command: ['/bin/bash', '-c', 'chown -R rabbitmq:rabbitmq /var/log/rabbitmq']
116           rabbitmq_bootstrap:
117             start_order: 1
118             detach: false
119             image: *rabbitmq_image
120             net: host
121             privileged: false
122             volumes:
123               list_concat:
124                 - {get_attr: [ContainersCommon, volumes]}
125                 -
126                   - /var/lib/kolla/config_files/rabbitmq.json:/var/lib/kolla/config_files/config.json:ro
127                   - /var/lib/config-data/puppet-generated/rabbitmq/:/var/lib/kolla/config_files/src:ro
128                   - /var/lib/rabbitmq:/var/lib/rabbitmq
129                   - /var/log/containers/rabbitmq:/var/log/rabbitmq
130             environment:
131               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
132               - KOLLA_BOOTSTRAP=True
133               -
134                 list_join:
135                   - '='
136                   - - 'RABBITMQ_CLUSTER_COOKIE'
137                     -
138                       yaql:
139                         expression: $.data.passwords.where($ != '').first()
140                         data:
141                           passwords:
142                             - {get_param: RabbitCookie}
143                             - {get_param: [DefaultPasswords, rabbit_cookie]}
144           rabbitmq:
145             start_order: 2
146             image: *rabbitmq_image
147             net: host
148             privileged: false
149             restart: always
150             volumes:
151               list_concat:
152                 - {get_attr: [ContainersCommon, volumes]}
153                 -
154                   - /var/lib/kolla/config_files/rabbitmq.json:/var/lib/kolla/config_files/config.json:ro
155                   - /var/lib/config-data/puppet-generated/rabbitmq/:/var/lib/kolla/config_files/src:ro
156                   - /var/lib/rabbitmq:/var/lib/rabbitmq
157                   - /var/log/containers/rabbitmq:/var/log/rabbitmq
158             environment:
159               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
160       docker_puppet_tasks:
161         # RabbitMQ users and policies initialization occurs only on single node
162         step_1:
163           config_volume: 'rabbit_init_tasks'
164           puppet_tags: 'rabbitmq_policy,rabbitmq_user'
165           step_config: 'include ::tripleo::profile::base::rabbitmq'
166           config_image: *rabbitmq_config_image
167           volumes:
168             - /var/lib/config-data/rabbitmq/etc/rabbitmq/:/etc/rabbitmq/:ro
169             - /var/lib/rabbitmq:/var/lib/rabbitmq:ro
170       host_prep_tasks:
171         - name: create persistent directories
172           file:
173             path: "{{ item }}"
174             state: directory
175           with_items:
176             - /var/log/containers/rabbitmq
177             - /var/lib/rabbitmq
178       upgrade_tasks:
179         - name: Stop and disable rabbitmq service
180           tags: step2
181           service: name=rabbitmq-server state=stopped enabled=no