| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 1 | ============================== | 
 | 2 | Openstack Cinder Block Storage | 
 | 3 | ============================== | 
 | 4 |  | 
| Jakub Pavlik | b513f13 | 2016-05-20 11:11:19 +0200 | [diff] [blame] | 5 | Cinder provides an infrastructure for managing volumes in OpenStack. It was | 
 | 6 | originally a Nova component called nova-volume, but has become an independent | 
 | 7 | project since the Folsom release. | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 8 |  | 
 | 9 | Sample pillars | 
 | 10 | ============== | 
 | 11 |  | 
| Jakub Pavlik | b513f13 | 2016-05-20 11:11:19 +0200 | [diff] [blame] | 12 | New structure divides cinder-api,cinder-scheduler to role controller and | 
 | 13 | cinder-volume to role volume. | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 14 |  | 
 | 15 | .. code-block:: yaml | 
 | 16 |  | 
 | 17 |     cinder: | 
 | 18 |       controller: | 
 | 19 |         enabled: true | 
 | 20 |         version: juno | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 21 |         default_volume_type: 7k2SaS | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 22 |         database: | 
 | 23 |           engine: mysql | 
 | 24 |           host: 127.0.0.1 | 
 | 25 |           port: 3306 | 
 | 26 |           name: cinder | 
 | 27 |           user: cinder | 
 | 28 |           password: pwd | 
 | 29 |         identity: | 
 | 30 |           engine: keystone | 
 | 31 |           host: 127.0.0.1 | 
 | 32 |           port: 35357 | 
 | 33 |           tenant: service | 
 | 34 |           user: cinder | 
 | 35 |           password: pwd | 
 | 36 |         message_queue: | 
 | 37 |           engine: rabbitmq | 
 | 38 |           host: 127.0.0.1 | 
 | 39 |           port: 5672 | 
 | 40 |           user: openstack | 
 | 41 |           password: pwd | 
 | 42 |           virtual_host: '/openstack' | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 43 |         backend: | 
 | 44 |           7k2_SAS: | 
 | 45 |             engine: storwize | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 46 |             type_name: slow-disks | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 47 |             host: 192.168.0.1 | 
 | 48 |             port: 22 | 
 | 49 |             user: username | 
 | 50 |             password: pass | 
 | 51 |             connection: FC/iSCSI | 
 | 52 |             multihost: true | 
 | 53 |             multipath: true | 
 | 54 |             pool: SAS7K2 | 
| Petr Michalec | a1c7ff1 | 2016-11-29 16:32:50 +0100 | [diff] [blame] | 55 |         audit:  | 
 | 56 |           enabled: false | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 57 |  | 
 | 58 |     cinder: | 
 | 59 |       volume: | 
 | 60 |         enabled: true | 
 | 61 |         version: juno | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 62 |         default_volume_type: 7k2SaS | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 63 |         database: | 
 | 64 |           engine: mysql | 
 | 65 |           host: 127.0.0.1 | 
 | 66 |           port: 3306 | 
 | 67 |           name: cinder | 
 | 68 |           user: cinder | 
 | 69 |           password: pwd | 
 | 70 |         identity: | 
 | 71 |           engine: keystone | 
 | 72 |           host: 127.0.0.1 | 
 | 73 |           port: 35357 | 
 | 74 |           tenant: service | 
 | 75 |           user: cinder | 
 | 76 |           password: pwd | 
 | 77 |         message_queue: | 
 | 78 |           engine: rabbitmq | 
 | 79 |           host: 127.0.0.1 | 
 | 80 |           port: 5672 | 
 | 81 |           user: openstack | 
 | 82 |           password: pwd | 
 | 83 |           virtual_host: '/openstack' | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 84 |         backend: | 
 | 85 |           7k2_SAS: | 
 | 86 |             engine: storwize | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 87 |             type_name: 7k2 SAS disk | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 88 |             host: 192.168.0.1 | 
 | 89 |             port: 22 | 
 | 90 |             user: username | 
 | 91 |             password: pass | 
 | 92 |             connection: FC/iSCSI | 
 | 93 |             multihost: true | 
 | 94 |             multipath: true | 
 | 95 |             pool: SAS7K2 | 
