Merge "Add docker templates for octavia services"
[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   EndpointMap:
28     default: {}
29     description: Mapping of service endpoint -> protocol. Typically set
30                  via parameter_defaults in the resource registry.
31     type: json
32   DefaultPasswords:
33     default: {}
34     type: json
35   RoleName:
36     default: ''
37     description: Role name on which the service is applied
38     type: string
39   RoleParameters:
40     default: {}
41     description: Parameters specific to the role
42     type: json
43   ServiceNetMap:
44     default: {}
45     description: Mapping of service_name -> network name. Typically set
46                  via parameter_defaults in the resource registry.  This
47                  mapping overrides those in ServiceNetMapDefaults.
48     type: json
49   SwiftRawDisks:
50     default: {}
51     description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
52     type: json
53
54
55 resources:
56
57   ContainersCommon:
58     type: ./containers-common.yaml
59
60   SwiftStorageBase:
61     type: ../../puppet/services/swift-storage.yaml
62     properties:
63       EndpointMap: {get_param: EndpointMap}
64       ServiceNetMap: {get_param: ServiceNetMap}
65       DefaultPasswords: {get_param: DefaultPasswords}
66       RoleName: {get_param: RoleName}
67       RoleParameters: {get_param: RoleParameters}
68
69 outputs:
70   role_data:
71     description: Role data for the swift storage services.
72     value:
73       service_name: {get_attr: [SwiftStorageBase, role_data, service_name]}
74       config_settings:
75         map_merge:
76           - {get_attr: [SwiftStorageBase, role_data, config_settings]}
77           # FIXME (cschwede): re-enable this once checks works inside containers
78           - swift::storage::all::mount_check: false
79       step_config: &step_config
80         get_attr: [SwiftStorageBase, role_data, step_config]
81       service_config_settings: {get_attr: [SwiftStorageBase, role_data, service_config_settings]}
82       # BEGIN DOCKER SETTINGS
83       puppet_config:
84         config_volume: swift
85         puppet_tags: swift_config,swift_container_config,swift_container_sync_realms_config,swift_account_config,swift_object_config,swift_object_expirer_config
86         step_config: *step_config
87         config_image: &swift_proxy_image
88           list_join:
89             - '/'
90             - [ {get_param: DockerNamespace}, {get_param: DockerSwiftProxyImage} ]
91       kolla_config:
92         /var/lib/kolla/config_files/swift_account_auditor.json:
93           command: /usr/bin/swift-account-auditor /etc/swift/account-server.conf
94         /var/lib/kolla/config_files/swift_account_reaper.json:
95           command: /usr/bin/swift-account-reaper /etc/swift/account-server.conf
96         /var/lib/kolla/config_files/swift_account_replicator.json:
97           command: /usr/bin/swift-account-replicator /etc/swift/account-server.conf
98         /var/lib/kolla/config_files/swift_account_server.json:
99           command: /usr/bin/swift-account-server /etc/swift/account-server.conf
100         /var/lib/kolla/config_files/swift_container_auditor.json:
101           command: /usr/bin/swift-container-auditor /etc/swift/container-server.conf
102         /var/lib/kolla/config_files/swift_container_replicator.json:
103           command: /usr/bin/swift-container-replicator /etc/swift/container-server.conf
104         /var/lib/kolla/config_files/swift_container_updater.json:
105           command: /usr/bin/swift-container-updater /etc/swift/container-server.conf
106         /var/lib/kolla/config_files/swift_container_server.json:
107           command: /usr/bin/swift-container-server /etc/swift/container-server.conf
108         /var/lib/kolla/config_files/swift_object_auditor.json:
109           command: /usr/bin/swift-object-auditor /etc/swift/object-server.conf
110         /var/lib/kolla/config_files/swift_object_expirer.json:
111           command: /usr/bin/swift-object-expirer /etc/swift/object-expirer.conf
112         /var/lib/kolla/config_files/swift_object_replicator.json:
113           command: /usr/bin/swift-object-replicator /etc/swift/object-server.conf
114         /var/lib/kolla/config_files/swift_object_updater.json:
115           command: /usr/bin/swift-object-updater /etc/swift/object-server.conf
116         /var/lib/kolla/config_files/swift_object_server.json:
117           command: /usr/bin/swift-object-server /etc/swift/object-server.conf
118           permissions:
119             - path: /var/log/swift
120               owner: swift:swift
121               recurse: true
122       docker_config:
123         step_3:
124           # The puppet config sets this up but we don't have a way to mount the named
125           # volume during the configuration stage.  We just need to create this
126           # directory and make sure it's owned by swift.
127           swift_setup_srv:
128             image: &swift_account_image
129               list_join:
130                 - '/'
131                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftAccountImage} ]
132             user: root
133             command: ['chown', '-R', 'swift:', '/srv/node']
134             volumes:
135               - /srv/node:/srv/node
136         step_4:
137           swift_account_auditor:
138             image: *swift_account_image
139             net: host
140             user: swift
141             restart: always
142             volumes:
143               list_concat:
144                 - {get_attr: [ContainersCommon, volumes]}
145                 -
146                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
147                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
148                   - /run:/run
149                   - /srv/node:/srv/node
150                   - /dev:/dev
151                   - /var/log/containers/swift:/var/log/swift
152             environment: &kolla_env
153               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
154           swift_account_reaper:
155             image: *swift_account_image
156             net: host
157             user: swift
158             restart: always
159             volumes:
160               list_concat:
161                 - {get_attr: [ContainersCommon, volumes]}
162                 -
163                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
164                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
165                   - /run:/run
166                   - /srv/node:/srv/node
167                   - /dev:/dev
168                   - /var/log/containers/swift:/var/log/swift
169             environment: *kolla_env
170           swift_account_replicator:
171             image: *swift_account_image
172             net: host
173             user: swift
174             restart: always
175             volumes:
176               list_concat:
177                 - {get_attr: [ContainersCommon, volumes]}
178                 -
179                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
180                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
181                   - /run:/run
182                   - /srv/node:/srv/node
183                   - /dev:/dev
184                   - /var/log/containers/swift:/var/log/swift
185             environment: *kolla_env
186           swift_account_server:
187             image: *swift_account_image
188             net: host
189             user: swift
190             restart: always
191             volumes:
192               list_concat:
193                 - {get_attr: [ContainersCommon, volumes]}
194                 -
195                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
196                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
197                   - /run:/run
198                   - /srv/node:/srv/node
199                   - /dev:/dev
200                   - /var/log/containers/swift:/var/log/swift
201             environment: *kolla_env
202           swift_container_auditor:
203             image: &swift_container_image
204               list_join:
205                 - '/'
206                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftContainerImage} ]
207             net: host
208             user: swift
209             restart: always
210             volumes:
211               list_concat:
212                 - {get_attr: [ContainersCommon, volumes]}
213                 -
214                   - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
215                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
216                   - /run:/run
217                   - /srv/node:/srv/node
218                   - /dev:/dev
219                   - /var/log/containers/swift:/var/log/swift
220             environment: *kolla_env
221           swift_container_replicator:
222             image: *swift_container_image
223             net: host
224             user: swift
225             restart: always
226             volumes:
227               list_concat:
228                 - {get_attr: [ContainersCommon, volumes]}
229                 -
230                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
231                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
232                   - /run:/run
233                   - /srv/node:/srv/node
234                   - /dev:/dev
235                   - /var/log/containers/swift:/var/log/swift
236             environment: *kolla_env
237           swift_container_updater:
238             image: *swift_container_image
239             net: host
240             user: swift
241             restart: always
242             volumes:
243               list_concat:
244                 - {get_attr: [ContainersCommon, volumes]}
245                 -
246                   - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
247                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
248                   - /run:/run
249                   - /srv/node:/srv/node
250                   - /dev:/dev
251                   - /var/log/containers/swift:/var/log/swift
252             environment: *kolla_env
253           swift_container_server:
254             image: *swift_container_image
255             net: host
256             user: swift
257             restart: always
258             volumes:
259               list_concat:
260                 - {get_attr: [ContainersCommon, volumes]}
261                 -
262                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
263                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
264                   - /run:/run
265                   - /srv/node:/srv/node
266                   - /dev:/dev
267                   - /var/log/containers/swift:/var/log/swift
268             environment: *kolla_env
269           swift_object_auditor:
270             image: &swift_object_image
271               list_join:
272                 - '/'
273                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftObjectImage} ]
274             net: host
275             user: swift
276             restart: always
277             volumes:
278               list_concat:
279                 - {get_attr: [ContainersCommon, volumes]}
280                 -
281                   - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
282                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
283                   - /run:/run
284                   - /srv/node:/srv/node
285                   - /dev:/dev
286                   - /var/log/containers/swift:/var/log/swift
287             environment: *kolla_env
288           swift_object_expirer:
289             image: *swift_proxy_image
290             net: host
291             user: swift
292             restart: always
293             volumes:
294               list_concat:
295                 - {get_attr: [ContainersCommon, volumes]}
296                 -
297                   - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
298                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
299                   - /run:/run
300                   - /srv/node:/srv/node
301                   - /dev:/dev
302                   - /var/log/containers/swift:/var/log/swift
303             environment: *kolla_env
304           swift_object_replicator:
305             image: *swift_object_image
306             net: host
307             user: swift
308             restart: always
309             volumes:
310               list_concat:
311                 - {get_attr: [ContainersCommon, volumes]}
312                 -
313                   - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
314                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
315                   - /run:/run
316                   - /srv/node:/srv/node
317                   - /dev:/dev
318                   - /var/log/containers/swift:/var/log/swift
319             environment: *kolla_env
320           swift_object_updater:
321             image: *swift_object_image
322             net: host
323             user: swift
324             restart: always
325             volumes:
326               list_concat:
327                 - {get_attr: [ContainersCommon, volumes]}
328                 -
329                   - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
330                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
331                   - /run:/run
332                   - /srv/node:/srv/node
333                   - /dev:/dev
334                   - /var/log/containers/swift:/var/log/swift
335             environment: *kolla_env
336           swift_object_server:
337             image: *swift_object_image
338             net: host
339             user: swift
340             restart: always
341             volumes:
342               list_concat:
343                 - {get_attr: [ContainersCommon, volumes]}
344                 -
345                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
346                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
347                   - /run:/run
348                   - /srv/node:/srv/node
349                   - /dev:/dev
350                   - /var/log/containers/swift:/var/log/swift
351             environment: *kolla_env
352       host_prep_tasks:
353         - name: create persistent directories
354           file:
355             path: "{{ item }}"
356             state: directory
357           with_items:
358             - /var/log/containers/swift
359             - /srv/node
360         - name: Format and mount devices defined in SwiftRawDisks
361           mount:
362             name: /srv/node/{{ item }}
363             src: /dev/{{ item }}
364             fstype: xfs
365             opts: noatime
366             state: mounted
367           with_items:
368             - repeat:
369                 template: 'DEVICE'
370                 for_each:
371                   DEVICE: {get_param: SwiftRawDisks}
372       upgrade_tasks:
373         - name: Stop and disable swift storage services
374           tags: step2
375           service: name={{ item }} state=stopped enabled=no
376           with_items:
377             - openstack-swift-account-auditor
378             - openstack-swift-account-reaper
379             - openstack-swift-account-replicator
380             - openstack-swift-account
381             - openstack-swift-container-auditor
382             - openstack-swift-container-replicator
383             - openstack-swift-container-updater
384             - openstack-swift-container
385             - openstack-swift-object-auditor
386             - openstack-swift-object-replicator
387             - openstack-swift-object-updater
388             - openstack-swift-object