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