| Petr Michalec | a1c7ff1 | 2016-11-29 16:32:50 +0100 | [diff] [blame] | 96 |         audit: | 
 | 97 |           enabled: false | 
| Jiri Konecny | 2dce35f | 2016-04-19 16:29:52 +0200 | [diff] [blame] | 98 |  | 
 | 99 | Client-side RabbitMQ HA setup for controller | 
 | 100 |  | 
 | 101 | .. code-block:: yaml | 
 | 102 |  | 
 | 103 |     cinder: | 
 | 104 |       controller: | 
 | 105 |         .... | 
 | 106 |         message_queue: | 
 | 107 |           engine: rabbitmq | 
 | 108 |           members: | 
 | 109 |             - host: 10.0.16.1 | 
 | 110 |             - host: 10.0.16.2 | 
 | 111 |             - host: 10.0.16.3 | 
 | 112 |           user: openstack | 
 | 113 |           password: pwd | 
 | 114 |           virtual_host: '/openstack' | 
 | 115 |         .... | 
 | 116 |  | 
 | 117 | Client-side RabbitMQ HA setup for volume component | 
 | 118 |  | 
 | 119 | .. code-block:: yaml | 
 | 120 |  | 
 | 121 |     cinder: | 
 | 122 |       volume: | 
 | 123 |         .... | 
 | 124 |         message_queue: | 
 | 125 |           engine: rabbitmq | 
 | 126 |           members: | 
 | 127 |             - host: 10.0.16.1 | 
 | 128 |             - host: 10.0.16.2 | 
 | 129 |             - host: 10.0.16.3 | 
 | 130 |           user: openstack | 
 | 131 |           password: pwd | 
 | 132 |           virtual_host: '/openstack' | 
 | 133 |         .... | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 134 |  | 
 | 135 | Cinder setup with zeroing deleted volumes | 
 | 136 |  | 
 | 137 |     cinder: | 
 | 138 |       controller: | 
 | 139 |         enabled: true | 
 | 140 |         wipe_method: zero | 
 | 141 |         ... | 
 | 142 |  | 
 | 143 | Cinder setup with shreding deleted volumes | 
 | 144 |  | 
 | 145 | .. code-block:: yaml | 
 | 146 |  | 
 | 147 |     cinder: | 
 | 148 |       controller: | 
 | 149 |         enabled: true | 
 | 150 |         wipe_method: shred | 
 | 151 |         ... | 
 | 152 |  | 
 | 153 |  | 
 | 154 | Default Cinder setup with iSCSI target | 
 | 155 |  | 
 | 156 | .. code-block:: yaml | 
 | 157 |  | 
 | 158 |     cinder: | 
 | 159 |       controller: | 
 | 160 |         enabled: true | 
| Jakub Pavlik | 3d437df | 2016-04-11 22:07:50 +0200 | [diff] [blame] | 161 |         version: mitaka | 
 | 162 |         default_volume_type: lvmdriver-1 | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 163 |         database: | 
 | 164 |           engine: mysql | 
 | 165 |           host: 127.0.0.1 | 
 | 166 |           port: 3306 | 
 | 167 |           name: cinder | 
 | 168 |           user: cinder | 
 | 169 |           password: pwd | 
 | 170 |         identity: | 
 | 171 |           engine: keystone | 
 | 172 |           host: 127.0.0.1 | 
 | 173 |           port: 35357 | 
 | 174 |           tenant: service | 
 | 175 |           user: cinder | 
 | 176 |           password: pwd | 
 | 177 |         message_queue: | 
 | 178 |           engine: rabbitmq | 
 | 179 |           host: 127.0.0.1 | 
 | 180 |           port: 5672 | 
 | 181 |           user: openstack | 
 | 182 |           password: pwd | 
 | 183 |           virtual_host: '/openstack' | 
