blob: e5dc8471ca54b6d8d0254df35023625df1bd4dd3 [file] [log] [blame]
Filip Pytloun4a72d792015-10-06 16:28:32 +02001
Aleš Komárek72152852017-04-11 13:48:48 +02002============
3Nova Formula
4============
Filip Pytloun4a72d792015-10-06 16:28:32 +02005
Jakub Pavlikfcf34f82016-05-20 09:35:51 +02006OpenStack Nova provides a cloud computing fabric controller, supporting a wide
7variety of virtualization technologies, including KVM, Xen, LXC, VMware, and
8more. In addition to its native API, it includes compatibility with the
9commonly encountered Amazon EC2 and S3 APIs.
Filip Pytloun4a72d792015-10-06 16:28:32 +020010
Aleš Komárek72152852017-04-11 13:48:48 +020011Sample Pillars
Filip Pytloun4a72d792015-10-06 16:28:32 +020012==============
13
14Controller nodes
15----------------
16
17Nova services on the controller node
18
19.. code-block:: yaml
20
21 nova:
22 controller:
23 version: juno
24 enabled: true
25 security_group: true
Lachlan Evensonb72de502016-01-20 15:34:04 -080026 cpu_allocation_ratio: 8.0
27 ram_allocation_ratio: 1.0
Jiri Konecny9344a372016-03-21 19:25:48 +010028 disk_allocation_ratio: 1.0
Jiri Konecnyb5a80e42016-03-22 11:51:01 +010029 workers: 8
Jakub Pavlik617a8962016-09-04 18:50:06 +020030 report_interval: 60
Filip Pytloun4a72d792015-10-06 16:28:32 +020031 bind:
32 public_address: 10.0.0.122
33 public_name: openstack.domain.com
34 novncproxy_port: 6080
35 database:
36 engine: mysql
37 host: 127.0.0.1
38 port: 3306
39 name: nova
40 user: nova
41 password: pwd
42 identity:
43 engine: keystone
44 host: 127.0.0.1
45 port: 35357
46 user: nova
47 password: pwd
48 tenant: service
49 message_queue:
50 engine: rabbitmq
51 host: 127.0.0.1
52 port: 5672
53 user: openstack
54 password: pwd
55 virtual_host: '/openstack'
56 network:
57 engine: neutron
58 host: 127.0.0.1
59 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020060 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020061 identity:
62 engine: keystone
63 host: 127.0.0.1
64 port: 35357
65 user: neutron
66 password: pwd
67 tenant: service
68 metadata:
69 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010070 audit:
71 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010072 osapi_max_limit: 500
Filip Pytloun4a72d792015-10-06 16:28:32 +020073
Jiri Konecnye31f2c52016-04-14 17:16:02 +020074
Filip Pytloun4a72d792015-10-06 16:28:32 +020075Nova services from custom package repository
76
77.. code-block:: yaml
78
79 nova:
80 controller:
81 version: juno
82 source:
83 engine: pkg
84 address: http://...
85 ....
86
Jiri Konecnye31f2c52016-04-14 17:16:02 +020087
88Client-side RabbitMQ HA setup
89
90.. code-block:: yaml
91
92 nova:
93 controller:
94 ....
95 message_queue:
96 engine: rabbitmq
97 members:
98 - host: 10.0.16.1
99 - host: 10.0.16.2
100 - host: 10.0.16.3
101 user: openstack
102 password: pwd
103 virtual_host: '/openstack'
104 ....
105
106
Petr Michalecaa23dc02016-11-29 16:30:25 +0100107Enable auditing filter, ie: CADF
108
109.. code-block:: yaml
110
111 nova:
112 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100113 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100114 enabled: true
115 ....
116 filter_factory: 'keystonemiddleware.audit:filter_factory'
117 map_file: '/etc/pycadf/nova_api_audit_map.conf'
118 ....
119
120
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200121Enable CORS parameters
122
123.. code-block:: yaml
124
125 nova:
126 controller:
127 cors:
128 allowed_origin: https:localhost.local,http:localhost.local
129 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
130 allow_methods: GET,PUT,POST,DELETE,PATCH
131 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
132 allow_credentials: True
133 max_age: 86400
134
Dmitry Ukov3562a082017-05-04 00:00:48 +0400135Configuration of policy.json file
136
137.. code-block:: yaml
138
139 nova:
140 controller:
141 ....
142 policy:
143 context_is_admin: 'role:admin or role:administrator'
144 'compute:create': 'rule:admin_or_owner'
145 # Add key without value to remove line from policy.json
146 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200147
Filip Pytloun4a72d792015-10-06 16:28:32 +0200148Compute nodes
149-------------
150
151Nova controller services on compute node
152
153.. code-block:: yaml
154
155 nova:
156 compute:
157 version: juno
158 enabled: true
159 virtualization: kvm
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100160 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200161 aggregates:
162 - hosts_with_fc
163 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200164 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200165 resume_guests_state_on_host_boot: False
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300166 my_ip: 10.1.0.16
Filip Pytloun4a72d792015-10-06 16:28:32 +0200167 bind:
168 vnc_address: 172.20.0.100
169 vnc_port: 6080
170 vnc_name: openstack.domain.com
171 vnc_protocol: http
172 database:
173 engine: mysql
174 host: 127.0.0.1
175 port: 3306
176 name: nova
177 user: nova
178 password: pwd
179 identity:
180 engine: keystone
181 host: 127.0.0.1
182 port: 35357
183 user: nova
184 password: pwd
185 tenant: service
186 message_queue:
187 engine: rabbitmq
188 host: 127.0.0.1
189 port: 5672
190 user: openstack
191 password: pwd
192 virtual_host: '/openstack'
193 image:
194 engine: glance
195 host: 127.0.0.1
196 port: 9292
197 network:
198 engine: neutron
199 host: 127.0.0.1
200 port: 9696
201 identity:
202 engine: keystone
203 host: 127.0.0.1
204 port: 35357
205 user: neutron
206 password: pwd
207 tenant: service
208 qemu:
209 max_files: 4096
210 max_processes: 4096
211
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300212Group membership for user nova (upgrade related)
213
214.. code-block:: yaml
215
216 nova:
217 compute:
218 enabled: true
219 ...
220 user:
221 groups:
222 - libvirt
223
Filip Pytloun4a72d792015-10-06 16:28:32 +0200224Nova services on compute node with OpenContrail
225
226.. code-block:: yaml
227
228 nova:
229 compute:
230 enabled: true
231 ...
232 networking: contrail
233
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200234
Filip Pytloun4a72d792015-10-06 16:28:32 +0200235Nova services on compute node with memcached caching
236
237.. code-block:: yaml
238
239 nova:
240 compute:
241 enabled: true
242 ...
243 cache:
244 engine: memcached
245 members:
246 - host: 127.0.0.1
247 port: 11211
248 - host: 127.0.0.1
249 port: 11211
250
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200251
252Client-side RabbitMQ HA setup
253
254.. code-block:: yaml
255
256 nova:
257 controller:
258 ....
259 message_queue:
260 engine: rabbitmq
261 members:
262 - host: 10.0.16.1
263 - host: 10.0.16.2
264 - host: 10.0.16.3
265 user: openstack
266 password: pwd
267 virtual_host: '/openstack'
268 ....
269
maxstack39e6aca2016-05-04 13:50:13 +0000270
271Nova with ephemeral configured with Ceph
272
273.. code-block:: yaml
274
275 nova:
276 compute:
277 enabled: true
278 ...
279 ceph:
280 ephemeral: yes
281 rbd_pool: nova
282 rbd_user: nova
283 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
284
285
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100286Client role
287-----------
288
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300289Nova configured with NFS
290
291.. code-block:: yaml
292
293 nova:
294 compute:
295 instances_path: /mnt/nova/instances
296
297 linux:
298 storage:
299 enabled: true
300 mount:
301 nfs_nova:
302 enabled: true
303 path: ${nova:compute:instances_path}
304 device: 172.31.35.145:/data
305 file_system: nfs
306 opts: rw,vers=3
307
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100308Nova flavors
309
310.. code-block:: yaml
311
312 nova:
313 client:
314 enabled: true
315 server:
316 identity:
317 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100318 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100319 flavor_id: 10
320 ram: 4096
321 disk: 10
322 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100323 flavor2:
324 flavor_id: auto
325 ram: 4096
326 disk: 20
327 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100328 identity1:
329 flavor:
330 ...
331
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100332
333Availability zones
334
335.. code-block:: yaml
336
337 nova:
338 client:
339 enabled: true
340 server:
341 identity:
342 availability_zones:
343 - availability_zone_01
344 - availability_zone_02
345
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200346
347
348Aggregates
349
350.. code-block:: yaml
351
352 nova:
353 client:
354 enabled: true
355 server:
356 identity:
357 aggregates:
358 - aggregate1
359 - aggregate2
360
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300361Upgrade levels
362
363.. code-block:: yaml
364
365 nova:
366 controller:
367 upgrade_levels:
368 compute: juno
369
370 nova:
371 compute:
372 upgrade_levels:
373 compute: juno
374
Petr Jedinýd855ef22017-03-06 22:24:33 +0100375SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100376------
377
378Add PciPassthroughFilter into scheduler filters and NICs on specific compute nodes.
379
380.. code-block:: yaml
381
382 nova:
383 controller:
384 sriov: true
385 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
386
387 nova:
388 compute:
389 sriov:
390 nic_one:
391 devname: eth1
392 physical_network: physnet1
393
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100394CPU pinning & Hugepages
395-----------------------
396
397CPU pinning of virtual machine instances to dedicated physical CPU cores.
398Hugepages mount point for libvirt.
399
400.. code-block:: yaml
401
402 nova:
403 controller:
404 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
405
406 nova:
407 compute:
408 vcpu_pin_set: 2,3,4,5
409 hugepages:
410 mount_points:
411 - path: /mnt/hugepages_1GB
412 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100413
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200414Custom Scheduler filters
415------------------------
416
417If you have a custom filter, that needs to be included in the scheduler, then you can include it like so:
418
419.. code-block:: yaml
420
421 nova:
422 controller:
423 scheduler_custom_filters:
424 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
425
426 # Then add your custom filter on the end (make sure to include all other ones that you need as well)
427 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
428
Michel Nederlofeb566f62017-04-21 15:37:47 +0200429Hardware Trip/Unmap Support
430---------------------------
431
432To enable TRIM support for ephemeral images (thru nova managed images), libvirt has this option.
433
434.. code-block:: yaml
435
436 nova:
437 compute:
438 libvirt:
439 hw_disk_discard: unmap
440
441In order to actually utilize this feature, the following metadata must be set on the image as well, so the SCSI unmap is supported.
442
443.. code-block:: bash
444
445 glance image-update --property hw_scsi_model=virtio-scsi <image>
446 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100447
Thom Gerdesec00afd2017-04-07 18:06:59 +0000448libvirt CPU mode
449----------------
450
451Allow setting the model of CPU that is exposed to a VM. This allows better
452support live migration between hypervisors with different hardware, among other
453things. Defaults to host-passthrough.
454
455.. code-block:: yaml
456
457 nova:
458 compute:
459 cpu_mode: host-model
460
Michel Nederloff7eefb22017-07-10 11:14:33 +0200461Nova compute workarounds
462------------------------
463
464Live snapshotting is disabled by default in nova. To enable this, it needs a manual switch.
465
466From manual:
467
468.. code-block:: yaml
469
470 # When using libvirt 1.2.2 live snapshots fail intermittently under load
471 # (likely related to concurrent libvirt/qemu operations). This config
472 # option provides a mechanism to disable live snapshot, in favor of cold
473 # snapshot, while this is resolved. Cold snapshot causes an instance
474 # outage while the guest is going through the snapshotting process.
475 #
476 # For more information, refer to the bug report:
477 #
478 # https://bugs.launchpad.net/nova/+bug/1334398
479
480Configurable pillar data:
481
482.. code-block:: yaml
483
484 nova:
485 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200486 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200487 disable_libvirt_livesnapshot: False
488
Michel Nederlofb51a5142017-06-27 08:31:35 +0200489Config drive options
490--------------------
491
492See example below on how to configure the options for the config drive.
493
494.. code-block:: yaml
495
496 nova:
497 compute:
498 config_drive:
499 forced: True # Default: True
500 cdrom: True # Default: False
501 format: iso9660 # Default: vfat
502 inject_password: False # Default: False
503
Thom Gerdesec00afd2017-04-07 18:06:59 +0000504
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100505Documentation and Bugs
506======================
507
508To learn how to install and update salt-formulas, consult the documentation
509available online at:
510
511 http://salt-formulas.readthedocs.io/
512
513In the unfortunate event that bugs are discovered, they should be reported to
514the appropriate issue tracker. Use Github issue tracker for specific salt
515formula:
516
517 https://github.com/salt-formulas/salt-formula-nova/issues
518
519For feature requests, bug reports or blueprints affecting entire ecosystem,
520use Launchpad salt-formulas project:
521
522 https://launchpad.net/salt-formulas
523
524You can also join salt-formulas-users team and subscribe to mailing list:
525
526 https://launchpad.net/~salt-formulas-users
527
528Developers wishing to work on the salt-formulas projects should always base
529their work on master branch and submit pull request against specific formula.
530
531 https://github.com/salt-formulas/salt-formula-nova
532
533Any questions or feedback is always welcome so feel free to join our IRC
534channel:
535
536 #salt-formulas @ irc.freenode.net