blob: d42a2c6c0b3210c674ced5e19332dd8f6861586d [file] [log] [blame]
Filip Pytlounda2a0792015-10-06 16:28:31 +02001==============================
2Openstack Cinder Block Storage
3==============================
4
Jakub Pavlikb513f132016-05-20 11:11:19 +02005Cinder provides an infrastructure for managing volumes in OpenStack. It was
6originally a Nova component called nova-volume, but has become an independent
7project since the Folsom release.
Filip Pytlounda2a0792015-10-06 16:28:31 +02008
9Sample pillars
10==============
11
Jakub Pavlikb513f132016-05-20 11:11:19 +020012New structure divides cinder-api,cinder-scheduler to role controller and
13cinder-volume to role volume.
Filip Pytlounda2a0792015-10-06 16:28:31 +020014
15.. code-block:: yaml
16
17 cinder:
18 controller:
19 enabled: true
20 version: juno
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010021 default_volume_type: 7k2SaS
Damian Szeluga0918f5a2017-04-19 12:26:56 +020022 availability_zone_fallback: True
Filip Pytlounda2a0792015-10-06 16:28:31 +020023 database:
24 engine: mysql
25 host: 127.0.0.1
26 port: 3306
27 name: cinder
28 user: cinder
29 password: pwd
30 identity:
31 engine: keystone
32 host: 127.0.0.1
33 port: 35357
34 tenant: service
35 user: cinder
36 password: pwd
37 message_queue:
38 engine: rabbitmq
39 host: 127.0.0.1
40 port: 5672
41 user: openstack
42 password: pwd
43 virtual_host: '/openstack'
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010044 backend:
45 7k2_SAS:
46 engine: storwize
Jakub Pavlikedd46102016-01-08 16:20:38 +010047 type_name: slow-disks
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010048 host: 192.168.0.1
49 port: 22
50 user: username
51 password: pass
52 connection: FC/iSCSI
53 multihost: true
54 multipath: true
55 pool: SAS7K2
Petr Michaleca1c7ff12016-11-29 16:32:50 +010056 audit:
57 enabled: false
Simon Pasquier9089de42017-02-03 16:13:22 +010058 osapi_max_limit: 500
Filip Pytlounda2a0792015-10-06 16:28:31 +020059
60 cinder:
61 volume:
62 enabled: true
63 version: juno
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010064 default_volume_type: 7k2SaS
Filip Pytlounda2a0792015-10-06 16:28:31 +020065 database:
66 engine: mysql
67 host: 127.0.0.1
68 port: 3306
69 name: cinder
70 user: cinder
71 password: pwd
72 identity:
73 engine: keystone
74 host: 127.0.0.1
75 port: 35357
76 tenant: service
77 user: cinder
78 password: pwd
79 message_queue:
80 engine: rabbitmq
81 host: 127.0.0.1
82 port: 5672
83 user: openstack
84 password: pwd
85 virtual_host: '/openstack'
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010086 backend:
87 7k2_SAS:
88 engine: storwize
Jakub Pavlikedd46102016-01-08 16:20:38 +010089 type_name: 7k2 SAS disk
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +010090 host: 192.168.0.1
91 port: 22
92 user: username
93 password: pass
94 connection: FC/iSCSI
95 multihost: true
96 multipath: true
97 pool: SAS7K2
Petr Michaleca1c7ff12016-11-29 16:32:50 +010098 audit:
99 enabled: false
Ondrej Smola74af21b2017-04-28 12:30:24 +0200100
101
102Enable CORS parameters
103
104.. code-block:: yaml
105
106 cinder:
107 controller:
108 cors:
109 allowed_origin: https:localhost.local,http:localhost.local
110 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
111 allow_methods: GET,PUT,POST,DELETE,PATCH
112 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
113 allow_credentials: True
114 max_age: 86400
Jiri Konecny2dce35f2016-04-19 16:29:52 +0200115
116Client-side RabbitMQ HA setup for controller
117
118.. code-block:: yaml
119
120 cinder:
121 controller:
122 ....
123 message_queue:
124 engine: rabbitmq
125 members:
126 - host: 10.0.16.1
127 - host: 10.0.16.2
128 - host: 10.0.16.3
129 user: openstack
130 password: pwd
131 virtual_host: '/openstack'
132 ....
133
134Client-side RabbitMQ HA setup for volume component
135
136.. code-block:: yaml
137
138 cinder:
139 volume:
140 ....
141 message_queue:
142 engine: rabbitmq
143 members:
144 - host: 10.0.16.1
145 - host: 10.0.16.2
146 - host: 10.0.16.3
147 user: openstack
148 password: pwd
149 virtual_host: '/openstack'
150 ....
Filip Pytlounda2a0792015-10-06 16:28:31 +0200151
152Cinder setup with zeroing deleted volumes
153
Alexander Noskov62496fb2017-02-27 16:42:54 +0100154.. code-block:: yaml
155
Filip Pytlounda2a0792015-10-06 16:28:31 +0200156 cinder:
157 controller:
158 enabled: true
159 wipe_method: zero
160 ...
161
162Cinder setup with shreding deleted volumes
163
164.. code-block:: yaml
165
166 cinder:
167 controller:
168 enabled: true
169 wipe_method: shred
170 ...
171
Dmitry Ukov56c29072017-05-04 16:48:29 +0400172Configuration of policy.json file
173
174.. code-block:: yaml
175
176 cinder:
177 controller:
178 ....
179 policy:
180 'volume:delete': 'rule:admin_or_owner'
181 # Add key without value to remove line from policy.json
182 'volume:extend':
183
Filip Pytlounda2a0792015-10-06 16:28:31 +0200184
185Default Cinder setup with iSCSI target
186
187.. code-block:: yaml
188
189 cinder:
190 controller:
191 enabled: true
Jakub Pavlik3d437df2016-04-11 22:07:50 +0200192 version: mitaka
193 default_volume_type: lvmdriver-1
Filip Pytlounda2a0792015-10-06 16:28:31 +0200194 database:
195 engine: mysql
196 host: 127.0.0.1
197 port: 3306
198 name: cinder
199 user: cinder
200 password: pwd
201 identity:
202 engine: keystone
203 host: 127.0.0.1
204 port: 35357
205 tenant: service
206 user: cinder
207 password: pwd
208 message_queue:
209 engine: rabbitmq
210 host: 127.0.0.1
211 port: 5672
212 user: openstack
213 password: pwd
214 virtual_host: '/openstack'
Jakub Pavlikaf96c2a2016-01-08 15:49:54 +0100215 backend:
Jakub Pavlik3d437df2016-04-11 22:07:50 +0200216 lvmdriver-1:
217 engine: lvm
218 type_name: lvmdriver-1
219 volume_group: cinder-volume
Filip Pytlounda2a0792015-10-06 16:28:31 +0200220
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100221Cinder setup for IBM Storwize
Filip Pytlounda2a0792015-10-06 16:28:31 +0200222
223.. code-block:: yaml
224
225 cinder:
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100226 volume:
Filip Pytlounda2a0792015-10-06 16:28:31 +0200227 enabled: true
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100228 backend:
229 7k2_SAS:
230 engine: storwize
Jakub Pavlikedd46102016-01-08 16:20:38 +0100231 type_name: 7k2 SAS disk
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100232 host: 192.168.0.1
233 port: 22
234 user: username
235 password: pass
236 connection: FC/iSCSI
237 multihost: true
238 multipath: true
239 pool: SAS7K2
240 10k_SAS:
241 engine: storwize
Jakub Pavlikedd46102016-01-08 16:20:38 +0100242 type_name: 10k SAS disk
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100243 host: 192.168.0.1
244 port: 22
245 user: username
246 password: pass
247 connection: FC/iSCSI
248 multihost: true
249 multipath: true
250 pool: SAS10K
251 15k_SAS:
252 engine: storwize
Jakub Pavlikedd46102016-01-08 16:20:38 +0100253 type_name: 15k SAS
Ales Komarekdf13bbd2016-01-05 21:33:36 +0100254 host: 192.168.0.1
255 port: 22
256 user: username
257 password: pass
258 connection: FC/iSCSI
259 multihost: true
260 multipath: true
261 pool: SAS15K
Filip Pytlounda2a0792015-10-06 16:28:31 +0200262
Jiri Broulik88548db2017-03-31 12:21:37 +0200263
264Cinder setup with NFS
265
266.. code-block:: yaml
267
268 cinder:
269 controller:
270 enabled: true
271 default_volume_type: nfs-driver
272 backend:
273 nfs-driver:
274 engine: nfs
275 type_name: nfs-driver
276 volume_group: cinder-volume
277 path: /var/lib/cinder/nfs
278 devices:
279 - 172.16.10.110:/var/nfs/cinder
280 options: rw,sync
281
282
Filip Pytlounda2a0792015-10-06 16:28:31 +0200283Cinder setup with Hitachi VPS
284
285.. code-block:: yaml
286
287 cinder:
288 controller:
289 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100290 backend:
291 hus100_backend:
marcodaa52fa2016-01-25 23:49:50 +0100292 type_name: HUS100
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100293 backend: hus100_backend
294 engine: hitachi_vsp
295 connection: FC
Filip Pytlounda2a0792015-10-06 16:28:31 +0200296
Ondrej Smola16d66bd2017-01-15 13:56:03 +0100297Cinder setup with Hitachi VPS with defined ldev range
298
299.. code-block:: yaml
300
301 cinder:
302 controller:
303 enabled: true
304 backend:
305 hus100_backend:
306 type_name: HUS100
307 backend: hus100_backend
308 engine: hitachi_vsp
309 connection: FC
310 ldev_range: 0-1000
311
Filip Pytlounda2a0792015-10-06 16:28:31 +0200312Cinder setup with CEPH
313
314.. code-block:: yaml
315
316 cinder:
317 controller:
318 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100319 backend:
320 ceph_backend:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100321 type_name: standard-iops
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100322 backend: ceph_backend
323 pool: volumes
324 engine: ceph
325 user: cinder
326 secret_uuid: da74ccb7-aa59-1721-a172-0006b1aa4e3e
327 client_cinder_key: AQDOavlU6BsSJhAAnpFR906mvdgdfRqLHwu0Uw==
Filip Pytlounda2a0792015-10-06 16:28:31 +0200328
329http://ceph.com/docs/master/rbd/rbd-openstack/
330
331
332Cinder setup with HP3par
333
334.. code-block:: yaml
335
336 cinder:
337 controller:
338 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100339 backend:
340 hp3par_backend:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100341 type_name: hp3par
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100342 backend: hp3par_backend
343 user: hp3paruser
344 password: something
345 url: http://10.10.10.10/api/v1
346 cpg: OpenStackCPG
347 host: 10.10.10.10
348 login: hp3paradmin
349 sanpassword: something
350 debug: True
351 snapcpg: OpenStackSNAPCPG
Filip Pytlounda2a0792015-10-06 16:28:31 +0200352
353Cinder setup with Fujitsu Eternus
354
355.. code-block:: yaml
356
357 cinder:
358 volume:
359 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100360 backend:
361 10kThinPro:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100362 type_name: 10kThinPro
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100363 engine: fujitsu
364 pool: 10kThinPro
365 host: 192.168.0.1
366 port: 5988
367 user: username
368 password: pass
369 connection: FC/iSCSI
marcodaa52fa2016-01-25 23:49:50 +0100370 name: 10kThinPro
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100371 10k_SAS:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100372 type_name: 10k_SAS
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100373 pool: SAS10K
374 engine: fujitsu
375 host: 192.168.0.1
376 port: 5988
377 user: username
378 password: pass
379 connection: FC/iSCSI
marcodaa52fa2016-01-25 23:49:50 +0100380 name: 10k_SAS
Filip Pytlounda2a0792015-10-06 16:28:31 +0200381
Jakub Pavlik9703c602015-10-15 18:52:47 +0200382Cinder setup with IBM GPFS filesystem
383
384.. code-block:: yaml
385
386 cinder:
387 volume:
388 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100389 backend:
390 GPFS-GOLD:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100391 type_name: GPFS-GOLD
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100392 engine: gpfs
393 mount_point: '/mnt/gpfs-openstack/cinder/gold'
marcodaa52fa2016-01-25 23:49:50 +0100394 GPFS-SILVER:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100395 type_name: GPFS-SILVER
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100396 engine: gpfs
397 mount_point: '/mnt/gpfs-openstack/cinder/silver'
Jakub Pavlik9f5988a2016-01-11 13:44:57 +0100398
399Cinder setup with HP LeftHand
400
401.. code-block:: yaml
402
403 cinder:
404 volume:
405 enabled: true
406 backend:
407 HP-LeftHand:
408 type_name: normal-storage
409 engine: hp_lefthand
410 api_url: 'https://10.10.10.10:8081/lhos'
411 username: user
412 password: password
413 clustername: cluster1
414 iscsi_chap_enabled: false
415
Jakub Pavlika63764f2016-01-11 14:41:06 +0100416Extra parameters for HP LeftHand
Jakub Pavlika63764f2016-01-11 14:41:06 +0100417
Jakub Pavlik5050dda2016-01-11 16:52:32 +0100418.. code-block:: yaml
419
420 cinder type-key normal-storage set hplh:data_pl=r-10-2 hplh:provisioning=full
421
marcodaa52fa2016-01-25 23:49:50 +0100422Cinder setup with Solidfire
Jakub Pavlik5050dda2016-01-11 16:52:32 +0100423
424.. code-block:: yaml
425
426 cinder:
427 volume:
428 enabled: true
429 backend:
430 solidfire:
431 type_name: normal-storage
432 engine: solidfire
433 san_ip: 10.10.10.10
434 san_login: user
435 san_password: password
436 clustername: cluster1
437 sf_emulate_512: false
Filip Pytlounda2a0792015-10-06 16:28:31 +0200438
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200439Enable cinder-backup service for ceph
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100440
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200441.. code-block:: yaml
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100442
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200443 cinder:
444 controller:
445 enabled: true
446 version: mitaka
447 backup:
448 engine: ceph
449 ceph_conf: "/etc/ceph/ceph.conf"
450 ceph_pool: backup
451 ceph_stripe_count: 0
452 ceph_stripe_unit: 0
453 ceph_user: cinder
454 ceph_chunk_size: 134217728
455 restore_discard_excess_bytes: false
456 volume:
457 enabled: true
458 version: mitaka
459 backup:
460 engine: ceph
461 ceph_conf: "/etc/ceph/ceph.conf"
462 ceph_pool: backup
463 ceph_stripe_count: 0
464 ceph_stripe_unit: 0
465 ceph_user: cinder
466 ceph_chunk_size: 134217728
467 restore_discard_excess_bytes: false
468
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100469Enable auditing filter, ie: CADF
470
471.. code-block:: yaml
472
473 cinder:
474 controller:
475 audit:
476 enabled: true
477 ....
478 filter_factory: 'keystonemiddleware.audit:filter_factory'
479 map_file: '/etc/pycadf/cinder_api_audit_map.conf'
480 ....
481 volume:
482 audit:
483 enabled: true
484 ....
485 filter_factory: 'keystonemiddleware.audit:filter_factory'
486 map_file: '/etc/pycadf/cinder_api_audit_map.conf'
487
Michel Nederlofb8603eb2017-02-09 10:04:38 +0100488
489Cinder setup with custom availability zones:
490
491.. code-block:: yaml
492
493 cinder:
494 controller:
495 default_availability_zone: my-default-zone
496 storage_availability_zone: my-custom-zone-name
497 cinder:
498 volume:
499 default_availability_zone: my-default-zone
500 storage_availability_zone: my-custom-zone-name
501
Andrii Ostapenkob7aa34d2017-04-20 14:22:44 +0300502
503Cinder setup with custom non-admin volume query filters:
504
505.. code-block:: yaml
506
507 cinder:
508 controller:
509 query_volume_filters:
510 - name
511 - status
512 - metadata
513 - availability_zone
514 - bootable
515
516
Alexander Noskov62496fb2017-02-27 16:42:54 +0100517public_endpoint and osapi_volume_base_url parameters:
518"public_endpoint" is used for configuring versions endpoint,
519"osapi_volume_base_URL" is used to present Cinder URL to users.
520They are useful when running Cinder under load balancer in SSL.
521
522.. code-block:: yaml
523
524 cinder:
525 controller:
526 public_endpoint_address: https://${_param:cluster_domain}:8776
527
Michel Nederlofb8603eb2017-02-09 10:04:38 +0100528The default availability zone is used when a volume has been created, without specifying a zone in the create request. (this zone must exist in your configuration obviously)
529The storage availability zone is the actual zone where the node belongs to. Make sure to specify this per node.
530Check the documentation of OpenStack for more information
531
Jakub Pavlikb513f132016-05-20 11:11:19 +0200532Documentation and Bugs
533============================
534
535To learn how to deploy OpenStack Salt, consult the documentation available
536online at:
537
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100538https://wiki.openstack.org/wiki/OpenStackSalt
Jakub Pavlikb513f132016-05-20 11:11:19 +0200539
540In the unfortunate event that bugs are discovered, they should be reported to
541the appropriate bug tracker. If you obtained the software from a 3rd party
542operating system vendor, it is often wise to use their own bug tracker for
543reporting problems. In all other cases use the master OpenStack bug tracker,
544available at:
545
546 http://bugs.launchpad.net/openstack-salt
547
548Developers wishing to work on the OpenStack Salt project should always base
549their work on the latest formulas code, available from the master GIT
550repository at:
551
552 https://git.openstack.org/cgit/openstack/salt-formula-cinder
553
554Developers should also join the discussion on the IRC list, at:
555
556 https://wiki.openstack.org/wiki/Meetings/openstack-salt
Filip Pytlounb0f5c1f2017-02-02 13:02:03 +0100557
558Documentation and Bugs
559======================
560
561To learn how to install and update salt-formulas, consult the documentation
562available online at:
563
564 http://salt-formulas.readthedocs.io/
565
566In the unfortunate event that bugs are discovered, they should be reported to
567the appropriate issue tracker. Use Github issue tracker for specific salt
568formula:
569
570 https://github.com/salt-formulas/salt-formula-cinder/issues
571
572For feature requests, bug reports or blueprints affecting entire ecosystem,
573use Launchpad salt-formulas project:
574
575 https://launchpad.net/salt-formulas
576
577You can also join salt-formulas-users team and subscribe to mailing list:
578
579 https://launchpad.net/~salt-formulas-users
580
581Developers wishing to work on the salt-formulas projects should always base
582their work on master branch and submit pull request against specific formula.
583
584 https://github.com/salt-formulas/salt-formula-cinder
585
586Any questions or feedback is always welcome so feel free to join our IRC
587channel:
588
589 #salt-formulas @ irc.freenode.net