| Jakub Pavlik | af96c2a | 2016-01-08 15:49:54 +0100 | [diff] [blame] | 184 |         backend: | 
| Jakub Pavlik | 3d437df | 2016-04-11 22:07:50 +0200 | [diff] [blame] | 185 |           lvmdriver-1: | 
 | 186 |             engine: lvm | 
 | 187 |             type_name: lvmdriver-1 | 
 | 188 |             volume_group: cinder-volume | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 189 |  | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 190 | Cinder setup for IBM Storwize | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 191 |  | 
 | 192 | .. code-block:: yaml | 
 | 193 |  | 
 | 194 |     cinder: | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 195 |       volume: | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 196 |         enabled: true | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 197 |         backend: | 
 | 198 |           7k2_SAS: | 
 | 199 |             engine: storwize | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 200 |             type_name: 7k2 SAS disk | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 201 |             host: 192.168.0.1 | 
 | 202 |             port: 22 | 
 | 203 |             user: username | 
 | 204 |             password: pass | 
 | 205 |             connection: FC/iSCSI | 
 | 206 |             multihost: true | 
 | 207 |             multipath: true | 
 | 208 |             pool: SAS7K2 | 
 | 209 |           10k_SAS: | 
 | 210 |             engine: storwize | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 211 |             type_name: 10k SAS disk | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 212 |             host: 192.168.0.1 | 
 | 213 |             port: 22 | 
 | 214 |             user: username | 
 | 215 |             password: pass | 
 | 216 |             connection: FC/iSCSI | 
 | 217 |             multihost: true | 
 | 218 |             multipath: true | 
 | 219 |             pool: SAS10K | 
 | 220 |           15k_SAS: | 
 | 221 |             engine: storwize | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 222 |             type_name: 15k SAS | 
| Ales Komarek | df13bbd | 2016-01-05 21:33:36 +0100 | [diff] [blame] | 223 |             host: 192.168.0.1 | 
 | 224 |             port: 22 | 
 | 225 |             user: username | 
 | 226 |             password: pass | 
 | 227 |             connection: FC/iSCSI | 
 | 228 |             multihost: true | 
 | 229 |             multipath: true | 
 | 230 |             pool: SAS15K | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 231 |  | 
 | 232 | Cinder setup with Hitachi VPS | 
 | 233 |  | 
 | 234 | .. code-block:: yaml | 
 | 235 |  | 
 | 236 |     cinder: | 
 | 237 |       controller: | 
 | 238 |         enabled: true | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 239 |         backend: | 
 | 240 |           hus100_backend: | 
| marco | daa52fa | 2016-01-25 23:49:50 +0100 | [diff] [blame] | 241 |             type_name: HUS100 | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 242 |             backend: hus100_backend | 
 | 243 |             engine: hitachi_vsp | 
 | 244 |             connection: FC | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 245 |  | 
 | 246 | Cinder setup with CEPH | 
 | 247 |  | 
 | 248 | .. code-block:: yaml | 
 | 249 |  | 
 | 250 |     cinder: | 
 | 251 |       controller: | 
 | 252 |         enabled: true | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 253 |         backend: | 
 | 254 |           ceph_backend: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 255 |             type_name: standard-iops | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 256 |             backend: ceph_backend | 
 | 257 |             pool: volumes | 
 | 258 |             engine: ceph | 
 | 259 |             user: cinder | 
 | 260 |             secret_uuid: da74ccb7-aa59-1721-a172-0006b1aa4e3e | 
 | 261 |             client_cinder_key: AQDOavlU6BsSJhAAnpFR906mvdgdfRqLHwu0Uw== | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 262 |  | 
 | 263 | http://ceph.com/docs/master/rbd/rbd-openstack/ | 
 | 264 |  | 
 | 265 |  | 
 | 266 | Cinder setup with HP3par | 
 | 267 |  | 
 | 268 | .. code-block:: yaml | 
 | 269 |  | 
 | 270 |     cinder: | 
 | 271 |       controller: | 
 | 272 |         enabled: true | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 273 |         backend: | 
 | 274 |           hp3par_backend: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 275 |             type_name: hp3par | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 276 |             backend: hp3par_backend | 
 | 277 |             user: hp3paruser | 
 | 278 |             password: something | 
 | 279 |             url: http://10.10.10.10/api/v1 | 
 | 280 |             cpg: OpenStackCPG | 
 | 281 |             host: 10.10.10.10 | 
 | 282 |             login: hp3paradmin | 
 | 283 |             sanpassword: something | 
 | 284 |             debug: True | 
 | 285 |             snapcpg: OpenStackSNAPCPG | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 286 |  | 
 | 287 | Cinder setup with Fujitsu Eternus | 
 | 288 |  | 
 | 289 | .. code-block:: yaml | 
 | 290 |  | 
 | 291 |     cinder: | 
 | 292 |       volume: | 
 | 293 |         enabled: true | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 294 |         backend: | 
 | 295 |           10kThinPro: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 296 |             type_name: 10kThinPro | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 297 |             engine: fujitsu | 
 | 298 |             pool: 10kThinPro | 
 | 299 |             host: 192.168.0.1 | 
 | 300 |             port: 5988 | 
 | 301 |             user: username | 
 | 302 |             password: pass | 
 | 303 |             connection: FC/iSCSI | 
