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