6d60dde6cfdd07d4990904c7aaa783be949e94d5
[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   ServiceNetMap:
36     default: {}
37     description: Mapping of service_name -> network name. Typically set
38                  via parameter_defaults in the resource registry.  This
39                  mapping overrides those in ServiceNetMapDefaults.
40     type: json
41
42 resources:
43
44   ContainersCommon:
45     type: ./containers-common.yaml
46
47   SwiftStorageBase:
48     type: ../../puppet/services/swift-storage.yaml
49     properties:
50       EndpointMap: {get_param: EndpointMap}
51       ServiceNetMap: {get_param: ServiceNetMap}
52       DefaultPasswords: {get_param: DefaultPasswords}
53
54 outputs:
55   role_data:
56     description: Role data for the swift storage services.
57     value:
58       service_name: {get_attr: [SwiftStorageBase, role_data, service_name]}
59       config_settings: {get_attr: [SwiftStorageBase, role_data, config_settings]}
60       step_config: &step_config
61         get_attr: [SwiftStorageBase, role_data, step_config]
62       service_config_settings: {get_attr: [SwiftStorageBase, role_data, service_config_settings]}
63       # BEGIN DOCKER SETTINGS
64       puppet_config:
65         config_volume: swift
66         puppet_tags: swift_config,swift_container_config,swift_container_sync_realms_config,swift_account_config,swift_object_config,swift_object_expirer_config
67         step_config: *step_config
68         config_image: &swift_proxy_image
69           list_join:
70             - '/'
71             - [ {get_param: DockerNamespace}, {get_param: DockerSwiftProxyImage} ]
72       kolla_config:
73         /var/lib/kolla/config_files/swift_account_auditor.json:
74           command: /usr/bin/swift-account-auditor /etc/swift/account-server.conf
75         /var/lib/kolla/config_files/swift_account_reaper.json:
76           command: /usr/bin/swift-account-reaper /etc/swift/account-server.conf
77         /var/lib/kolla/config_files/swift_account_replicator.json:
78           command: /usr/bin/swift-account-replicator /etc/swift/account-server.conf
79         /var/lib/kolla/config_files/swift_account_server.json:
80           command: /usr/bin/swift-account-server /etc/swift/account-server.conf
81         /var/lib/kolla/config_files/swift_container_auditor.json:
82           command: /usr/bin/swift-container-auditor /etc/swift/container-server.conf
83         /var/lib/kolla/config_files/swift_container_replicator.json:
84           command: /usr/bin/swift-container-replicator /etc/swift/container-server.conf
85         /var/lib/kolla/config_files/swift_container_updater.json:
86           command: /usr/bin/swift-container-updater /etc/swift/container-server.conf
87         /var/lib/kolla/config_files/swift_container_server.json:
88           command: /usr/bin/swift-container-server /etc/swift/container-server.conf
89         /var/lib/kolla/config_files/swift_object_auditor.json:
90           command: /usr/bin/swift-object-auditor /etc/swift/object-server.conf
91         /var/lib/kolla/config_files/swift_object_expirer.json:
92           command: /usr/bin/swift-object-expirer /etc/swift/object-expirer.conf
93         /var/lib/kolla/config_files/swift_object_replicator.json:
94           command: /usr/bin/swift-object-replicator /etc/swift/object-server.conf
95         /var/lib/kolla/config_files/swift_object_updater.json:
96           command: /usr/bin/swift-object-updater /etc/swift/object-server.conf
97         /var/lib/kolla/config_files/swift_object_server.json:
98           command: /usr/bin/swift-object-server /etc/swift/object-server.conf
99           permissions:
100             - path: /var/log/swift
101               owner: swift:swift
102               recurse: true
103       docker_config:
104         step_3:
105           # The puppet config sets this up but we don't have a way to mount the named
106           # volume during the configuration stage.  We just need to create this
107           # directory and make sure it's owned by swift.
108           swift_setup_srv:
109             image: &swift_account_image
110               list_join:
111                 - '/'
112                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftAccountImage} ]
113             user: root
114             command: ['chown', '-R', 'swift:', '/srv/node']
115             volumes:
116               - /srv/node:/srv/node
117         step_4:
118           swift_account_auditor:
119             image: *swift_account_image
120             net: host
121             user: swift
122             restart: always
123             volumes:
124               list_concat:
125                 - {get_attr: [ContainersCommon, volumes]}
126                 -
127                   - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
128                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
129                   - /run:/run
130                   - /srv/node:/srv/node
131                   - /dev:/dev
132                   - /var/log/containers/swift:/var/log/swift
133             environment: &kolla_env
134               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
135           swift_account_reaper:
136             image: *swift_account_image
137             net: host
138             user: swift
139             restart: always
140             volumes:
141               list_concat:
142                 - {get_attr: [ContainersCommon, volumes]}
143                 -
144                   - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
145                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
146                   - /run:/run
147                   - /srv/node:/srv/node
148                   - /dev:/dev
149                   - /var/log/containers/swift:/var/log/swift
150             environment: *kolla_env
151           swift_account_replicator:
152             image: *swift_account_image
153             net: host
154             user: swift
155             restart: always
156             volumes:
157               list_concat:
158                 - {get_attr: [ContainersCommon, volumes]}
159                 -
160                   - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
161                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
162                   - /run:/run
163                   - /srv/node:/srv/node
164                   - /dev:/dev
165                   - /var/log/containers/swift:/var/log/swift
166             environment: *kolla_env
167           swift_account_server:
168             image: *swift_account_image
169             net: host
170             user: swift
171             restart: always
172             volumes:
173               list_concat:
174                 - {get_attr: [ContainersCommon, volumes]}
175                 -
176                   - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
177                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
178                   - /run:/run
179                   - /srv/node:/srv/node
180                   - /dev:/dev
181                   - /var/log/containers/swift:/var/log/swift
182             environment: *kolla_env
183           swift_container_auditor:
184             image: &swift_container_image
185               list_join:
186                 - '/'
187                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftContainerImage} ]
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_container_auditor.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_replicator:
203             image: *swift_container_image
204             net: host
205             user: swift
206             restart: always
207             volumes:
208               list_concat:
209                 - {get_attr: [ContainersCommon, volumes]}
210                 -
211                   - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
212                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
213                   - /run:/run
214                   - /srv/node:/srv/node
215                   - /dev:/dev
216                   - /var/log/containers/swift:/var/log/swift
217             environment: *kolla_env
218           swift_container_updater:
219             image: *swift_container_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_container_updater.json:/var/lib/kolla/config_files/config.json:ro
228                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
229                   - /run:/run
230                   - /srv/node:/srv/node
231                   - /dev:/dev
232                   - /var/log/containers/swift:/var/log/swift
233             environment: *kolla_env
234           swift_container_server:
235             image: *swift_container_image
236             net: host
237             user: swift
238             restart: always
239             volumes:
240               list_concat:
241                 - {get_attr: [ContainersCommon, volumes]}
242                 -
243                   - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
244                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
245                   - /run:/run
246                   - /srv/node:/srv/node
247                   - /dev:/dev
248                   - /var/log/containers/swift:/var/log/swift
249             environment: *kolla_env
250           swift_object_auditor:
251             image: &swift_object_image
252               list_join:
253                 - '/'
254                 - [ {get_param: DockerNamespace}, {get_param: DockerSwiftObjectImage} ]
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_object_auditor.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_expirer:
270             image: *swift_proxy_image
271             net: host
272             user: swift
273             restart: always
274             volumes:
275               list_concat:
276                 - {get_attr: [ContainersCommon, volumes]}
277                 -
278                   - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
279                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
280                   - /run:/run
281                   - /srv/node:/srv/node
282                   - /dev:/dev
283                   - /var/log/containers/swift:/var/log/swift
284             environment: *kolla_env
285           swift_object_replicator:
286             image: *swift_object_image
287             net: host
288             user: swift
289             restart: always
290             volumes:
291               list_concat:
292                 - {get_attr: [ContainersCommon, volumes]}
293                 -
294                   - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
295                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
296                   - /run:/run
297                   - /srv/node:/srv/node
298                   - /dev:/dev
299                   - /var/log/containers/swift:/var/log/swift
300             environment: *kolla_env
301           swift_object_updater:
302             image: *swift_object_image
303             net: host
304             user: swift
305             restart: always
306             volumes:
307               list_concat:
308                 - {get_attr: [ContainersCommon, volumes]}
309                 -
310                   - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
311                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
312                   - /run:/run
313                   - /srv/node:/srv/node
314                   - /dev:/dev
315                   - /var/log/containers/swift:/var/log/swift
316             environment: *kolla_env
317           swift_object_server:
318             image: *swift_object_image
319             net: host
320             user: swift
321             restart: always
322             volumes:
323               list_concat:
324                 - {get_attr: [ContainersCommon, volumes]}
325                 -
326                   - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
327                   - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
328                   - /run:/run
329                   - /srv/node:/srv/node
330                   - /dev:/dev
331                   - /var/log/containers/swift:/var/log/swift
332             environment: *kolla_env
333       host_prep_tasks:
334         - name: create persistent directories
335           file:
336             path: "{{ item }}"
337             state: directory
338           with_items:
339             - /var/log/containers/swift
340             - /srv/node
341       upgrade_tasks:
342         - name: Stop and disable swift storage services
343           tags: step2
344           service: name={{ item }} state=stopped enabled=no
345           with_items:
346             - openstack-swift-account-auditor
347             - openstack-swift-account-reaper
348             - openstack-swift-account-replicator
349             - openstack-swift-account
350             - openstack-swift-container-auditor
351             - openstack-swift-container-replicator
352             - openstack-swift-container-updater
353             - openstack-swift-container
354             - openstack-swift-object-auditor
355             - openstack-swift-object-replicator
356             - openstack-swift-object-updater
357             - openstack-swift-object