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