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