blob: 8ff3b8508ec337b4d3584f5add81e4f248dbfce5 [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
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +030029 cross_az_attach: false
Jiri Konecnyb5a80e42016-03-22 11:51:01 +010030 workers: 8
Jakub Pavlik617a8962016-09-04 18:50:06 +020031 report_interval: 60
Filip Pytloun4a72d792015-10-06 16:28:32 +020032 bind:
33 public_address: 10.0.0.122
34 public_name: openstack.domain.com
35 novncproxy_port: 6080
36 database:
37 engine: mysql
38 host: 127.0.0.1
39 port: 3306
40 name: nova
41 user: nova
42 password: pwd
43 identity:
44 engine: keystone
45 host: 127.0.0.1
46 port: 35357
47 user: nova
48 password: pwd
49 tenant: service
50 message_queue:
51 engine: rabbitmq
52 host: 127.0.0.1
53 port: 5672
54 user: openstack
55 password: pwd
56 virtual_host: '/openstack'
57 network:
58 engine: neutron
59 host: 127.0.0.1
60 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020061 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020062 identity:
63 engine: keystone
64 host: 127.0.0.1
65 port: 35357
66 user: neutron
67 password: pwd
68 tenant: service
69 metadata:
70 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010071 audit:
72 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010073 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030074 barbican:
75 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020076
Jiri Konecnye31f2c52016-04-14 17:16:02 +020077
Filip Pytloun4a72d792015-10-06 16:28:32 +020078Nova services from custom package repository
79
80.. code-block:: yaml
81
82 nova:
83 controller:
84 version: juno
85 source:
86 engine: pkg
87 address: http://...
88 ....
89
Jiri Konecnye31f2c52016-04-14 17:16:02 +020090
91Client-side RabbitMQ HA setup
92
93.. code-block:: yaml
94
95 nova:
96 controller:
97 ....
98 message_queue:
99 engine: rabbitmq
100 members:
101 - host: 10.0.16.1
102 - host: 10.0.16.2
103 - host: 10.0.16.3
104 user: openstack
105 password: pwd
106 virtual_host: '/openstack'
107 ....
108
109
Petr Michalecaa23dc02016-11-29 16:30:25 +0100110Enable auditing filter, ie: CADF
111
112.. code-block:: yaml
113
114 nova:
115 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100116 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100117 enabled: true
118 ....
119 filter_factory: 'keystonemiddleware.audit:filter_factory'
120 map_file: '/etc/pycadf/nova_api_audit_map.conf'
121 ....
122
123
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200124Enable CORS parameters
125
126.. code-block:: yaml
127
128 nova:
129 controller:
130 cors:
131 allowed_origin: https:localhost.local,http:localhost.local
132 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
133 allow_methods: GET,PUT,POST,DELETE,PATCH
134 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
135 allow_credentials: True
136 max_age: 86400
137
Dmitry Ukov3562a082017-05-04 00:00:48 +0400138Configuration of policy.json file
139
140.. code-block:: yaml
141
142 nova:
143 controller:
144 ....
145 policy:
146 context_is_admin: 'role:admin or role:administrator'
147 'compute:create': 'rule:admin_or_owner'
148 # Add key without value to remove line from policy.json
149 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200150
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300151Enable Barbican integration
152
153.. code-block:: yaml
154
155 nova:
156 controller:
157 ....
158 barbican:
159 enabled: true
160
Jiri Broulik789179a2018-02-13 16:16:46 +0100161Enable cells update:
162
163**Note:** Useful when upgrading Openstack. To update cells to test sync db agains duplicated production database.
164
165.. code-block:: yaml
166
167 nova:
168 controller:
169 update_cells: true
170
Kirill Bespalov64617172017-07-11 14:43:14 +0300171
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300172Configuring TLS communications
173------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300174
Kirill Bespalov64617172017-07-11 14:43:14 +0300175
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300176**Note:** by default system wide installed CA certs are used, so ``cacert_file`` param is optional, as well as ``cacert``.
177
178
179
180- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300181
182.. code-block:: yaml
183
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300184 nova:
185 compute:
Kirill Bespalov64617172017-07-11 14:43:14 +0300186 message_queue:
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300187 port: 5671
Kirill Bespalov64617172017-07-11 14:43:14 +0300188 ssl:
189 enabled: True
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300190 (optional) cacert: cert body if the cacert_file does not exists
191 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
192 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300193
194
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300195- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300196
197.. code-block:: yaml
198
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300199 nova:
200 controller:
201 database:
Kirill Bespalov64617172017-07-11 14:43:14 +0300202 ssl:
203 enabled: True
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300204 (optional) cacert: cert body if the cacert_file does not exists
205 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300206
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300207- **Openstack HTTPS API**
208
209
210Set the ``https`` as protocol at ``nova:compute`` and ``nova:controller`` sections :
Kirill Bespalov64617172017-07-11 14:43:14 +0300211
212.. code-block:: yaml
213
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300214 nova:
215 controller :
216 identity:
217 protocol: https
218 (optional) cacert_file: /etc/openstack/proxy.pem
219 network:
220 protocol: https
221 (optional) cacert_file: /etc/openstack/proxy.pem
222 glance:
223 protocol: https
224 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300225
226
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300227.. code-block:: yaml
228
229 nova:
230 compute:
231 identity:
232 protocol: https
233 (optional) cacert_file: /etc/openstack/proxy.pem
234 network:
235 protocol: https
236 (optional) cacert_file: /etc/openstack/proxy.pem
237 image:
238 protocol: https
239 (optional) cacert_file: /etc/openstack/proxy.pem
240 ironic:
241 protocol: https
242 (optional) cacert_file: /etc/openstack/proxy.pem
243
244
245**Note:** the barbican, cinder and placement url endpoints are discovering using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300246
247
Filip Pytloun4a72d792015-10-06 16:28:32 +0200248Compute nodes
249-------------
250
251Nova controller services on compute node
252
253.. code-block:: yaml
254
255 nova:
256 compute:
257 version: juno
258 enabled: true
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300259 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300260 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100261 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200262 aggregates:
263 - hosts_with_fc
264 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200265 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200266 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400267 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300268 my_ip: 10.1.0.16
Filip Pytloun4a72d792015-10-06 16:28:32 +0200269 bind:
270 vnc_address: 172.20.0.100
271 vnc_port: 6080
272 vnc_name: openstack.domain.com
273 vnc_protocol: http
274 database:
275 engine: mysql
276 host: 127.0.0.1
277 port: 3306
278 name: nova
279 user: nova
280 password: pwd
281 identity:
282 engine: keystone
283 host: 127.0.0.1
284 port: 35357
285 user: nova
286 password: pwd
287 tenant: service
288 message_queue:
289 engine: rabbitmq
290 host: 127.0.0.1
291 port: 5672
292 user: openstack
293 password: pwd
294 virtual_host: '/openstack'
295 image:
296 engine: glance
297 host: 127.0.0.1
298 port: 9292
299 network:
300 engine: neutron
301 host: 127.0.0.1
302 port: 9696
303 identity:
304 engine: keystone
305 host: 127.0.0.1
306 port: 35357
307 user: neutron
308 password: pwd
309 tenant: service
310 qemu:
311 max_files: 4096
312 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300313 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200314
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300315Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
316Each process should have uniq host identifier. However multiple computes might be running on
317single host. It is not recommended to have multiple computes running on different hosts that
318manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
319
320.. code-block:: yaml
321
322 nova:
323 compute:
324 compute_driver: vmwareapi.VMwareVCDriver
325 vmware:
326 host_username: vmware
327 host_password: vmware
328 cluster_name: vmware_cluster01
329 host_ip: 1.2.3.4
330
kkalynovskyif50f0c02017-12-12 17:52:57 +0200331Group and user to be used for QEMU processes run by the system instance
332
333.. code-block:: yaml
334
335 nova:
336 compute:
337 enabled: true
338 ...
339 qemu:
340 user: nova
341 group: cinder
342 dynamic_ownership: 1
343
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300344Group membership for user nova (upgrade related)
345
346.. code-block:: yaml
347
348 nova:
349 compute:
350 enabled: true
351 ...
352 user:
353 groups:
354 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200355
356Nova services on compute node with OpenContrail
357
358.. code-block:: yaml
359
360 nova:
361 compute:
362 enabled: true
363 ...
364 networking: contrail
365
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200366
Filip Pytloun4a72d792015-10-06 16:28:32 +0200367Nova services on compute node with memcached caching
368
369.. code-block:: yaml
370
371 nova:
372 compute:
373 enabled: true
374 ...
375 cache:
376 engine: memcached
377 members:
378 - host: 127.0.0.1
379 port: 11211
380 - host: 127.0.0.1
381 port: 11211
382
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200383
384Client-side RabbitMQ HA setup
385
386.. code-block:: yaml
387
388 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300389 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200390 ....
391 message_queue:
392 engine: rabbitmq
393 members:
394 - host: 10.0.16.1
395 - host: 10.0.16.2
396 - host: 10.0.16.3
397 user: openstack
398 password: pwd
399 virtual_host: '/openstack'
400 ....
401
maxstack39e6aca2016-05-04 13:50:13 +0000402Nova with ephemeral configured with Ceph
403
404.. code-block:: yaml
405
406 nova:
407 compute:
408 enabled: true
409 ...
410 ceph:
411 ephemeral: yes
412 rbd_pool: nova
413 rbd_user: nova
414 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300415 ....
maxstack39e6aca2016-05-04 13:50:13 +0000416
Kalynovskyi0bc79692017-07-21 16:22:09 +0300417Nova with ephemeral configured with LVM
418
419.. code-block:: yaml
420
421 nova:
422 compute:
423 enabled: true
424 ...
425 lvm:
426 ephemeral: yes
427 images_volume_group: nova_vg
428
429 linux:
430 storage:
431 lvm:
432 nova_vg:
433 name: nova_vg
434 devices:
435 - /dev/sdf
436 - /dev/sdd
437 - /dev/sdg
438 - /dev/sde
439 - /dev/sdc
440 - /dev/sdj
441 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000442
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300443Enable Barbican integration
444
445.. code-block:: yaml
446
447 nova:
448 compute:
449 ....
450 barbican:
451 enabled: true
452
Vasyl Saienko2d591282018-02-05 14:19:02 +0200453Nova metadata custom bindings
454
455.. code-block:: yaml
456
457 nova:
458 controller:
459 enabled: true
460 ...
461 metadata:
462 bind:
463 address: 1.2.3.4
464 port: 8776
465
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300466
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100467Client role
468-----------
469
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300470Nova configured with NFS
471
472.. code-block:: yaml
473
474 nova:
475 compute:
476 instances_path: /mnt/nova/instances
477
478 linux:
479 storage:
480 enabled: true
481 mount:
482 nfs_nova:
483 enabled: true
484 path: ${nova:compute:instances_path}
485 device: 172.31.35.145:/data
486 file_system: nfs
487 opts: rw,vers=3
488
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100489Nova flavors
490
491.. code-block:: yaml
492
493 nova:
494 client:
495 enabled: true
496 server:
497 identity:
498 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100499 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100500 flavor_id: 10
501 ram: 4096
502 disk: 10
503 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100504 flavor2:
505 flavor_id: auto
506 ram: 4096
507 disk: 20
508 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100509 identity1:
510 flavor:
511 ...
512
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100513
514Availability zones
515
516.. code-block:: yaml
517
518 nova:
519 client:
520 enabled: true
521 server:
522 identity:
523 availability_zones:
524 - availability_zone_01
525 - availability_zone_02
526
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200527
528
529Aggregates
530
531.. code-block:: yaml
532
533 nova:
534 client:
535 enabled: true
536 server:
537 identity:
538 aggregates:
539 - aggregate1
540 - aggregate2
541
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300542Upgrade levels
543
544.. code-block:: yaml
545
546 nova:
547 controller:
548 upgrade_levels:
549 compute: juno
550
551 nova:
552 compute:
553 upgrade_levels:
554 compute: juno
555
Petr Jedinýd855ef22017-03-06 22:24:33 +0100556SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100557------
558
559Add PciPassthroughFilter into scheduler filters and NICs on specific compute nodes.
560
561.. code-block:: yaml
562
563 nova:
564 controller:
565 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000566 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100567
568 nova:
569 compute:
570 sriov:
571 nic_one:
572 devname: eth1
573 physical_network: physnet1
574
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100575CPU pinning & Hugepages
576-----------------------
577
578CPU pinning of virtual machine instances to dedicated physical CPU cores.
579Hugepages mount point for libvirt.
580
581.. code-block:: yaml
582
583 nova:
584 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000585 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100586
587 nova:
588 compute:
589 vcpu_pin_set: 2,3,4,5
590 hugepages:
591 mount_points:
592 - path: /mnt/hugepages_1GB
593 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100594
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200595Custom Scheduler filters
596------------------------
597
598If you have a custom filter, that needs to be included in the scheduler, then you can include it like so:
599
600.. code-block:: yaml
601
602 nova:
603 controller:
604 scheduler_custom_filters:
605 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
606
607 # Then add your custom filter on the end (make sure to include all other ones that you need as well)
sandriichenko4fe321d2018-01-22 17:34:06 +0000608 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200609
Michel Nederlofeb566f62017-04-21 15:37:47 +0200610Hardware Trip/Unmap Support
611---------------------------
612
613To enable TRIM support for ephemeral images (thru nova managed images), libvirt has this option.
614
615.. code-block:: yaml
616
617 nova:
618 compute:
619 libvirt:
620 hw_disk_discard: unmap
621
622In order to actually utilize this feature, the following metadata must be set on the image as well, so the SCSI unmap is supported.
623
624.. code-block:: bash
625
626 glance image-update --property hw_scsi_model=virtio-scsi <image>
627 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100628
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200629
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000630Scheduler Host Manager
631----------------------
632
633Specify a custom host manager.
634
Thom Gerdesec00afd2017-04-07 18:06:59 +0000635libvirt CPU mode
636----------------
637
638Allow setting the model of CPU that is exposed to a VM. This allows better
639support live migration between hypervisors with different hardware, among other
640things. Defaults to host-passthrough.
641
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200642
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000643.. code-block:: yaml
644
645 nova:
646 controller:
647 scheduler_host_manager: ironic_host_manager
648
Thom Gerdesec00afd2017-04-07 18:06:59 +0000649 compute:
650 cpu_mode: host-model
651
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200652Nova compute cpu model
653----------------------
654
655.. code-block:: yaml
656
657 nova:
658 compute:
659 cpu_mode: custom
660 libvirt:
661 cpu_model: IvyBridge
662
663
Michel Nederloff7eefb22017-07-10 11:14:33 +0200664Nova compute workarounds
665------------------------
666
667Live snapshotting is disabled by default in nova. To enable this, it needs a manual switch.
668
669From manual:
670
671.. code-block:: yaml
672
673 # When using libvirt 1.2.2 live snapshots fail intermittently under load
674 # (likely related to concurrent libvirt/qemu operations). This config
675 # option provides a mechanism to disable live snapshot, in favor of cold
676 # snapshot, while this is resolved. Cold snapshot causes an instance
677 # outage while the guest is going through the snapshotting process.
678 #
679 # For more information, refer to the bug report:
680 #
681 # https://bugs.launchpad.net/nova/+bug/1334398
682
683Configurable pillar data:
684
685.. code-block:: yaml
686
687 nova:
688 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200689 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200690 disable_libvirt_livesnapshot: False
691
Michel Nederlofb51a5142017-06-27 08:31:35 +0200692Config drive options
693--------------------
694
695See example below on how to configure the options for the config drive.
696
697.. code-block:: yaml
698
699 nova:
700 compute:
701 config_drive:
702 forced: True # Default: True
703 cdrom: True # Default: False
704 format: iso9660 # Default: vfat
705 inject_password: False # Default: False
706
Michel Nederloff81919b2017-11-20 09:37:07 +0100707Number of concurrent live migrates
708----------------------------------
709
710Default is to have no concurrent live migrations (so 1 live-migration at a time).
711
712Excerpt from config options page (https://docs.openstack.org/ocata/config-reference/compute/config-options.html):
713
714 Maximum number of live migrations to run concurrently. This limit is
715 enforced to avoid outbound live migrations overwhelming the host/network
716 and causing failures. It is not recommended that you change this unless
717 you are very sure that doing so is safe and stable in your environment.
718
719 Possible values:
720
721 - 0 : treated as unlimited.
722 - Negative value defaults to 0.
723 - Any positive integer representing maximum number of live migrations to run concurrently.
724
725To configure this option:
726
727.. code-block:: yaml
728
729 nova:
730 compute:
731 max_concurrent_live_migrations: 1 # (1 is the default)
732
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300733Live migration with auto converge
734----------------------------------
735
736Auto converge throttles down CPU if a progress of on-going live migration is slow.
737https://docs.openstack.org/ocata/config-reference/compute/config-options.html
738
739.. code-block:: yaml
740
741 nova:
742 compute:
743 libvirt:
744 live_migration_permit_auto_converge: False # (False is the default)
745
746.. code-block:: yaml
747
748 nova:
749 controller:
750 libvirt:
751 live_migration_permit_auto_converge: False # (False is the default)
752
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400753Enhanced logging with logging.conf
754----------------------------------
755
756By default logging.conf is disabled.
757
758That is possible to enable per-binary logging.conf with new variables:
759 * openstack_log_appender - set it to true to enable log_config_append for all OpenStack services;
760 * openstack_fluentd_handler_enabled - set to true to enable FluentHandler for all Openstack services.
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200761 * openstack_ossyslog_handler_enabled - set to true to enable OSSysLogHandler for all Openstack services.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400762
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200763Only WatchedFileHandler, OSSysLogHandler and FluentHandler are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400764
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400765Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400766
767.. code-block:: yaml
768
769 nova:
770 controller:
771 logging:
772 log_appender: true
773 log_handlers:
774 watchedfile:
775 enabled: true
776 fluentd:
777 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200778 ossyslog:
779 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400780
781 compute:
782 logging:
783 log_appender: true
784 log_handlers:
785 watchedfile:
786 enabled: true
787 fluentd:
788 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200789 ossyslog:
790 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000791
Vasyl Saienko7243a952018-05-11 21:26:54 +0300792The log level might be configured per logger by using the
793following pillar structure:
794
795.. code-block:: yaml
796
797 nova:
798 compute:
799 logging:
800 loggers:
801 <logger_name>:
802 level: WARNING
803
804 nova:
805 compute:
806 logging:
807 loggers:
808 <logger_name>:
809 level: WARNING
810
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000811Configure syslog parameters for libvirtd
812----------------------------------------
813
814To configure syslog parameters for libvirtd the below pillar structure should be used with values which are supported
815by libvirtd. These values might be known from the documentation.
816
817 nova:
818 compute:
819 libvirt:
820 logging:
821 level: 3
822 filters: '3:remote 4:event'
823 outputs: '3:syslog:libvirtd'
824 buffer_size: 64
825
826#################################################################
827#
828# Logging controls
829#
830
831# Logging level: 4 errors, 3 warnings, 2 information, 1 debug
832# basically 1 will log everything possible
833#log_level = 3
834
835# Logging filters:
836# A filter allows to select a different logging level for a given category
837# of logs
838# The format for a filter is one of:
839# x:name
840# x:+name
841# where name is a string which is matched against source file name,
842# e.g., "remote", "qemu", or "util/json", the optional "+" prefix
843# tells libvirt to log stack trace for each message matching name,
844# and x is the minimal level where matching messages should be logged:
845# 1: DEBUG
846# 2: INFO
847# 3: WARNING
848# 4: ERROR
849#
850# Multiple filter can be defined in a single @filters, they just need to be
851# separated by spaces.
852#
853# e.g. to only get warning or errors from the remote layer and only errors
854# from the event layer:
855#log_filters="3:remote 4:event"
856
857# Logging outputs:
858# An output is one of the places to save logging information
859# The format for an output can be:
860# x:stderr
861# output goes to stderr
862# x:syslog:name
863# use syslog for the output and use the given name as the ident
864# x:file:file_path
865# output to a file, with the given filepath
866# In all case the x prefix is the minimal level, acting as a filter
867# 1: DEBUG
868# 2: INFO
869# 3: WARNING
870# 4: ERROR
871#
872# Multiple output can be defined, they just need to be separated by spaces.
873# e.g. to log all warnings and errors to syslog under the libvirtd ident:
874#log_outputs="3:syslog:libvirtd"
875#
876
877# Log debug buffer size: default 64
878# The daemon keeps an internal debug log buffer which will be dumped in case
879# of crash or upon receiving a SIGUSR2 signal. This setting allows to override
880# the default buffer size in kilobytes.
881# If value is 0 or less the debug log buffer is deactivated
882#log_buffer_size = 64
883
884To configure logging parameters for qemu the below pillar structure and logging parameters should be used:
885
886 nova:
887 compute:
888 qemu:
889 logging:
890 handler: logd
891 virtlog:
892 enabled: true
893 level: 4
894 filters: '3:remote 3:event'
895 outputs: '4:syslog:virtlogd'
896 max_clients: 512
897 max_size: 2097100
898 max_backups: 2
899
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300900Inject password to VM
901---------------------
902
903By default nova blocks up any inject to VM because 'inject_partition' param is equal '-2'
904If you want to inject password to VM, you will need to define 'inject_partition' greater or equal to '-1' and define 'inject_password' to 'True'
905
906For example:
907
908 nova:
909 compute:
910 inject_partition: '-1'
911 inject_password: True
912
913# Allow the injection of an admin password for instance only at ``create`` and
914# ``rebuild`` process.
915#
916# There is no agent needed within the image to do this. If *libguestfs* is
917# available on the host, it will be used. Otherwise *nbd* is used. The file
918# system of the image will be mounted and the admin password, which is provided
919# in the REST API call will be injected as password for the root user. If no
920# root user is available, the instance won't be launched and an error is thrown.
921# Be aware that the injection is *not* possible when the instance gets launched
922# from a volume.
923#
924# Possible values:
925#
926# * True: Allows the injection.
927# * False (default): Disallows the injection. Any via the REST API provided
928# admin password will be silently ignored.
929#
930# Related options:
931#
932# * ``inject_partition``: That option will decide about the discovery and usage
933# of the file system. It also can disable the injection at all.
934# (boolean value)
935
936You can read more about injecting the administrator password here:
937 https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
938
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +0300939Enable libvirt control channel over TLS
940---------------------
941
942By default TLS is disabled.
943
944Enable TLS transport.
945
946 compute:
947 libvirt:
948 tls:
949 enabled: True
950
951You able to set custom certificates in pillar:
952
953 nova:
954 compute:
955 libvirt:
956 tls:
957 key: (certificate content)
958 cert: (certificate content)
959 cacert: (certificate content)
960 client:
961 key: (certificate content)
962 cert: (certificate content)
963
964You can read more about live migration over TLS here:
965 https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300966
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +0300967Enable transport + authentication for VNC over TLS
968---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +0300969# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +0300970
971By default communication between nova-novncproxy and qemu service is unsecure.
972
973compute:
974 qemu:
975 vnc:
976 tls:
977 enabled: True
978
979controller:
980 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +0300981 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +0300982 tls:
983 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +0300984 # This section responsible for communication between nova-novncproxy and qemu service
985 vencrypt:
986 tls:
987 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +0300988
989You able to set custom certificates in pillar:
990
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +0300991nova:
992 compute:
993 qemu:
994 vnc:
995 tls:
996 cacert (certificate content)
997 cert (certificate content)
998 key (certificate content)
999
1000nova:
1001 controller:
1002 novncproxy:
1003 tls:
1004 server:
1005 cert (certificate content)
1006 key (certificate content)
1007 vencrypt:
1008 tls:
1009 cacert (certificate content)
1010 cert (certificate content)
1011 key (certificate content)
1012
1013
1014You can read more about it here:
1015 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1016
1017Enable communication between noVNC proxy and client machine over TLS
1018---------------------
1019
1020By default communication between noVNC proxy and client machine is unsecure.
1021
1022 controller:
1023 novncproxy:
1024 tls:
1025 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001026
1027 nova:
1028 controller:
1029 novncproxy:
1030 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001031 server:
1032 cert (certificate content)
1033 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001034
1035You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001036 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001037
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001038Documentation and Bugs
1039======================
1040
1041To learn how to install and update salt-formulas, consult the documentation
1042available online at:
1043
1044 http://salt-formulas.readthedocs.io/
1045
1046In the unfortunate event that bugs are discovered, they should be reported to
1047the appropriate issue tracker. Use Github issue tracker for specific salt
1048formula:
1049
1050 https://github.com/salt-formulas/salt-formula-nova/issues
1051
1052For feature requests, bug reports or blueprints affecting entire ecosystem,
1053use Launchpad salt-formulas project:
1054
1055 https://launchpad.net/salt-formulas
1056
1057You can also join salt-formulas-users team and subscribe to mailing list:
1058
1059 https://launchpad.net/~salt-formulas-users
1060
1061Developers wishing to work on the salt-formulas projects should always base
1062their work on master branch and submit pull request against specific formula.
1063
1064 https://github.com/salt-formulas/salt-formula-nova
1065
1066Any questions or feedback is always welcome so feel free to join our IRC
1067channel:
1068
1069 #salt-formulas @ irc.freenode.net