Merge "adding --config-dir parameters to neutron 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   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         /var/lib/kolla/config_files/swift_account_reaper.json:
99           command: /usr/bin/swift-account-reaper /etc/swift/account-server.conf
100         /var/lib/kolla/config_files/swift_account_replicator.json:
101           command: /usr/bin/swift-account-replicator /etc/swift/account-server.conf
102         /var/lib/kolla/config_files/swift_account_server.json:
103           command: /usr/bin/swift-account-server /etc/swift/account-server.conf
104         /var/lib/kolla/config_files/swift_container_auditor.json:
105           command: /usr/bin/swift-container-auditor /etc/swift/container-server.conf
106         /var/lib/kolla/config_files/swift_container_replicator.json:
107           command: /usr/bin/swift-container-replicator /etc/swift/container-server.conf
108         /var/lib/kolla/config_files/swift_container_updater.json:
109           command: /usr/bin/swift-container-updater /etc/swift/container-server.conf
110         /var/lib/kolla/config_files/swift_container_server.json:
111           command: /usr/bin/swift-container-server /etc/swift/container-server.conf
112         /var/lib/kolla/config_files/swift_object_auditor.json:
113           command: /usr/bin/swift-object-auditor /etc/swift/object-server.conf
114         /var/lib/kolla/config_files/swift_object_expirer.json:
115           command: /usr/bin/swift-object-expirer /etc/swift/object-expirer.conf
116         /var/lib/kolla/config_files/swift_object_replicator.json:
117           command: /usr/bin/swift-object-replicator /etc/swift/object-server.conf
118         /var/lib/kolla/config_files/swift_object_updater.json:
119           command: /usr/bin/swift-object-updater /etc/swift/object-server.conf
120         /var/lib/kolla/config_files/swift_object_server.json:
121           command: /usr/bin/swift-object-server /etc/swift/object-server.conf
122           permissions:
123             - path: /var/log/swift
124               owner: swift:swift
125               recurse: true
126         /var/lib/kolla/config_files/swift_xinetd_rsync.json:
127           command: /usr/sbin/xinetd -dontfork
128       docker_config:
129         step_3:
130           # The puppet config sets this up but we don't have a way to mount the named
131           # volume during the configuration stage.  We just need to create this
132           # directory and make sure it's owned by swift.
133           swift_setup_srv:
134             image: &swift_account_image
135               list_join:
136                 - '/'
137                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftAccountImage} ]
138             user: root
139             command: ['chown', '-R', 'swift:', '/srv/node']
140             volumes:
141               - /srv/node:/srv/node
142         step_4:
143           swift_account_auditor:
144             image: *swift_account_image
145             net: host
146             user: swift
147             restart: always
148             volumes:
149               list_concat:
150                 - {get_attr: [ContainersCommon, volumes]}
151                 -
152                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
153                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
154                   - /run:/run
155                   - /srv/node:/srv/node
156                   - /dev:/dev
157                   - /var/log/containers/swift:/var/log/swift
158             environment: &kolla_env
159               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
160           swift_account_reaper:
161             image: *swift_account_image
162             net: host
163             user: swift
164             restart: always
165             volumes:
166               list_concat:
167                 - {get_attr: [ContainersCommon, volumes]}
168                 -
169                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
170                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
171                   - /run:/run
172                   - /srv/node:/srv/node
173                   - /dev:/dev
174                   - /var/log/containers/swift:/var/log/swift
175             environment: *kolla_env
176           swift_account_replicator:
177             image: *swift_account_image
178             net: host
179             user: swift
180             restart: always
181             volumes:
182               list_concat:
183                 - {get_attr: [ContainersCommon, volumes]}
184                 -
185                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
186                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
187                   - /run:/run
188                   - /srv/node:/srv/node
189                   - /dev:/dev
190                   - /var/log/containers/swift:/var/log/swift
191             environment: *kolla_env
192           swift_account_server:
193             image: *swift_account_image
194             net: host
195             user: swift
196             restart: always
197             volumes:
198               list_concat:
199                 - {get_attr: [ContainersCommon, volumes]}
200                 -
201                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
202                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
203                   - /run:/run
204                   - /srv/node:/srv/node
205                   - /dev:/dev
206                   - /var/log/containers/swift:/var/log/swift
207             environment: *kolla_env
208           swift_container_auditor:
209             image: &swift_container_image
210               list_join:
211                 - '/'
212                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftContainerImage} ]
213             net: host
214             user: swift
215             restart: always
216             volumes:
217               list_concat:
218                 - {get_attr: [ContainersCommon, volumes]}
219                 -
220                   - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
221                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
222                   - /run:/run
223                   - /srv/node:/srv/node
224                   - /dev:/dev
225                   - /var/log/containers/swift:/var/log/swift
226             environment: *kolla_env
227           swift_container_replicator:
228             image: *swift_container_image
229             net: host
230             user: swift
231             restart: always
232             volumes:
233               list_concat:
234                 - {get_attr: [ContainersCommon, volumes]}
235                 -
236                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
237                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
238                   - /run:/run
239                   - /srv/node:/srv/node
240                   - /dev:/dev
241                   - /var/log/containers/swift:/var/log/swift
242             environment: *kolla_env
243           swift_container_updater:
244             image: *swift_container_image
245             net: host
246             user: swift
247             restart: always
248             volumes:
249               list_concat:
250                 - {get_attr: [ContainersCommon, volumes]}
251                 -
252                   - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
253                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
254                   - /run:/run
255                   - /srv/node:/srv/node
256                   - /dev:/dev
257                   - /var/log/containers/swift:/var/log/swift
258             environment: *kolla_env
259           swift_container_server:
260             image: *swift_container_image
261             net: host
262             user: swift
263             restart: always
264             volumes:
265               list_concat:
266                 - {get_attr: [ContainersCommon, volumes]}
267                 -
268                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
269                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
270                   - /run:/run
271                   - /srv/node:/srv/node
272                   - /dev:/dev
273                   - /var/log/containers/swift:/var/log/swift
274             environment: *kolla_env
275           swift_object_auditor:
276             image: &swift_object_image
277               list_join:
278                 - '/'
279                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftObjectImage} ]
280             net: host
281             user: swift
282             restart: always
283             volumes:
284               list_concat:
285                 - {get_attr: [ContainersCommon, volumes]}
286                 -
287                   - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
288                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
289                   - /run:/run
290                   - /srv/node:/srv/node
291                   - /dev:/dev
292                   - /var/log/containers/swift:/var/log/swift
293             environment: *kolla_env
294           swift_object_expirer:
295             image: &swift_proxy_image
296               list_join:
297                 - '/'
298                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftProxyImage} ]
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_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
307                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
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_object_replicator:
314             image: *swift_object_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_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
323                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
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_object_updater:
330             image: *swift_object_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_object_updater.json:/var/lib/kolla/config_files/config.json:ro
339                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
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_server:
346             image: *swift_object_image
347             net: host
348             user: swift
349             restart: always
350             volumes:
351               list_concat:
352                 - {get_attr: [ContainersCommon, volumes]}
353                 -
354                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
355                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
356                   - /run:/run
357                   - /srv/node:/srv/node
358                   - /dev:/dev
359                   - /var/log/containers/swift:/var/log/swift
360             environment: *kolla_env
361           swift_xinetd_rsync:
362             image: *swift_object_image
363             net: host
364             user: root
365             restart: always
366             privileged: true
367             volumes:
368               list_concat:
369                 - {get_attr: [ContainersCommon, volumes]}
370                 -
371                   - /var/lib/kolla/config_files/swift_xinetd_rsync.json:/var/lib/kolla/config_files/config.json:ro
372                   - /var/lib/config-data/swift/etc:/etc
373                   - /run:/run
374                   - /srv/node:/srv/node
375                   - /dev:/dev
376                   - /var/log/containers/swift:/var/log/swift
377             environment: *kolla_env
378
379       host_prep_tasks:
380         - name: create persistent directories
381           file:
382             path: "{{ item }}"
383             state: directory
384           with_items:
385             - /var/log/containers/swift
386             - /srv/node
387         - name: Format and mount devices defined in SwiftRawDisks
388           mount:
389             name: /srv/node/{{ item }}
390             src: /dev/{{ item }}
391             fstype: xfs
392             opts: noatime
393             state: mounted
394           with_items:
395             - repeat:
396                 template: 'DEVICE'
397                 for_each:
398                   DEVICE: {get_param: SwiftRawDisks}
399       upgrade_tasks:
400         - name: Stop and disable swift storage services
401           tags: step2
402           service: name={{ item }} state=stopped enabled=no
403           with_items:
404             - openstack-swift-account-auditor
405             - openstack-swift-account-reaper
406             - openstack-swift-account-replicator
407             - openstack-swift-account
408             - openstack-swift-container-auditor
409             - openstack-swift-container-replicator
410             - openstack-swift-container-updater
411             - openstack-swift-container
412             - openstack-swift-object-auditor
413             - openstack-swift-object-replicator
414             - openstack-swift-object-updater
415             - openstack-swift-object