Merge "Set docker-puppet --health-cmd = /bin/true" into stable/pike
[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   DockerSwiftProxyImage:
8     description: image
9     type: string
10   DockerSwiftAccountImage:
11     description: image
12     type: string
13   DockerSwiftContainerImage:
14     description: image
15     type: string
16   DockerSwiftObjectImage:
17     description: image
18     type: string
19   DockerSwiftConfigImage:
20     description: The container image to use for the swift config_volume
21     default: 'centos-binary-swift-proxy-server:latest'
22     type: string
23   EndpointMap:
24     default: {}
25     description: Mapping of service endpoint -> protocol. Typically set
26                  via parameter_defaults in the resource registry.
27     type: json
28   DefaultPasswords:
29     default: {}
30     type: json
31   RoleName:
32     default: ''
33     description: Role name on which the service is applied
34     type: string
35   RoleParameters:
36     default: {}
37     description: Parameters specific to the role
38     type: json
39   ServiceData:
40     default: {}
41     description: Dictionary packing service data
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   SwiftRawDisks:
50     default: {}
51     description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
52     type: json
53
54
55 resources:
56
57   ContainersCommon:
58     type: ./containers-common.yaml
59
60   SwiftStorageBase:
61     type: ../../puppet/services/swift-storage.yaml
62     properties:
63       EndpointMap: {get_param: EndpointMap}
64       ServiceData: {get_param: ServiceData}
65       ServiceNetMap: {get_param: ServiceNetMap}
66       DefaultPasswords: {get_param: DefaultPasswords}
67       RoleName: {get_param: RoleName}
68       RoleParameters: {get_param: RoleParameters}
69
70 outputs:
71   role_data:
72     description: Role data for the swift storage services.
73     value:
74       service_name: {get_attr: [SwiftStorageBase, role_data, service_name]}
75       config_settings:
76         map_merge:
77           - {get_attr: [SwiftStorageBase, role_data, config_settings]}
78           # FIXME (cschwede): re-enable this once checks works inside containers
79           - swift::storage::all::mount_check: false
80       step_config: &step_config
81         get_attr: [SwiftStorageBase, role_data, step_config]
82       service_config_settings: {get_attr: [SwiftStorageBase, role_data, service_config_settings]}
83       # BEGIN DOCKER SETTINGS
84       puppet_config:
85         config_volume: swift
86         puppet_tags: swift_config,swift_container_config,swift_container_sync_realms_config,swift_account_config,swift_object_config,swift_object_expirer_config,rsync::server
87         step_config: *step_config
88         config_image: {get_param: DockerSwiftConfigImage}
89       kolla_config:
90         /var/lib/kolla/config_files/swift_account_auditor.json:
91           command: /usr/bin/swift-account-auditor /etc/swift/account-server.conf
92           config_files:
93             - source: "/var/lib/kolla/config_files/src/*"
94               dest: "/"
95               merge: true
96               preserve_properties: true
97         /var/lib/kolla/config_files/swift_account_reaper.json:
98           command: /usr/bin/swift-account-reaper /etc/swift/account-server.conf
99           config_files:
100             - source: "/var/lib/kolla/config_files/src/*"
101               dest: "/"
102               merge: true
103               preserve_properties: true
104         /var/lib/kolla/config_files/swift_account_replicator.json:
105           command: /usr/bin/swift-account-replicator /etc/swift/account-server.conf
106           config_files:
107             - source: "/var/lib/kolla/config_files/src/*"
108               dest: "/"
109               merge: true
110               preserve_properties: true
111         /var/lib/kolla/config_files/swift_account_server.json:
112           command: /usr/bin/swift-account-server /etc/swift/account-server.conf
113           config_files:
114             - source: "/var/lib/kolla/config_files/src/*"
115               dest: "/"
116               merge: true
117               preserve_properties: true
118         /var/lib/kolla/config_files/swift_container_auditor.json:
119           command: /usr/bin/swift-container-auditor /etc/swift/container-server.conf
120           config_files:
121             - source: "/var/lib/kolla/config_files/src/*"
122               dest: "/"
123               merge: true
124               preserve_properties: true
125         /var/lib/kolla/config_files/swift_container_replicator.json:
126           command: /usr/bin/swift-container-replicator /etc/swift/container-server.conf
127           config_files:
128             - source: "/var/lib/kolla/config_files/src/*"
129               dest: "/"
130               merge: true
131               preserve_properties: true
132         /var/lib/kolla/config_files/swift_container_updater.json:
133           command: /usr/bin/swift-container-updater /etc/swift/container-server.conf
134           config_files:
135             - source: "/var/lib/kolla/config_files/src/*"
136               dest: "/"
137               merge: true
138               preserve_properties: true
139         /var/lib/kolla/config_files/swift_container_server.json:
140           command: /usr/bin/swift-container-server /etc/swift/container-server.conf
141           config_files:
142             - source: "/var/lib/kolla/config_files/src/*"
143               dest: "/"
144               merge: true
145               preserve_properties: true
146         /var/lib/kolla/config_files/swift_object_auditor.json:
147           command: /usr/bin/swift-object-auditor /etc/swift/object-server.conf
148           config_files:
149             - source: "/var/lib/kolla/config_files/src/*"
150               dest: "/"
151               merge: true
152               preserve_properties: true
153         /var/lib/kolla/config_files/swift_object_expirer.json:
154           command: /usr/bin/swift-object-expirer /etc/swift/object-expirer.conf
155           config_files:
156             - source: "/var/lib/kolla/config_files/src/*"
157               dest: "/"
158               merge: true
159               preserve_properties: true
160         /var/lib/kolla/config_files/swift_object_replicator.json:
161           command: /usr/bin/swift-object-replicator /etc/swift/object-server.conf
162           config_files:
163             - source: "/var/lib/kolla/config_files/src/*"
164               dest: "/"
165               merge: true
166               preserve_properties: true
167         /var/lib/kolla/config_files/swift_object_updater.json:
168           command: /usr/bin/swift-object-updater /etc/swift/object-server.conf
169           config_files:
170             - source: "/var/lib/kolla/config_files/src/*"
171               dest: "/"
172               merge: true
173               preserve_properties: true
174         /var/lib/kolla/config_files/swift_object_server.json:
175           command: /usr/bin/swift-object-server /etc/swift/object-server.conf
176           config_files:
177             - source: "/var/lib/kolla/config_files/src/*"
178               dest: "/"
179               merge: true
180               preserve_properties: true
181           permissions:
182             - path: /var/log/swift
183               owner: swift:swift
184               recurse: true
185         /var/lib/kolla/config_files/swift_rsync.json:
186           command: /usr/bin/rsync --daemon --no-detach --config=/etc/rsyncd.conf
187           config_files:
188             - source: "/var/lib/kolla/config_files/src/*"
189               dest: "/"
190               merge: true
191               preserve_properties: true
192       docker_config:
193         step_3:
194           # The puppet config sets this up but we don't have a way to mount the named
195           # volume during the configuration stage.  We just need to create this
196           # directory and make sure it's owned by swift.
197           swift_setup_srv:
198             image: &swift_account_image {get_param: DockerSwiftAccountImage}
199             user: root
200             command: ['chown', '-R', 'swift:', '/srv/node']
201             volumes:
202               - /srv/node:/srv/node
203         step_4:
204           swift_account_auditor:
205             image: *swift_account_image
206             net: host
207             user: swift
208             restart: always
209             volumes:
210               list_concat:
211                 - {get_attr: [ContainersCommon, volumes]}
212                 -
213                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
214                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
215                   - /run:/run
216                   - /srv/node:/srv/node
217                   - /dev:/dev
218                   - /var/log/containers/swift:/var/log/swift
219             environment: &kolla_env
220               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
221           swift_account_reaper:
222             image: *swift_account_image
223             net: host
224             user: swift
225             restart: always
226             volumes:
227               list_concat:
228                 - {get_attr: [ContainersCommon, volumes]}
229                 -
230                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
231                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
232                   - /run:/run
233                   - /srv/node:/srv/node
234                   - /dev:/dev
235                   - /var/log/containers/swift:/var/log/swift
236             environment: *kolla_env
237           swift_account_replicator:
238             image: *swift_account_image
239             net: host
240             user: swift
241             restart: always
242             volumes:
243               list_concat:
244                 - {get_attr: [ContainersCommon, volumes]}
245                 -
246                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
247                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
248                   - /run:/run
249                   - /srv/node:/srv/node
250                   - /dev:/dev
251                   - /var/log/containers/swift:/var/log/swift
252             environment: *kolla_env
253           swift_account_server:
254             image: *swift_account_image
255             net: host
256             user: swift
257             restart: always
258             volumes:
259               list_concat:
260                 - {get_attr: [ContainersCommon, volumes]}
261                 -
262                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
263                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
264                   - /run:/run
265                   - /srv/node:/srv/node
266                   - /dev:/dev
267                   - /var/log/containers/swift:/var/log/swift
268             environment: *kolla_env
269           swift_container_auditor:
270             image: &swift_container_image {get_param: DockerSwiftContainerImage}
271             net: host
272             user: swift
273             restart: always
274             volumes:
275               list_concat:
276                 - {get_attr: [ContainersCommon, volumes]}
277                 -
278                   - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
279                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
280                   - /run:/run
281                   - /srv/node:/srv/node
282                   - /dev:/dev
283                   - /var/log/containers/swift:/var/log/swift
284             environment: *kolla_env
285           swift_container_replicator:
286             image: *swift_container_image
287             net: host
288             user: swift
289             restart: always
290             volumes:
291               list_concat:
292                 - {get_attr: [ContainersCommon, volumes]}
293                 -
294                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
295                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
296                   - /run:/run
297                   - /srv/node:/srv/node
298                   - /dev:/dev
299                   - /var/log/containers/swift:/var/log/swift
300             environment: *kolla_env
301           swift_container_updater:
302             image: *swift_container_image
303             net: host
304             user: swift
305             restart: always
306             volumes:
307               list_concat:
308                 - {get_attr: [ContainersCommon, volumes]}
309                 -
310                   - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
311                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
312                   - /run:/run
313                   - /srv/node:/srv/node
314                   - /dev:/dev
315                   - /var/log/containers/swift:/var/log/swift
316             environment: *kolla_env
317           swift_container_server:
318             image: *swift_container_image
319             net: host
320             user: swift
321             restart: always
322             volumes:
323               list_concat:
324                 - {get_attr: [ContainersCommon, volumes]}
325                 -
326                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
327                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
328                   - /run:/run
329                   - /srv/node:/srv/node
330                   - /dev:/dev
331                   - /var/log/containers/swift:/var/log/swift
332             environment: *kolla_env
333           swift_object_auditor:
334             image: &swift_object_image {get_param: DockerSwiftObjectImage}
335             net: host
336             user: swift
337             restart: always
338             volumes:
339               list_concat:
340                 - {get_attr: [ContainersCommon, volumes]}
341                 -
342                   - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
343                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
344                   - /run:/run
345                   - /srv/node:/srv/node
346                   - /dev:/dev
347                   - /var/log/containers/swift:/var/log/swift
348             environment: *kolla_env
349           swift_object_expirer:
350             image: &swift_proxy_image {get_param: DockerSwiftProxyImage}
351             net: host
352             user: swift
353             restart: always
354             volumes:
355               list_concat:
356                 - {get_attr: [ContainersCommon, volumes]}
357                 -
358                   - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
359                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
360                   - /run:/run
361                   - /srv/node:/srv/node
362                   - /dev:/dev
363                   - /var/log/containers/swift:/var/log/swift
364             environment: *kolla_env
365           swift_object_replicator:
366             image: *swift_object_image
367             net: host
368             user: swift
369             restart: always
370             volumes:
371               list_concat:
372                 - {get_attr: [ContainersCommon, volumes]}
373                 -
374                   - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
375                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
376                   - /run:/run
377                   - /srv/node:/srv/node
378                   - /dev:/dev
379                   - /var/log/containers/swift:/var/log/swift
380             environment: *kolla_env
381           swift_object_updater:
382             image: *swift_object_image
383             net: host
384             user: swift
385             restart: always
386             volumes:
387               list_concat:
388                 - {get_attr: [ContainersCommon, volumes]}
389                 -
390                   - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
391                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
392                   - /run:/run
393                   - /srv/node:/srv/node
394                   - /dev:/dev
395                   - /var/log/containers/swift:/var/log/swift
396             environment: *kolla_env
397           swift_object_server:
398             image: *swift_object_image
399             net: host
400             user: swift
401             restart: always
402             volumes:
403               list_concat:
404                 - {get_attr: [ContainersCommon, volumes]}
405                 -
406                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
407                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
408                   - /run:/run
409                   - /srv/node:/srv/node
410                   - /dev:/dev
411                   - /var/log/containers/swift:/var/log/swift
412             environment: *kolla_env
413           swift_rsync:
414             image: *swift_object_image
415             net: host
416             user: root
417             restart: always
418             privileged: true
419             volumes:
420               list_concat:
421                 - {get_attr: [ContainersCommon, volumes]}
422                 -
423                   - /var/lib/kolla/config_files/swift_rsync.json:/var/lib/kolla/config_files/config.json:ro
424                   - /var/lib/config-data/puppet-generated/swift/:/var/lib/kolla/config_files/src:ro
425                   - /run:/run
426                   - /srv/node:/srv/node
427                   - /dev:/dev
428                   - /var/log/containers/swift:/var/log/swift
429             environment: *kolla_env
430
431       host_prep_tasks:
432         - name: create persistent directories
433           file:
434             path: "{{ item }}"
435             state: directory
436           with_items:
437             - /var/log/containers/swift
438             - /srv/node
439         - name: Format and mount devices defined in SwiftRawDisks
440           mount:
441             name: /srv/node/{{ item }}
442             src: /dev/{{ item }}
443             fstype: xfs
444             opts: noatime
445             state: mounted
446           with_items:
447             - repeat:
448                 template: 'DEVICE'
449                 for_each:
450                   DEVICE: {get_param: SwiftRawDisks}
451       upgrade_tasks:
452         - name: Stop and disable swift storage services
453           tags: step2
454           service: name={{ item }} state=stopped enabled=no
455           with_items:
456             - openstack-swift-account-auditor
457             - openstack-swift-account-reaper
458             - openstack-swift-account-replicator
459             - openstack-swift-account
460             - openstack-swift-container-auditor
461             - openstack-swift-container-replicator
462             - openstack-swift-container-updater
463             - openstack-swift-container
464             - openstack-swift-object-auditor
465             - openstack-swift-object-expirer
466             - openstack-swift-object-replicator
467             - openstack-swift-object-updater
468             - openstack-swift-object