| marco | daa52fa | 2016-01-25 23:49:50 +0100 | [diff] [blame] | 304 |             name: 10kThinPro | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 305 |           10k_SAS: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 306 |             type_name: 10k_SAS | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 307 |             pool: SAS10K | 
 | 308 |             engine: fujitsu | 
 | 309 |             host: 192.168.0.1 | 
 | 310 |             port: 5988 | 
 | 311 |             user: username | 
 | 312 |             password: pass | 
 | 313 |             connection: FC/iSCSI | 
| marco | daa52fa | 2016-01-25 23:49:50 +0100 | [diff] [blame] | 314 |             name: 10k_SAS | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 315 |  | 
| Jakub Pavlik | 9703c60 | 2015-10-15 18:52:47 +0200 | [diff] [blame] | 316 | Cinder setup with IBM GPFS filesystem | 
 | 317 |  | 
 | 318 | .. code-block:: yaml | 
 | 319 |  | 
 | 320 |     cinder: | 
 | 321 |       volume: | 
 | 322 |         enabled: true | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 323 |         backend: | 
 | 324 |           GPFS-GOLD: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 325 |             type_name: GPFS-GOLD | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 326 |             engine: gpfs | 
 | 327 |             mount_point: '/mnt/gpfs-openstack/cinder/gold' | 
| marco | daa52fa | 2016-01-25 23:49:50 +0100 | [diff] [blame] | 328 |           GPFS-SILVER: | 
| Jakub Pavlik | edd4610 | 2016-01-08 16:20:38 +0100 | [diff] [blame] | 329 |             type_name: GPFS-SILVER | 
| Jakub Pavlik | 5d7df0d | 2016-01-06 13:08:30 +0100 | [diff] [blame] | 330 |             engine: gpfs | 
 | 331 |             mount_point: '/mnt/gpfs-openstack/cinder/silver' | 
| Jakub Pavlik | 9f5988a | 2016-01-11 13:44:57 +0100 | [diff] [blame] | 332 |    | 
 | 333 | Cinder setup with HP LeftHand | 
 | 334 |  | 
 | 335 | .. code-block:: yaml | 
 | 336 |  | 
 | 337 |     cinder: | 
 | 338 |       volume: | 
 | 339 |         enabled: true | 
 | 340 |         backend: | 
 | 341 |           HP-LeftHand: | 
 | 342 |             type_name: normal-storage | 
 | 343 |             engine: hp_lefthand | 
 | 344 |             api_url: 'https://10.10.10.10:8081/lhos' | 
 | 345 |             username: user | 
 | 346 |             password: password | 
 | 347 |             clustername: cluster1 | 
 | 348 |             iscsi_chap_enabled: false | 
 | 349 |  | 
