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