blob: 10c3c73466dc7e11667f23f6ed92a5eaca689d53 [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
Alexey Chekunovf916f0c2017-05-25 13:29:45 +0400283Cinder setup with NetApp
284
285.. code-block:: yaml
286
287 cinder:
288 controller:
289 backend:
290 netapp:
291 engine: netapp
292 type_name: netapp
293 user: openstack
294 vserver: vm1
295 server_hostname: 172.18.2.3
296 password: password
297 storage_protocol: nfs
298 transport_type: https
299 lun_space_reservation: enabled
300 use_multipath_for_image_xfer: True
301 devices:
302 - 172.18.1.2:/vol_1
303 - 172.18.1.2:/vol_2
304 - 172.18.1.2:/vol_3
305 - 172.18.1.2:/vol_4
Jakub Pavlik94dc0c92017-06-14 14:53:23 +0200306 linux:
307 system:
308 package:
309 nfs-common:
310 version: latest
Alexey Chekunovf916f0c2017-05-25 13:29:45 +0400311
312
Filip Pytlounda2a0792015-10-06 16:28:31 +0200313Cinder setup with Hitachi VPS
314
315.. code-block:: yaml
316
317 cinder:
318 controller:
319 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100320 backend:
321 hus100_backend:
marcodaa52fa2016-01-25 23:49:50 +0100322 type_name: HUS100
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100323 backend: hus100_backend
324 engine: hitachi_vsp
325 connection: FC
Filip Pytlounda2a0792015-10-06 16:28:31 +0200326
Ondrej Smola16d66bd2017-01-15 13:56:03 +0100327Cinder setup with Hitachi VPS with defined ldev range
328
329.. code-block:: yaml
330
331 cinder:
332 controller:
333 enabled: true
334 backend:
335 hus100_backend:
336 type_name: HUS100
337 backend: hus100_backend
338 engine: hitachi_vsp
339 connection: FC
340 ldev_range: 0-1000
341
Filip Pytlounda2a0792015-10-06 16:28:31 +0200342Cinder setup with CEPH
343
344.. code-block:: yaml
345
346 cinder:
347 controller:
348 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100349 backend:
350 ceph_backend:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100351 type_name: standard-iops
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100352 backend: ceph_backend
353 pool: volumes
354 engine: ceph
355 user: cinder
356 secret_uuid: da74ccb7-aa59-1721-a172-0006b1aa4e3e
357 client_cinder_key: AQDOavlU6BsSJhAAnpFR906mvdgdfRqLHwu0Uw==
Michel Nederlofb43a4872017-06-20 09:36:47 +0200358 report_discard_supported: True
Filip Pytlounda2a0792015-10-06 16:28:31 +0200359
360http://ceph.com/docs/master/rbd/rbd-openstack/
361
362
363Cinder setup with HP3par
364
365.. code-block:: yaml
366
367 cinder:
368 controller:
369 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100370 backend:
371 hp3par_backend:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100372 type_name: hp3par
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100373 backend: hp3par_backend
374 user: hp3paruser
375 password: something
376 url: http://10.10.10.10/api/v1
377 cpg: OpenStackCPG
378 host: 10.10.10.10
379 login: hp3paradmin
380 sanpassword: something
381 debug: True
382 snapcpg: OpenStackSNAPCPG
Filip Pytlounda2a0792015-10-06 16:28:31 +0200383
384Cinder setup with Fujitsu Eternus
385
386.. code-block:: yaml
387
388 cinder:
389 volume:
390 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100391 backend:
392 10kThinPro:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100393 type_name: 10kThinPro
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100394 engine: fujitsu
395 pool: 10kThinPro
396 host: 192.168.0.1
397 port: 5988
398 user: username
399 password: pass
400 connection: FC/iSCSI
marcodaa52fa2016-01-25 23:49:50 +0100401 name: 10kThinPro
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100402 10k_SAS:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100403 type_name: 10k_SAS
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100404 pool: SAS10K
405 engine: fujitsu
406 host: 192.168.0.1
407 port: 5988
408 user: username
409 password: pass
410 connection: FC/iSCSI
marcodaa52fa2016-01-25 23:49:50 +0100411 name: 10k_SAS
Filip Pytlounda2a0792015-10-06 16:28:31 +0200412
Jakub Pavlik9703c602015-10-15 18:52:47 +0200413Cinder setup with IBM GPFS filesystem
414
415.. code-block:: yaml
416
417 cinder:
418 volume:
419 enabled: true
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100420 backend:
421 GPFS-GOLD:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100422 type_name: GPFS-GOLD
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100423 engine: gpfs
424 mount_point: '/mnt/gpfs-openstack/cinder/gold'
marcodaa52fa2016-01-25 23:49:50 +0100425 GPFS-SILVER:
Jakub Pavlikedd46102016-01-08 16:20:38 +0100426 type_name: GPFS-SILVER
Jakub Pavlik5d7df0d2016-01-06 13:08:30 +0100427 engine: gpfs
428 mount_point: '/mnt/gpfs-openstack/cinder/silver'
Jakub Pavlik9f5988a2016-01-11 13:44:57 +0100429
430Cinder setup with HP LeftHand
431
432.. code-block:: yaml
433
434 cinder:
435 volume:
436 enabled: true
437 backend:
438 HP-LeftHand:
439 type_name: normal-storage
440 engine: hp_lefthand
441 api_url: 'https://10.10.10.10:8081/lhos'
442 username: user
443 password: password
444 clustername: cluster1
445 iscsi_chap_enabled: false
446
Jakub Pavlika63764f2016-01-11 14:41:06 +0100447Extra parameters for HP LeftHand
Jakub Pavlika63764f2016-01-11 14:41:06 +0100448
Jakub Pavlik5050dda2016-01-11 16:52:32 +0100449.. code-block:: yaml
450
451 cinder type-key normal-storage set hplh:data_pl=r-10-2 hplh:provisioning=full
452
marcodaa52fa2016-01-25 23:49:50 +0100453Cinder setup with Solidfire
Jakub Pavlik5050dda2016-01-11 16:52:32 +0100454
455.. code-block:: yaml
456
457 cinder:
458 volume:
459 enabled: true
460 backend:
461 solidfire:
462 type_name: normal-storage
463 engine: solidfire
464 san_ip: 10.10.10.10
465 san_login: user
466 san_password: password
467 clustername: cluster1
468 sf_emulate_512: false
Filip Pytlounda2a0792015-10-06 16:28:31 +0200469
Alexander Noskov023a0032017-06-16 09:31:59 +0200470Cinder setup with Block Device driver
471
472.. code-block:: yaml
473
474 cinder:
475 volume:
476 enabled: true
477 backend:
478 bdd:
479 engine: bdd
480 enabled: true
481 type_name: bdd
482 devices:
483 - sdb
484 - sdc
485 - sdd
486
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200487Enable cinder-backup service for ceph
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100488
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200489.. code-block:: yaml
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100490
Ondrej Smolaed6abbf2017-04-25 11:55:44 +0200491 cinder:
492 controller:
493 enabled: true
494 version: mitaka
495 backup:
496 engine: ceph
497 ceph_conf: "/etc/ceph/ceph.conf"
498 ceph_pool: backup
499 ceph_stripe_count: 0
500 ceph_stripe_unit: 0
501 ceph_user: cinder
502 ceph_chunk_size: 134217728
503 restore_discard_excess_bytes: false
504 volume:
505 enabled: true
506 version: mitaka
507 backup:
508 engine: ceph
509 ceph_conf: "/etc/ceph/ceph.conf"
510 ceph_pool: backup
511 ceph_stripe_count: 0
512 ceph_stripe_unit: 0
513 ceph_user: cinder
514 ceph_chunk_size: 134217728
515 restore_discard_excess_bytes: false
516
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100517Enable auditing filter, ie: CADF
518
519.. code-block:: yaml
520
521 cinder:
522 controller:
523 audit:
524 enabled: true
525 ....
526 filter_factory: 'keystonemiddleware.audit:filter_factory'
527 map_file: '/etc/pycadf/cinder_api_audit_map.conf'
528 ....
529 volume:
530 audit:
531 enabled: true
532 ....
533 filter_factory: 'keystonemiddleware.audit:filter_factory'
534 map_file: '/etc/pycadf/cinder_api_audit_map.conf'
535
Michel Nederlofb8603eb2017-02-09 10:04:38 +0100536
537Cinder setup with custom availability zones:
538
539.. code-block:: yaml
540
541 cinder:
542 controller:
543 default_availability_zone: my-default-zone
544 storage_availability_zone: my-custom-zone-name
545 cinder:
546 volume:
547 default_availability_zone: my-default-zone
548 storage_availability_zone: my-custom-zone-name
549
Andrii Ostapenkob7aa34d2017-04-20 14:22:44 +0300550
551Cinder setup with custom non-admin volume query filters:
552
553.. code-block:: yaml
554
555 cinder:
556 controller:
557 query_volume_filters:
558 - name
559 - status
560 - metadata
561 - availability_zone
562 - bootable
563
564
Alexander Noskov62496fb2017-02-27 16:42:54 +0100565public_endpoint and osapi_volume_base_url parameters:
566"public_endpoint" is used for configuring versions endpoint,
567"osapi_volume_base_URL" is used to present Cinder URL to users.
568They are useful when running Cinder under load balancer in SSL.
569
570.. code-block:: yaml
571
572 cinder:
573 controller:
574 public_endpoint_address: https://${_param:cluster_domain}:8776
575
Michel Nederlofb8603eb2017-02-09 10:04:38 +0100576The 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)
577The storage availability zone is the actual zone where the node belongs to. Make sure to specify this per node.
578Check the documentation of OpenStack for more information
579
Jakub Pavlikb513f132016-05-20 11:11:19 +0200580Documentation and Bugs
581============================
582
583To learn how to deploy OpenStack Salt, consult the documentation available
584online at:
585
Petr Michaleca1c7ff12016-11-29 16:32:50 +0100586https://wiki.openstack.org/wiki/OpenStackSalt
Jakub Pavlikb513f132016-05-20 11:11:19 +0200587
588In the unfortunate event that bugs are discovered, they should be reported to
589the appropriate bug tracker. If you obtained the software from a 3rd party
590operating system vendor, it is often wise to use their own bug tracker for
591reporting problems. In all other cases use the master OpenStack bug tracker,
592available at:
593
594 http://bugs.launchpad.net/openstack-salt
595
596Developers wishing to work on the OpenStack Salt project should always base
597their work on the latest formulas code, available from the master GIT
598repository at:
599
600 https://git.openstack.org/cgit/openstack/salt-formula-cinder
601
602Developers should also join the discussion on the IRC list, at:
603
604 https://wiki.openstack.org/wiki/Meetings/openstack-salt
Filip Pytlounb0f5c1f2017-02-02 13:02:03 +0100605
606Documentation and Bugs
607======================
608
609To learn how to install and update salt-formulas, consult the documentation
610available online at:
611
612 http://salt-formulas.readthedocs.io/
613
614In the unfortunate event that bugs are discovered, they should be reported to
615the appropriate issue tracker. Use Github issue tracker for specific salt
616formula:
617
618 https://github.com/salt-formulas/salt-formula-cinder/issues
619
620For feature requests, bug reports or blueprints affecting entire ecosystem,
621use Launchpad salt-formulas project:
622
623 https://launchpad.net/salt-formulas
624
625You can also join salt-formulas-users team and subscribe to mailing list:
626
627 https://launchpad.net/~salt-formulas-users
628
629Developers wishing to work on the salt-formulas projects should always base
630their work on master branch and submit pull request against specific formula.
631
632 https://github.com/salt-formulas/salt-formula-cinder
633
634Any questions or feedback is always welcome so feel free to join our IRC
635channel:
636
637 #salt-formulas @ irc.freenode.net