Merge "Add detach to docker-toool"
[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
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       docker_config:
127         step_3:
128           # The puppet config sets this up but we don't have a way to mount the named
129           # volume during the configuration stage.  We just need to create this
130           # directory and make sure it's owned by swift.
131           swift_setup_srv:
132             image: &swift_account_image
133               list_join:
134                 - '/'
135                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftAccountImage} ]
136             user: root
137             command: ['chown', '-R', 'swift:', '/srv/node']
138             volumes:
139               - /srv/node:/srv/node
140         step_4:
141           swift_account_auditor:
142             image: *swift_account_image
143             net: host
144             user: swift
145             restart: always
146             volumes:
147               list_concat:
148                 - {get_attr: [ContainersCommon, volumes]}
149                 -
150                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
151                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
152                   - /run:/run
153                   - /srv/node:/srv/node
154                   - /dev:/dev
155                   - /var/log/containers/swift:/var/log/swift
156             environment: &kolla_env
157               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
158           swift_account_reaper:
159             image: *swift_account_image
160             net: host
161             user: swift
162             restart: always
163             volumes:
164               list_concat:
165                 - {get_attr: [ContainersCommon, volumes]}
166                 -
167                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
168                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
169                   - /run:/run
170                   - /srv/node:/srv/node
171                   - /dev:/dev
172                   - /var/log/containers/swift:/var/log/swift
173             environment: *kolla_env
174           swift_account_replicator:
175             image: *swift_account_image
176             net: host
177             user: swift
178             restart: always
179             volumes:
180               list_concat:
181                 - {get_attr: [ContainersCommon, volumes]}
182                 -
183                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
184                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
185                   - /run:/run
186                   - /srv/node:/srv/node
187                   - /dev:/dev
188                   - /var/log/containers/swift:/var/log/swift
189             environment: *kolla_env
190           swift_account_server:
191             image: *swift_account_image
192             net: host
193             user: swift
194             restart: always
195             volumes:
196               list_concat:
197                 - {get_attr: [ContainersCommon, volumes]}
198                 -
199                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
200                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
201                   - /run:/run
202                   - /srv/node:/srv/node
203                   - /dev:/dev
204                   - /var/log/containers/swift:/var/log/swift
205             environment: *kolla_env
206           swift_container_auditor:
207             image: &swift_container_image
208               list_join:
209                 - '/'
210                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftContainerImage} ]
211             net: host
212             user: swift
213             restart: always
214             volumes:
215               list_concat:
216                 - {get_attr: [ContainersCommon, volumes]}
217                 -
218                   - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
219                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
220                   - /run:/run
221                   - /srv/node:/srv/node
222                   - /dev:/dev
223                   - /var/log/containers/swift:/var/log/swift
224             environment: *kolla_env
225           swift_container_replicator:
226             image: *swift_container_image
227             net: host
228             user: swift
229             restart: always
230             volumes:
231               list_concat:
232                 - {get_attr: [ContainersCommon, volumes]}
233                 -
234                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
235                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
236                   - /run:/run
237                   - /srv/node:/srv/node
238                   - /dev:/dev
239                   - /var/log/containers/swift:/var/log/swift
240             environment: *kolla_env
241           swift_container_updater:
242             image: *swift_container_image
243             net: host
244             user: swift
245             restart: always
246             volumes:
247               list_concat:
248                 - {get_attr: [ContainersCommon, volumes]}
249                 -
250                   - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
251                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
252                   - /run:/run
253                   - /srv/node:/srv/node
254                   - /dev:/dev
255                   - /var/log/containers/swift:/var/log/swift
256             environment: *kolla_env
257           swift_container_server:
258             image: *swift_container_image
259             net: host
260             user: swift
261             restart: always
262             volumes:
263               list_concat:
264                 - {get_attr: [ContainersCommon, volumes]}
265                 -
266                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
267                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
268                   - /run:/run
269                   - /srv/node:/srv/node
270                   - /dev:/dev
271                   - /var/log/containers/swift:/var/log/swift
272             environment: *kolla_env
273           swift_object_auditor:
274             image: &swift_object_image
275               list_join:
276                 - '/'
277                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftObjectImage} ]
278             net: host
279             user: swift
280             restart: always
281             volumes:
282               list_concat:
283                 - {get_attr: [ContainersCommon, volumes]}
284                 -
285                   - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
286                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
287                   - /run:/run
288                   - /srv/node:/srv/node
289                   - /dev:/dev
290                   - /var/log/containers/swift:/var/log/swift
291             environment: *kolla_env
292           swift_object_expirer:
293             image: &swift_proxy_image
294               list_join:
295                 - '/'
296                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftProxyImage} ]
297             net: host
298             user: swift
299             restart: always
300             volumes:
301               list_concat:
302                 - {get_attr: [ContainersCommon, volumes]}
303                 -
304                   - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
305                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
306                   - /run:/run
307                   - /srv/node:/srv/node
308                   - /dev:/dev
309                   - /var/log/containers/swift:/var/log/swift
310             environment: *kolla_env
311           swift_object_replicator:
312             image: *swift_object_image
313             net: host
314             user: swift
315             restart: always
316             volumes:
317               list_concat:
318                 - {get_attr: [ContainersCommon, volumes]}
319                 -
320                   - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
321                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
322                   - /run:/run
323                   - /srv/node:/srv/node
324                   - /dev:/dev
325                   - /var/log/containers/swift:/var/log/swift
326             environment: *kolla_env
327           swift_object_updater:
328             image: *swift_object_image
329             net: host
330             user: swift
331             restart: always
332             volumes:
333               list_concat:
334                 - {get_attr: [ContainersCommon, volumes]}
335                 -
336                   - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
337                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
338                   - /run:/run
339                   - /srv/node:/srv/node
340                   - /dev:/dev
341                   - /var/log/containers/swift:/var/log/swift
342             environment: *kolla_env
343           swift_object_server:
344             image: *swift_object_image
345             net: host
346             user: swift
347             restart: always
348             volumes:
349               list_concat:
350                 - {get_attr: [ContainersCommon, volumes]}
351                 -
352                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
353                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
354                   - /run:/run
355                   - /srv/node:/srv/node
356                   - /dev:/dev
357                   - /var/log/containers/swift:/var/log/swift
358             environment: *kolla_env
359       host_prep_tasks:
360         - name: create persistent directories
361           file:
362             path: "{{ item }}"
363             state: directory
364           with_items:
365             - /var/log/containers/swift
366             - /srv/node
367         - name: Format and mount devices defined in SwiftRawDisks
368           mount:
369             name: /srv/node/{{ item }}
370             src: /dev/{{ item }}
371             fstype: xfs
372             opts: noatime
373             state: mounted
374           with_items:
375             - repeat:
376                 template: 'DEVICE'
377                 for_each:
378                   DEVICE: {get_param: SwiftRawDisks}
379       upgrade_tasks:
380         - name: Stop and disable swift storage services
381           tags: step2
382           service: name={{ item }} state=stopped enabled=no
383           with_items:
384             - openstack-swift-account-auditor
385             - openstack-swift-account-reaper
386             - openstack-swift-account-replicator
387             - openstack-swift-account
388             - openstack-swift-container-auditor
389             - openstack-swift-container-replicator
390             - openstack-swift-container-updater
391             - openstack-swift-container
392             - openstack-swift-object-auditor
393             - openstack-swift-object-replicator
394             - openstack-swift-object-updater
395             - openstack-swift-object