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