Merge "Ability to enable/disable debug mode per OpenStack service"
[apex-tripleo-heat-templates.git] / docker / services / swift-storage.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack containerized Swift Storage services.
5
6 parameters:
7   DockerNamespace:
8     description: namespace
9     default: 'tripleoupstream'
10     type: string
11   DockerSwiftProxyImage:
12     description: image
13     default: 'centos-binary-swift-proxy-server:latest'
14     type: string
15   DockerSwiftAccountImage:
16     description: image
17     default: 'centos-binary-swift-account:latest'
18     type: string
19   DockerSwiftContainerImage:
20     description: image
21     default: 'centos-binary-swift-container:latest'
22     type: string
23   DockerSwiftObjectImage:
24     description: image
25     default: 'centos-binary-swift-object:latest'
26     type: string
27   EndpointMap:
28     default: {}
29     description: Mapping of service endpoint -> protocol. Typically set
30                  via parameter_defaults in the resource registry.
31     type: json
32   DefaultPasswords:
33     default: {}
34     type: json
35   RoleName:
36     default: ''
37     description: Role name on which the service is applied
38     type: string
39   RoleParameters:
40     default: {}
41     description: Parameters specific to the role
42     type: json
43   ServiceNetMap:
44     default: {}
45     description: Mapping of service_name -> network name. Typically set
46                  via parameter_defaults in the resource registry.  This
47                  mapping overrides those in ServiceNetMapDefaults.
48     type: json
49
50 resources:
51
52   ContainersCommon:
53     type: ./containers-common.yaml
54
55   SwiftStorageBase:
56     type: ../../puppet/services/swift-storage.yaml
57     properties:
58       EndpointMap: {get_param: EndpointMap}
59       ServiceNetMap: {get_param: ServiceNetMap}
60       DefaultPasswords: {get_param: DefaultPasswords}
61       RoleName: {get_param: RoleName}
62       RoleParameters: {get_param: RoleParameters}
63
64 outputs:
65   role_data:
66     description: Role data for the swift storage services.
67     value:
68       service_name: {get_attr: [SwiftStorageBase, role_data, service_name]}
69       config_settings: {get_attr: [SwiftStorageBase, role_data, config_settings]}
70       step_config: &step_config
71         get_attr: [SwiftStorageBase, role_data, step_config]
72       service_config_settings: {get_attr: [SwiftStorageBase, role_data, service_config_settings]}
73       # BEGIN DOCKER SETTINGS
74       puppet_config:
75         config_volume: swift
76         puppet_tags: swift_config,swift_container_config,swift_container_sync_realms_config,swift_account_config,swift_object_config,swift_object_expirer_config
77         step_config: *step_config
78         config_image: &swift_proxy_image
79           list_join:
80             - '/'
81             - [ {get_param: DockerNamespace}, {get_param: DockerSwiftProxyImage} ]
82       kolla_config:
83         /var/lib/kolla/config_files/swift_account_auditor.json:
84           command: /usr/bin/swift-account-auditor /etc/swift/account-server.conf
85         /var/lib/kolla/config_files/swift_account_reaper.json:
86           command: /usr/bin/swift-account-reaper /etc/swift/account-server.conf
87         /var/lib/kolla/config_files/swift_account_replicator.json:
88           command: /usr/bin/swift-account-replicator /etc/swift/account-server.conf
89         /var/lib/kolla/config_files/swift_account_server.json:
90           command: /usr/bin/swift-account-server /etc/swift/account-server.conf
91         /var/lib/kolla/config_files/swift_container_auditor.json:
92           command: /usr/bin/swift-container-auditor /etc/swift/container-server.conf
93         /var/lib/kolla/config_files/swift_container_replicator.json:
94           command: /usr/bin/swift-container-replicator /etc/swift/container-server.conf
95         /var/lib/kolla/config_files/swift_container_updater.json:
96           command: /usr/bin/swift-container-updater /etc/swift/container-server.conf
97         /var/lib/kolla/config_files/swift_container_server.json:
98           command: /usr/bin/swift-container-server /etc/swift/container-server.conf
99         /var/lib/kolla/config_files/swift_object_auditor.json:
100           command: /usr/bin/swift-object-auditor /etc/swift/object-server.conf
101         /var/lib/kolla/config_files/swift_object_expirer.json:
102           command: /usr/bin/swift-object-expirer /etc/swift/object-expirer.conf
103         /var/lib/kolla/config_files/swift_object_replicator.json:
104           command: /usr/bin/swift-object-replicator /etc/swift/object-server.conf
105         /var/lib/kolla/config_files/swift_object_updater.json:
106           command: /usr/bin/swift-object-updater /etc/swift/object-server.conf
107         /var/lib/kolla/config_files/swift_object_server.json:
108           command: /usr/bin/swift-object-server /etc/swift/object-server.conf
109           permissions:
110             - path: /var/log/swift
111               owner: swift:swift
112               recurse: true
113       docker_config:
114         step_3:
115           # The puppet config sets this up but we don't have a way to mount the named
116           # volume during the configuration stage.  We just need to create this
117           # directory and make sure it's owned by swift.
118           swift_setup_srv:
119             image: &swift_account_image
120               list_join:
121                 - '/'
122                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftAccountImage} ]
123             user: root
124             command: ['chown', '-R', 'swift:', '/srv/node']
125             volumes:
126               - /srv/node:/srv/node
127         step_4:
128           swift_account_auditor:
129             image: *swift_account_image
130             net: host
131             user: swift
132             restart: always
133             volumes:
134               list_concat:
135                 - {get_attr: [ContainersCommon, volumes]}
136                 -
137                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
138                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
139                   - /run:/run
140                   - /srv/node:/srv/node
141                   - /dev:/dev
142                   - /var/log/containers/swift:/var/log/swift
143             environment: &kolla_env
144               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
145           swift_account_reaper:
146             image: *swift_account_image
147             net: host
148             user: swift
149             restart: always
150             volumes:
151               list_concat:
152                 - {get_attr: [ContainersCommon, volumes]}
153                 -
154                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
155                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
156                   - /run:/run
157                   - /srv/node:/srv/node
158                   - /dev:/dev
159                   - /var/log/containers/swift:/var/log/swift
160             environment: *kolla_env
161           swift_account_replicator:
162             image: *swift_account_image
163             net: host
164             user: swift
165             restart: always
166             volumes:
167               list_concat:
168                 - {get_attr: [ContainersCommon, volumes]}
169                 -
170                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
171                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
172                   - /run:/run
173                   - /srv/node:/srv/node
174                   - /dev:/dev
175                   - /var/log/containers/swift:/var/log/swift
176             environment: *kolla_env
177           swift_account_server:
178             image: *swift_account_image
179             net: host
180             user: swift
181             restart: always
182             volumes:
183               list_concat:
184                 - {get_attr: [ContainersCommon, volumes]}
185                 -
186                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
187                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
188                   - /run:/run
189                   - /srv/node:/srv/node
190                   - /dev:/dev
191                   - /var/log/containers/swift:/var/log/swift
192             environment: *kolla_env
193           swift_container_auditor:
194             image: &swift_container_image
195               list_join:
196                 - '/'
197                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftContainerImage} ]
198             net: host
199             user: swift
200             restart: always
201             volumes:
202               list_concat:
203                 - {get_attr: [ContainersCommon, volumes]}
204                 -
205                   - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
206                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
207                   - /run:/run
208                   - /srv/node:/srv/node
209                   - /dev:/dev
210                   - /var/log/containers/swift:/var/log/swift
211             environment: *kolla_env
212           swift_container_replicator:
213             image: *swift_container_image
214             net: host
215             user: swift
216             restart: always
217             volumes:
218               list_concat:
219                 - {get_attr: [ContainersCommon, volumes]}
220                 -
221                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
222                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
223                   - /run:/run
224                   - /srv/node:/srv/node
225                   - /dev:/dev
226                   - /var/log/containers/swift:/var/log/swift
227             environment: *kolla_env
228           swift_container_updater:
229             image: *swift_container_image
230             net: host
231             user: swift
232             restart: always
233             volumes:
234               list_concat:
235                 - {get_attr: [ContainersCommon, volumes]}
236                 -
237                   - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
238                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
239                   - /run:/run
240                   - /srv/node:/srv/node
241                   - /dev:/dev
242                   - /var/log/containers/swift:/var/log/swift
243             environment: *kolla_env
244           swift_container_server:
245             image: *swift_container_image
246             net: host
247             user: swift
248             restart: always
249             volumes:
250               list_concat:
251                 - {get_attr: [ContainersCommon, volumes]}
252                 -
253                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
254                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
255                   - /run:/run
256                   - /srv/node:/srv/node
257                   - /dev:/dev
258                   - /var/log/containers/swift:/var/log/swift
259             environment: *kolla_env
260           swift_object_auditor:
261             image: &swift_object_image
262               list_join:
263                 - '/'
264                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftObjectImage} ]
265             net: host
266             user: swift
267             restart: always
268             volumes:
269               list_concat:
270                 - {get_attr: [ContainersCommon, volumes]}
271                 -
272                   - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
273                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
274                   - /run:/run
275                   - /srv/node:/srv/node
276                   - /dev:/dev
277                   - /var/log/containers/swift:/var/log/swift
278             environment: *kolla_env
279           swift_object_expirer:
280             image: *swift_proxy_image
281             net: host
282             user: swift
283             restart: always
284             volumes:
285               list_concat:
286                 - {get_attr: [ContainersCommon, volumes]}
287                 -
288                   - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
289                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
290                   - /run:/run
291                   - /srv/node:/srv/node
292                   - /dev:/dev
293                   - /var/log/containers/swift:/var/log/swift
294             environment: *kolla_env
295           swift_object_replicator:
296             image: *swift_object_image
297             net: host
298             user: swift
299             restart: always
300             volumes:
301               list_concat:
302                 - {get_attr: [ContainersCommon, volumes]}
303                 -
304                   - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
305                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
306                   - /run:/run
307                   - /srv/node:/srv/node
308                   - /dev:/dev
309                   - /var/log/containers/swift:/var/log/swift
310             environment: *kolla_env
311           swift_object_updater:
312             image: *swift_object_image
313             net: host
314             user: swift
315             restart: always
316             volumes:
317               list_concat:
318                 - {get_attr: [ContainersCommon, volumes]}
319                 -
320                   - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
321                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
322                   - /run:/run
323                   - /srv/node:/srv/node
324                   - /dev:/dev
325                   - /var/log/containers/swift:/var/log/swift
326             environment: *kolla_env
327           swift_object_server:
328             image: *swift_object_image
329             net: host
330             user: swift
331             restart: always
332             volumes:
333               list_concat:
334                 - {get_attr: [ContainersCommon, volumes]}
335                 -
336                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
337                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
338                   - /run:/run
339                   - /srv/node:/srv/node
340                   - /dev:/dev
341                   - /var/log/containers/swift:/var/log/swift
342             environment: *kolla_env
343       host_prep_tasks:
344         - name: create persistent directories
345           file:
346             path: "{{ item }}"
347             state: directory
348           with_items:
349             - /var/log/containers/swift
350             - /srv/node
351       upgrade_tasks:
352         - name: Stop and disable swift storage services
353           tags: step2
354           service: name={{ item }} state=stopped enabled=no
355           with_items:
356             - openstack-swift-account-auditor
357             - openstack-swift-account-reaper
358             - openstack-swift-account-replicator
359             - openstack-swift-account
360             - openstack-swift-container-auditor
361             - openstack-swift-container-replicator
362             - openstack-swift-container-updater
363             - openstack-swift-container
364             - openstack-swift-object-auditor
365             - openstack-swift-object-replicator
366             - openstack-swift-object-updater
367             - openstack-swift-object