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