| Jakub Pavlik | a63764f | 2016-01-11 14:41:06 +0100 | [diff] [blame] | 350 | Extra parameters for HP LeftHand | 
| Jakub Pavlik | a63764f | 2016-01-11 14:41:06 +0100 | [diff] [blame] | 351 |  | 
| Jakub Pavlik | 5050dda | 2016-01-11 16:52:32 +0100 | [diff] [blame] | 352 | .. code-block:: yaml | 
 | 353 |  | 
 | 354 |     cinder type-key normal-storage set hplh:data_pl=r-10-2 hplh:provisioning=full  | 
 | 355 |  | 
| marco | daa52fa | 2016-01-25 23:49:50 +0100 | [diff] [blame] | 356 | Cinder setup with Solidfire | 
| Jakub Pavlik | 5050dda | 2016-01-11 16:52:32 +0100 | [diff] [blame] | 357 |  | 
 | 358 | .. code-block:: yaml | 
 | 359 |  | 
 | 360 |     cinder: | 
 | 361 |       volume: | 
 | 362 |         enabled: true | 
 | 363 |         backend: | 
 | 364 |           solidfire: | 
 | 365 |             type_name: normal-storage | 
 | 366 |             engine: solidfire | 
 | 367 |             san_ip: 10.10.10.10 | 
 | 368 |             san_login: user | 
 | 369 |             san_password: password | 
 | 370 |             clustername: cluster1 | 
 | 371 |             sf_emulate_512: false | 
| Filip Pytloun | da2a079 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 372 |  | 
| Petr Michalec | a1c7ff1 | 2016-11-29 16:32:50 +0100 | [diff] [blame] | 373 |  | 
 | 374 |  | 
 | 375 | Enable auditing filter, ie: CADF | 
 | 376 |  | 
 | 377 | .. code-block:: yaml | 
 | 378 |  | 
 | 379 |     cinder: | 
 | 380 |       controller: | 
 | 381 |         audit: | 
 | 382 |           enabled: true | 
 | 383 |       .... | 
 | 384 |           filter_factory: 'keystonemiddleware.audit:filter_factory' | 
 | 385 |           map_file: '/etc/pycadf/cinder_api_audit_map.conf' | 
 | 386 |       .... | 
 | 387 |       volume: | 
 | 388 |         audit: | 
 | 389 |           enabled: true | 
 | 390 |       .... | 
 | 391 |           filter_factory: 'keystonemiddleware.audit:filter_factory' | 
 | 392 |           map_file: '/etc/pycadf/cinder_api_audit_map.conf' | 
 | 393 |  | 
| Jakub Pavlik | b513f13 | 2016-05-20 11:11:19 +0200 | [diff] [blame] | 394 | Documentation and Bugs | 
 | 395 | ============================ | 
 | 396 |  | 
 | 397 | To learn how to deploy OpenStack Salt, consult the documentation available | 
 | 398 | online at: | 
 | 399 |  | 
| Petr Michalec | a1c7ff1 | 2016-11-29 16:32:50 +0100 | [diff] [blame] | 400 | https://wiki.openstack.org/wiki/OpenStackSalt | 
| Jakub Pavlik | b513f13 | 2016-05-20 11:11:19 +0200 | [diff] [blame] | 401 |  | 
 | 402 | In the unfortunate event that bugs are discovered, they should be reported to | 
 | 403 | the appropriate bug tracker. If you obtained the software from a 3rd party | 
 | 404 | operating system vendor, it is often wise to use their own bug tracker for | 
 | 405 | reporting problems. In all other cases use the master OpenStack bug tracker, | 
 | 406 | available at: | 
 | 407 |  | 
 | 408 |     http://bugs.launchpad.net/openstack-salt | 
 | 409 |  | 
 | 410 | Developers wishing to work on the OpenStack Salt project should always base | 
 | 411 | their work on the latest formulas code, available from the master GIT | 
 | 412 | repository at: | 
 | 413 |  | 
 | 414 |     https://git.openstack.org/cgit/openstack/salt-formula-cinder | 
 | 415 |  | 
 | 416 | Developers should also join the discussion on the IRC list, at: | 
 | 417 |  | 
 | 418 |     https://wiki.openstack.org/wiki/Meetings/openstack-salt |