blob: 59215b1828c5cec8c0ea66dd674e35a58388399e [file] [log] [blame]
Filip Pytloun4a72d792015-10-06 16:28:32 +02001
Aleš Komárek72152852017-04-11 13:48:48 +02002============
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03003Usage
Aleš Komárek72152852017-04-11 13:48:48 +02004============
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
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030017Nova services on the controller node:
Filip Pytloun4a72d792015-10-06 16:28:32 +020018
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
Michel Nederlof8ff99332017-10-23 14:29:15 +020032 dhcp_domain: novalocal
Dzmitry Stremkouskife346fc2020-01-30 18:29:29 +010033 vif_plugging_timeout: 300
34 vif_plugging_is_fatal: false
35 instance_build_timeout: 600
36 use_cow_images: False
37 force_raw_images: True
38 snapshot_image_format: qcow2
39 images_type: default
Ivan Berezovskiy689e6ea2019-11-14 20:17:58 +040040 concurrency:
41 lock_path: '/var/lib/nova/tmp'
sgarbuzcc02c7f2018-10-25 14:29:30 +030042 consoleauth:
43 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020044 bind:
45 public_address: 10.0.0.122
46 public_name: openstack.domain.com
47 novncproxy_port: 6080
48 database:
49 engine: mysql
50 host: 127.0.0.1
51 port: 3306
52 name: nova
53 user: nova
54 password: pwd
55 identity:
56 engine: keystone
57 host: 127.0.0.1
58 port: 35357
59 user: nova
60 password: pwd
61 tenant: service
Dzmitry Stremkouski9f743222019-05-26 01:20:42 +020062 interface: internal
63 valid_interfaces:
64 - internal
Filip Pytloun4a72d792015-10-06 16:28:32 +020065 message_queue:
66 engine: rabbitmq
67 host: 127.0.0.1
68 port: 5672
69 user: openstack
70 password: pwd
71 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000072 pci:
73 alias:
74 alias1:
75 device_type: "type-PF"
76 name: "a1"
77 product_id: "154d"
78 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020079 network:
80 engine: neutron
81 host: 127.0.0.1
82 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020083 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020084 identity:
85 engine: keystone
86 host: 127.0.0.1
87 port: 35357
88 user: neutron
89 password: pwd
90 tenant: service
91 metadata:
92 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010093 audit:
94 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010095 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030096 barbican:
97 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020098
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030099Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200100
101.. code-block:: yaml
102
103 nova:
104 controller:
105 version: juno
106 source:
107 engine: pkg
108 address: http://...
109 ....
110
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300111Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200112
113.. code-block:: yaml
114
115 nova:
116 controller:
117 ....
118 message_queue:
119 engine: rabbitmq
120 members:
121 - host: 10.0.16.1
122 - host: 10.0.16.2
123 - host: 10.0.16.3
124 user: openstack
125 password: pwd
126 virtual_host: '/openstack'
127 ....
128
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300129Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100130
131.. code-block:: yaml
132
133 nova:
134 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100135 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100136 enabled: true
137 ....
138 filter_factory: 'keystonemiddleware.audit:filter_factory'
139 map_file: '/etc/pycadf/nova_api_audit_map.conf'
140 ....
141
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300142Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200143
144.. code-block:: yaml
145
146 nova:
147 controller:
148 cors:
149 allowed_origin: https:localhost.local,http:localhost.local
150 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
151 allow_methods: GET,PUT,POST,DELETE,PATCH
152 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
153 allow_credentials: True
154 max_age: 86400
155
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300156Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400157
158.. code-block:: yaml
159
160 nova:
161 controller:
162 ....
163 policy:
164 context_is_admin: 'role:admin or role:administrator'
165 'compute:create': 'rule:admin_or_owner'
166 # Add key without value to remove line from policy.json
167 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200168
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300169Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300170
171.. code-block:: yaml
172
173 nova:
174 controller:
175 ....
176 barbican:
177 enabled: true
178
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000179Define aliases for PCI devices:
180.. code-block:: yaml
181
182 nova:
183 controller:
184 ...
185 pci:
186 alias:
187 alias1:
188 device_type: "type-PF"
189 name: "a1"
190 product_id: "154d"
191 vendor_id: "8086"
192
Jiri Broulik789179a2018-02-13 16:16:46 +0100193Enable cells update:
194
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300195.. note:: Useful when upgrading Openstack. To update cells to test
196 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100197
198.. code-block:: yaml
199
200 nova:
201 controller:
202 update_cells: true
203
Dzmitry Stremkouskif8497672019-11-03 10:36:46 +0100204Increase number of chunks for online db migrations:
205
206.. note:: This only should be done in offline as large number of
207 rows locked by this process may cause service outage, which
208 may not be expected.
209
210.. code-block:: yaml
211
212 nova:
213 controller:
214 db_migrations:
215 max_count: 5000000
Kirill Bespalov64617172017-07-11 14:43:14 +0300216
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300217Configuring TLS communications
218------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300219
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300220.. note:: By default system wide installed CA certs are used,
221 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300222
223- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300224
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300225 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300226
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300227 nova:
228 compute:
229 message_queue:
230 port: 5671
231 ssl:
232 enabled: True
233 (optional) cacert: cert body if the cacert_file does not exists
234 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
235 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300236
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300237- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300238
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300239 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300240
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300241 nova:
242 controller:
243 database:
244 ssl:
245 enabled: True
246 (optional) cacert: cert body if the cacert_file does not exists
247 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300248
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300249- **Openstack HTTPS API**
250
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300251 Set the ``https`` as protocol at ``nova:compute`` and
252 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300253
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300254 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300255
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300256 nova:
257 controller :
258 identity:
259 protocol: https
260 (optional) cacert_file: /etc/openstack/proxy.pem
261 network:
262 protocol: https
263 (optional) cacert_file: /etc/openstack/proxy.pem
264 glance:
265 protocol: https
266 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300267
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300268 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300269
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300270 nova:
271 compute:
272 identity:
273 protocol: https
274 (optional) cacert_file: /etc/openstack/proxy.pem
275 network:
276 protocol: https
277 (optional) cacert_file: /etc/openstack/proxy.pem
278 image:
279 protocol: https
280 (optional) cacert_file: /etc/openstack/proxy.pem
281 ironic:
282 protocol: https
283 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300284
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300285.. note:: Barbican, Cinder, and placement url endpoints are discovering
286 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300287
Martin Polreichdbf4f142019-12-17 14:19:44 +0100288Change default service policy configuration:
289--------------------------------------------
290
291.. code-block:: yaml
292
293 nova:
294 controller:
295 policy:
296 'context_is_admin': 'role:admin or role:administrator'
297 'compute:create': 'rule:admin_or_owner'
298 # Add key without value to remove line from policy.json
299 'compute:create:attach_network':
300
Taras Khlivnyak0d2606d2021-02-09 13:47:27 +0200301Configure host_subset_size
302--------------------------
303
304.. code-block:: yaml
305
306 nova:
307 controller:
308 host_subset_size: 1
309
Martin Polreichdbf4f142019-12-17 14:19:44 +0100310
Filip Pytloun4a72d792015-10-06 16:28:32 +0200311Compute nodes
312-------------
313
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300314Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200315
316.. code-block:: yaml
317
318 nova:
319 compute:
320 version: juno
321 enabled: true
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300322 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300323 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100324 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200325 aggregates:
326 - hosts_with_fc
327 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200328 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200329 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400330 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300331 my_ip: 10.1.0.16
Ivan Berezovskiy689e6ea2019-11-14 20:17:58 +0400332 concurrency:
333 lock_path: '/var/lib/nova/tmp'
Filip Pytloun4a72d792015-10-06 16:28:32 +0200334 bind:
335 vnc_address: 172.20.0.100
336 vnc_port: 6080
337 vnc_name: openstack.domain.com
338 vnc_protocol: http
339 database:
340 engine: mysql
341 host: 127.0.0.1
342 port: 3306
343 name: nova
344 user: nova
345 password: pwd
346 identity:
347 engine: keystone
348 host: 127.0.0.1
349 port: 35357
350 user: nova
351 password: pwd
352 tenant: service
353 message_queue:
354 engine: rabbitmq
355 host: 127.0.0.1
356 port: 5672
357 user: openstack
358 password: pwd
359 virtual_host: '/openstack'
360 image:
361 engine: glance
362 host: 127.0.0.1
363 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000364 pci:
365 alias:
366 alias1:
367 device_type: "type-PF"
368 name: "a1"
369 product_id: "154d"
370 vendor_id: "8086"
Oleksandr Pidrepnyid9bab1b2019-02-20 12:48:17 +0200371 passthrough_whitelist:
372 - vendor_id: "10de"
373 product_id: "1db4"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200374 network:
375 engine: neutron
376 host: 127.0.0.1
377 port: 9696
378 identity:
379 engine: keystone
380 host: 127.0.0.1
381 port: 35357
382 user: neutron
383 password: pwd
384 tenant: service
385 qemu:
386 max_files: 4096
387 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300388 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200389
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300390Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
391Each process should have uniq host identifier. However multiple computes might be running on
392single host. It is not recommended to have multiple computes running on different hosts that
393manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
394
395.. code-block:: yaml
396
397 nova:
398 compute:
399 compute_driver: vmwareapi.VMwareVCDriver
400 vmware:
401 host_username: vmware
402 host_password: vmware
403 cluster_name: vmware_cluster01
404 host_ip: 1.2.3.4
405
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300406Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200407
408.. code-block:: yaml
409
410 nova:
411 compute:
412 enabled: true
413 ...
414 qemu:
415 user: nova
416 group: cinder
417 dynamic_ownership: 1
418
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300419Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300420
421.. code-block:: yaml
422
423 nova:
424 compute:
425 enabled: true
426 ...
427 user:
428 groups:
429 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200430
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300431Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200432
433.. code-block:: yaml
434
435 nova:
436 compute:
437 enabled: true
438 ...
439 networking: contrail
440
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000441Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200442
443.. code-block:: yaml
444
445 nova:
446 compute:
447 enabled: true
448 ...
449 cache:
450 engine: memcached
451 members:
452 - host: 127.0.0.1
453 port: 11211
454 - host: 127.0.0.1
455 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000456 security:
457 enabled: true
458 strategy: ENCRYPT
459 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200460
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300461Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200462
463.. code-block:: yaml
464
465 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300466 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200467 ....
468 message_queue:
469 engine: rabbitmq
470 members:
471 - host: 10.0.16.1
472 - host: 10.0.16.2
473 - host: 10.0.16.3
474 user: openstack
475 password: pwd
476 virtual_host: '/openstack'
477 ....
478
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300479Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000480
481.. code-block:: yaml
482
483 nova:
484 compute:
485 enabled: true
486 ...
487 ceph:
488 ephemeral: yes
489 rbd_pool: nova
490 rbd_user: nova
491 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300492 ....
maxstack39e6aca2016-05-04 13:50:13 +0000493
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300494Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300495
496.. code-block:: yaml
497
498 nova:
499 compute:
500 enabled: true
501 ...
502 lvm:
503 ephemeral: yes
504 images_volume_group: nova_vg
505
506 linux:
507 storage:
508 lvm:
509 nova_vg:
510 name: nova_vg
511 devices:
512 - /dev/sdf
513 - /dev/sdd
514 - /dev/sdg
515 - /dev/sde
516 - /dev/sdc
517 - /dev/sdj
518 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000519
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300520Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300521
522.. code-block:: yaml
523
524 nova:
525 compute:
526 ....
527 barbican:
528 enabled: true
529
Oleksandr Pidrepnyid9bab1b2019-02-20 12:48:17 +0200530Define aliases for a PCI passthrough devices:
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000531.. code-block:: yaml
532
533 nova:
534 compute:
535 ...
536 pci:
537 alias:
538 alias1:
539 device_type: "type-PF"
540 name: "a1"
541 product_id: "154d"
542 vendor_id: "8086"
543
Oleksandr Pidrepnyid9bab1b2019-02-20 12:48:17 +0200544Define white list of PCI devices available to VMs:
545.. code-block:: yaml
546
547 nova:
548 compute:
549 ...
550 pci:
551 passthrough_whitelist:
552 - vendor_id: "10de"
553 product_id: "1db4"
554
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300555Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200556
557.. code-block:: yaml
558
559 nova:
560 controller:
561 enabled: true
562 ...
563 metadata:
564 bind:
565 address: 1.2.3.4
566 port: 8776
567
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200568Define multipath for nova compute:
569
570.. code-block:: yaml
571
572 nova:
573 compute:
574 ....
575 libvirt:
576 volume_use_multipath: True
577
Oleh Hryhorov5add3b22019-03-06 17:00:00 +0000578To disable or enable StrictHostKeyChecking and discover
579compute nodes fingerprints the below pillar should be used:
580
581.. code-block:: yaml
582
583 nova:
584 compute:
585 ....
586 openssh:
587 stricthostkeychecking: True
588 discover_compute_hosts: True
589
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100590Client role
591-----------
592
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300593Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300594
595.. code-block:: yaml
596
597 nova:
598 compute:
599 instances_path: /mnt/nova/instances
600
601 linux:
602 storage:
603 enabled: true
604 mount:
605 nfs_nova:
606 enabled: true
607 path: ${nova:compute:instances_path}
608 device: 172.31.35.145:/data
609 file_system: nfs
610 opts: rw,vers=3
611
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300612Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100613
614.. code-block:: yaml
615
616 nova:
617 client:
618 enabled: true
Dzmitry Stremkouski48410002019-11-22 20:14:21 +0100619 resources:
620 v21:
621 admin_identity:
622 endpoint_type: internalURL
623 flavor:
624 flavor1:
625 flavor_id: 10
626 ram: 4096
627 disk: 10
628 vcpus: 1
629 flavor2:
630 flavor_id: auto
631 ram: 4096
632 disk: 20
633 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100634
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300635Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100636
637.. code-block:: yaml
638
639 nova:
640 client:
641 enabled: true
642 server:
643 identity:
644 availability_zones:
645 - availability_zone_01
646 - availability_zone_02
647
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300648Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200649
650.. code-block:: yaml
651
652 nova:
653 client:
654 enabled: true
Dzmitry Stremkouski48410002019-11-22 20:14:21 +0100655 resources:
656 v21:
657 admin_identity:
658 aggregates:
659 aggregate1: {}
660 aggregate2:
661 metadata: "..."
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200662
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300663Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300664
665.. code-block:: yaml
666
667 nova:
668 controller:
669 upgrade_levels:
670 compute: juno
671
672 nova:
673 compute:
674 upgrade_levels:
675 compute: juno
676
Petr Jedinýd855ef22017-03-06 22:24:33 +0100677SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100678------
679
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300680Add ``PciPassthroughFilter`` into scheduler filters and NICs on
681specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100682
683.. code-block:: yaml
684
685 nova:
686 controller:
687 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000688 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100689
690 nova:
691 compute:
692 sriov:
693 nic_one:
694 devname: eth1
695 physical_network: physnet1
696
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000697.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
698 nova.conf file in appropriate format.
699
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100700CPU pinning & Hugepages
701-----------------------
702
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300703CPU pinning of virtual machine instances to dedicated physical
704CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100705
706.. code-block:: yaml
707
708 nova:
709 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000710 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100711
712 nova:
713 compute:
714 vcpu_pin_set: 2,3,4,5
715 hugepages:
716 mount_points:
717 - path: /mnt/hugepages_1GB
718 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100719
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200720Custom Scheduler filters
721------------------------
722
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300723If you have a custom filter, that needs to be included in the
724scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200725
726.. code-block:: yaml
727
728 nova:
729 controller:
730 scheduler_custom_filters:
731 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
732
733 # 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 +0000734 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200735
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400736 # Since Queens version a sequence could be used as well:
737 ~scheduler_default_filters:
738 - DifferentHostFilter
739 - SameHostFilter
740 ...
741 - MyCustomFilter
742
743
Michel Nederlofeb566f62017-04-21 15:37:47 +0200744Hardware Trip/Unmap Support
745---------------------------
746
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300747To enable TRIM support for ephemeral images (thru nova managed
748images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200749
750.. code-block:: yaml
751
752 nova:
753 compute:
754 libvirt:
755 hw_disk_discard: unmap
756
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300757To actually utilize this feature, the following metadata must be
758set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200759
760.. code-block:: bash
761
762 glance image-update --property hw_scsi_model=virtio-scsi <image>
763 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100764
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000765Scheduler Host Manager
766----------------------
767
768Specify a custom host manager.
769
Thom Gerdesec00afd2017-04-07 18:06:59 +0000770libvirt CPU mode
771----------------
772
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300773Allow setting the model of CPU that is exposed to a VM. This
774allows for better support live migration between hypervisors with
775different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200776
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000777.. code-block:: yaml
778
779 nova:
780 controller:
781 scheduler_host_manager: ironic_host_manager
782
Thom Gerdesec00afd2017-04-07 18:06:59 +0000783 compute:
784 cpu_mode: host-model
785
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200786Nova compute cpu model
787----------------------
788
789.. code-block:: yaml
790
791 nova:
792 compute:
793 cpu_mode: custom
794 libvirt:
795 cpu_model: IvyBridge
796
Oleksandr Pidrepnyief9fd782019-03-04 19:18:19 +0200797RNG (Random Number Generator) device path
798----------------------
799
800The path to an RNG (Random Number Generator) device that will be used
801as the source of entropy on the host.
802The recommended source of entropy is /dev/urandom.
803Permitted options are: /dev/random, /dev/urandom or /dev/hwrng.
804Default: /dev/urandom
805
806.. code-block:: yaml
807
808 nova:
809 controller:
810 libvirt:
811 rng_dev_path: /dev/random
812
813 compute:
814 libvirt:
815 rng_dev_path: /dev/random
816
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200817
Michel Nederloff7eefb22017-07-10 11:14:33 +0200818Nova compute workarounds
819------------------------
820
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300821Live snapshotting is disabled by default in nova. To enable
822this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200823
824From manual:
825
826.. code-block:: yaml
827
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300828 When using libvirt 1.2.2 live snapshots fail intermittently under load
829 (likely related to concurrent libvirt/qemu operations). This config
830 option provides a mechanism to disable live snapshot, in favor of cold
831 snapshot, while this is resolved. Cold snapshot causes an instance
832 outage while the guest is going through the snapshotting process.
833
834 For more information, refer to the bug report:
835
836 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200837
838Configurable pillar data:
839
840.. code-block:: yaml
841
842 nova:
843 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200844 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200845 disable_libvirt_livesnapshot: False
846
Michel Nederlofb51a5142017-06-27 08:31:35 +0200847Config drive options
848--------------------
849
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300850See example below on how to configure the options for the
851config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200852
853.. code-block:: yaml
854
855 nova:
856 compute:
857 config_drive:
858 forced: True # Default: True
859 cdrom: True # Default: False
860 format: iso9660 # Default: vfat
861 inject_password: False # Default: False
862
Michel Nederloff81919b2017-11-20 09:37:07 +0100863Number of concurrent live migrates
864----------------------------------
865
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300866Default is to have no concurrent live migrations (so 1
867live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100868
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300869Excerpt from config options page
870https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100871
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300872Maximum number of live migrations to run concurrently. This limit is
873enforced to avoid outbound live migrations overwhelming the host/network
874and causing failures. It is not recommended that you change this unless
875you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100876
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300877Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100878
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300879- 0 : treated as unlimited.
880- Negative value defaults to 0.
881- Any positive integer representing maximum number of live migrations
882 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100883
884To configure this option:
885
886.. code-block:: yaml
887
888 nova:
889 compute:
890 max_concurrent_live_migrations: 1 # (1 is the default)
891
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300892Live migration with auto converge
893----------------------------------
894
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300895Auto converge throttles down CPU if a progress of on-going live
896migration is slow
897https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300898
899.. code-block:: yaml
900
901 nova:
902 compute:
903 libvirt:
904 live_migration_permit_auto_converge: False # (False is the default)
905
906.. code-block:: yaml
907
908 nova:
909 controller:
910 libvirt:
911 live_migration_permit_auto_converge: False # (False is the default)
912
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400913Enhanced logging with logging.conf
914----------------------------------
915
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300916By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400917
918That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400919
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300920* ``openstack_log_appender``
921 Set to true to enable log_config_append for all OpenStack services
922
923* ``openstack_fluentd_handler_enabled``
924 Set to true to enable FluentHandler for all Openstack services
925
926* ``openstack_ossyslog_handler_enabled``
927 Set to true to enable OSSysLogHandler for all Openstack services
928
929Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
930are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400931
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400932Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400933
934.. code-block:: yaml
935
936 nova:
937 controller:
938 logging:
939 log_appender: true
940 log_handlers:
941 watchedfile:
942 enabled: true
943 fluentd:
944 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200945 ossyslog:
946 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400947
948 compute:
949 logging:
950 log_appender: true
951 log_handlers:
952 watchedfile:
953 enabled: true
954 fluentd:
955 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200956 ossyslog:
957 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000958
Vasyl Saienko7243a952018-05-11 21:26:54 +0300959The log level might be configured per logger by using the
960following pillar structure:
961
962.. code-block:: yaml
963
964 nova:
965 compute:
966 logging:
967 loggers:
968 <logger_name>:
969 level: WARNING
970
971 nova:
972 compute:
973 logging:
974 loggers:
975 <logger_name>:
976 level: WARNING
977
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000978Configure syslog parameters for libvirtd
979----------------------------------------
980
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300981To configure syslog parameters for libvirtd the below pillar
982structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000983by libvirtd. These values might be known from the documentation.
984
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300985.. code-block:: yaml
986
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000987 nova:
988 compute:
989 libvirt:
990 logging:
991 level: 3
992 filters: '3:remote 4:event'
993 outputs: '3:syslog:libvirtd'
994 buffer_size: 64
995
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300996Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000997
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300998Logging level: 4 errors, 3 warnings, 2 information, 1 debug
999basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001000
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001001Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001002
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001003A filter allows to select a different logging level for a given category
1004of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001005
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001006The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001007
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001008* ``x:name``
1009* ``x:+name``
1010 where name is a string which is matched against source file name,
1011 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
1012 tells libvirt to log stack trace for each message matching name,
1013 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001014
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001015* ``1: DEBUG``
1016* ``2: INFO``
1017* ``3: WARNING``
1018* ``4: ERROR``
1019
1020Multiple filter can be defined in a single @filters, they just
1021need to be separated by spaces.
1022
1023For example, to only get warning or errors from the remote layer
1024and only errors from the event layer: ``log_filters="3:remote 4:event``
1025
1026Logging outputs:
1027
1028An output is one of the places to save logging information
1029The format for an output can be:
1030
1031* ``x:stderr``
1032 Output goes to stderr
1033
1034* ``x:syslog:name``
1035 Use syslog for the output and use the given name as the ident
1036
1037* ``x:file:file_path``
1038 output to a file, with the given filepath
1039
1040 In all case the x prefix is the minimal level, acting as a filter
1041
1042* ``1: DEBUG``
1043* ``2: INFO``
1044* ``3: WARNING``
1045* ``4: ERROR``
1046
1047Multiple output can be defined, they just need to be separated by spaces.
1048For example, to log all warnings and errors to syslog under the libvirt
1049dident: ``log_outputs="3:syslog:libvirtd``
1050
1051Log debug buffer size: default 64
1052The daemon keeps an internal debug log buffer which will be dumped
1053in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
1054allows to override the default buffer size in kilobytes.
1055If value is ``0`` or less the debug log buffer is deactivated
1056``log_buffer_size = 64``
1057
1058To configure the logging parameters for QEMU, the below pillar
1059structure and logging parameters should be used:
1060
1061.. code-block:: yaml
1062
1063 nova:
1064 compute:
1065 qemu:
1066 logging:
1067 handler: logd
1068 virtlog:
1069 enabled: true
1070 level: 4
1071 filters: '3:remote 3:event'
1072 outputs: '4:syslog:virtlogd'
1073 max_clients: 512
1074 max_size: 2097100
1075 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001076
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001077Inject password to VM
1078---------------------
1079
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001080By default nova blocks up any inject to VM because
1081``inject_partition`` param is equal to ``-2``.
1082If you want to inject password to VM, you will need to
1083define ``inject_partition`` greater or equal to ``-1`` and
1084define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001085
1086For example:
1087
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001088.. code-block:: yaml
1089
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001090 nova:
1091 compute:
1092 inject_partition: '-1'
1093 inject_password: True
1094
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001095Allow the injection of an admin password for instance only at
1096``create`` and ``rebuild`` process.
1097
1098There is no agent needed within the image to do this. If *libguestfs* is
1099available on the host, it will be used. Otherwise *nbd* is used. The file
1100system of the image will be mounted and the admin password, which is provided
1101in the REST API call will be injected as password for the root user. If no
1102root user is available, the instance won't be launched and an error is thrown.
1103Be aware that the injection is *not* possible when the instance gets launched
1104from a volume.
1105
1106Possible values:
1107
1108* ``True``
1109 Allows the injection
1110
1111* ``False`` (default)
1112 Disallows the injection. Any via the REST API provided
1113 admin password will be silently ignored.
1114
1115Related options:
1116
1117* ``inject_partition``
1118 Decides about the discovery and usage of the file system.
1119 It also can disable the injection at all.
1120 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001121
1122You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001123https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001124
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001125Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001126---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001127
1128By default TLS is disabled.
1129
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001130Enable TLS transport:
1131
1132.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001133
1134 compute:
1135 libvirt:
1136 tls:
1137 enabled: True
1138
1139You able to set custom certificates in pillar:
1140
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001141.. code-block:: yaml
1142
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001143 nova:
1144 compute:
1145 libvirt:
1146 tls:
1147 key: (certificate content)
1148 cert: (certificate content)
1149 cacert: (certificate content)
1150 client:
1151 key: (certificate content)
1152 cert: (certificate content)
1153
Dmitry Teselkin70862022019-04-18 16:43:50 +03001154It is possible to limit allowed SSL / TLS ciphers using libvirt's tls_priority:
1155
1156.. code-block:: yaml
1157
1158 nova:
1159 compute:
1160 libvirt:
1161 tls:
1162 priority: <TLS priority string>
1163
1164Example priority strings are:
1165
1166- The system imposed security level:
1167
1168.. code-block:: text
1169
1170 "SYSTEM"
1171
1172- The default priority without the HMAC-MD5:
1173
1174.. code-block:: text
1175
1176 "NORMAL:-MD5"
1177
1178- Specifying RSA with AES-128-CBC:
1179
1180.. code-block:: text
1181
1182 "NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
1183
1184- Specifying the defaults plus ARCFOUR-128:
1185
1186.. code-block:: text
1187
1188 "NORMAL:+ARCFOUR-128"
1189
1190- Enabling the 128-bit secure ciphers, while disabling TLS 1.0:
1191
1192.. code-block:: text
1193
1194 "SECURE128:-VERS-TLS1.0"
1195
1196- Enabling the 128-bit and 192-bit secure ciphers, while disabling all TLS
1197 versions except TLS 1.2:
1198
1199.. code-block:: text
1200
1201 "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2"
1202
1203More on TLS Priority Strings:
1204
1205- https://gnutls.org/manual/html_node/Priority-Strings.html
1206
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001207Controlling access by `tls_allowed_dn_list`.
1208Enable an access control list of client certificate Distinguished Names (DNs)
1209which can connect to the TLS port on this server. The default is that DNs are
1210not checked. This list may contain wildcards such as
1211"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1212for the format of the wildcards.
1213Note that if this is an empty list, no client can connect.
1214Note also that GnuTLS returns DNs without spaces after commas between
1215the fields (and this is what we check against), but the openssl x509 tool
1216shows spaces.
1217
1218.. code-block:: yaml
1219
1220 nova:
1221 compute:
1222 libvirt:
1223 tls:
1224 tls_allowed_dn_list:
1225 host1:
1226 enabled: true
1227 value: 'C=foo,CN=cmp1'
1228 host2:
1229 enabled: true
1230 value: 'C=foo,CN=cmp2'
1231
1232
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001233You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001234https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001235
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001236Enable transport + authentication for VNC over TLS
1237---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001238# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001239
1240By default communication between nova-novncproxy and qemu service is unsecure.
1241
1242compute:
1243 qemu:
1244 vnc:
1245 tls:
1246 enabled: True
1247
1248controller:
1249 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001250 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001251 tls:
1252 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001253 # This section responsible for communication between nova-novncproxy and qemu service
1254 vencrypt:
1255 tls:
1256 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001257
1258You able to set custom certificates in pillar:
1259
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001260nova:
1261 compute:
1262 qemu:
1263 vnc:
1264 tls:
1265 cacert (certificate content)
1266 cert (certificate content)
1267 key (certificate content)
1268
1269nova:
1270 controller:
1271 novncproxy:
1272 tls:
1273 server:
1274 cert (certificate content)
1275 key (certificate content)
1276 vencrypt:
1277 tls:
1278 cacert (certificate content)
1279 cert (certificate content)
1280 key (certificate content)
1281
1282
1283You can read more about it here:
1284 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1285
1286Enable communication between noVNC proxy and client machine over TLS
1287---------------------
1288
1289By default communication between noVNC proxy and client machine is unsecure.
1290
1291 controller:
1292 novncproxy:
1293 tls:
1294 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001295
1296 nova:
1297 controller:
1298 novncproxy:
1299 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001300 server:
1301 cert (certificate content)
1302 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001303
1304You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001305 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001306
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001307Enable x509 and ssl communication between Nova and Galera cluster.
1308---------------------
1309By default communication between Nova and Galera is unsecure.
1310
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001311nova:
1312 controller:
1313 database:
1314 x509:
1315 enabled: True
1316
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001317You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001318
1319nova:
1320 controller:
1321 database:
1322 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001323 cacert: (certificate content)
1324 cert: (certificate content)
1325 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001326
1327You can read more about it here:
1328 https://docs.openstack.org/security-guide/databases/database-access-control.html
1329
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001330Configure nova to use service user tokens:
1331========
1332Long-running operations such as live migration or snapshot can sometimes overrun the
1333expiry of the user token. In such cases, post operations such as cleaning up after a
1334live migration can fail when the nova-compute service needs to cleanup resources in
1335other services, such as in the block-storage (cinder) or networking (neutron) services.
1336
1337This patch enables nova to use service user tokens to supplement the regular user token
1338used to initiate the operation. The identity service (keystone) will then authenticate
1339a request using the service user token if the user token has already expired.
1340
1341.. code-block:: yaml
1342
1343 nova:
1344 controller:
1345 enabled: True
1346 ...
1347 service_user:
1348 enabled: True
1349 user_domain_id: default
1350 project_domain_id: default
1351 project_name: service
1352 username: nova
1353 password: pswd
1354
1355
obryndzii2ea61412019-01-31 00:55:56 +00001356Nova database connection setup:
1357========
1358
1359.. code-block:: yaml
1360
1361 nova:
1362 controller:
1363 enabled: True
1364 ...
1365 min_pool_size: 100
1366 max_pool_size: 700
1367 max_overflow: 100
1368 retry_interval: 5
1369 max_retries: '-1'
1370 db_max_retries: 3
1371 db_retry_interval: 1
1372 connection_debug: 10
1373 pool_timeout: 120
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001374
Oleksandr Bryndziife715df2019-04-23 15:34:42 +03001375Change default resource quotas using configmap template settings
1376========
1377
1378.. code-block:: yaml
1379
1380 nova:
1381 controller:
1382 configmap:
1383 quota:
1384 instances: 10
1385 cores: 20
1386 ram: 51200
1387 metadata_items: 128
1388 injected_files: 5
1389 injected_file_content_bytes: 10240
1390 injected_file_path_length: 255
1391 key_pairs: 100
1392 server_groups: 10
1393 server_group_members: 10
1394 reservation_expire: 86400
1395 until_refresh: 0
1396 max_age: 0
1397
Roman Lubianyiddd2c712020-03-26 14:08:10 +02001398Set use_db_reconnect for Nova
1399========
1400
1401.. code-block:: yaml
1402
1403 nova:
1404 controller:
1405 database:
1406 use_db_reconnect: true
1407
1408.. code-block:: yaml
1409
1410 nova:
1411 compute:
1412 database:
1413 use_db_reconnect: true
1414
Oleksii Molchanov1f9f6612020-11-19 22:46:05 +02001415Set qemu security_driver
1416========
1417
1418.. code-block:: yaml
1419
1420 nova:
1421 compute:
1422 security_driver: apparmor
1423
Taras Khlivnyakdb4aa582021-08-19 09:48:56 +03001424
1425Change files/directories permissions for nova service:
1426=======================================
1427In order to change file permissions the following should be set:
1428
1429'files' - block to set permissions for files.
1430- full path to file
1431- user ( default value is 'root' ) this parameter is optional.
1432- group ( default value is 'nova' ) this parameter is optional
1433- mode ( default value is '0640' ) this parameter is optional
1434
1435'directories' - block to set permissions for directories.
1436- full path to directory
1437- user ( default value is 'root' ) this parameter is optional
1438- group ( default value is 'nova' ) this parameter is optional
1439- mode ( default value is '0750' ) this parameter is optional
1440
1441.. code-block:: yaml
1442
1443 nova:
1444 files:
1445 /etc/nova/nova.conf:
1446 user: 'root'
1447 group: 'nova'
1448 mode: '0750'
1449 directories:
1450 /etc/nova:
1451 user: 'root'
1452 group: 'nova'
1453 mode: '0750'
1454
1455
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001456Upgrades
1457========
1458
1459Each openstack formula provide set of phases (logical bloks) that will help to
1460build flexible upgrade orchestration logic for particular components. The list
1461of phases might and theirs descriptions are listed in table below:
1462
1463+-------------------------------+------------------------------------------------------+
1464| State | Description |
1465+===============================+======================================================+
1466| <app>.upgrade.service_running | Ensure that all services for particular application |
1467| | are enabled for autostart and running |
1468+-------------------------------+------------------------------------------------------+
1469| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1470| | disabled for autostart and dead |
1471+-------------------------------+------------------------------------------------------+
1472| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1473| | are installed to latest available version. |
1474| | This will not upgrade data plane packages like qemu |
1475| | and openvswitch as usually minimal required version |
1476| | in openstack services is really old. The data plane |
1477| | packages should be upgraded separately by `apt-get |
1478| | upgrade` or `apt-get dist-upgrade` |
1479| | Applying this state will not autostart service. |
1480+-------------------------------+------------------------------------------------------+
1481| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1482+-------------------------------+------------------------------------------------------+
1483| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1484| | cloud before running upgrade. |
1485| | Only non destructive actions will be applied during |
1486| | this phase. Perform service built in service check |
1487| | like (keystone-manage doctor and nova-status upgrade)|
1488+-------------------------------+------------------------------------------------------+
1489| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1490| | phase resources will be gracefully removed from |
1491| | current node if it is allowed. Services for upgraded |
1492| | application will be set to admin disabled state to |
1493| | make sure node will not participate in resources |
1494| | scheduling. For example on gtw nodes this will set |
1495| | all agents to admin disable state and will move all |
1496| | routers to other agents. |
1497+-------------------------------+------------------------------------------------------+
1498| <app>.upgrade.upgrade | This state will basically upgrade application on |
1499| | particular target. Stop services, render |
1500| | configuration, install new packages, run offline |
1501| | dbsync (for ctl), start services. Data plane should |
1502| | not be affected, only OpenStack python services. |
1503+-------------------------------+------------------------------------------------------+
1504| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1505+-------------------------------+------------------------------------------------------+
1506| <app>.upgrade.post | This phase should be launched only when upgrade of |
1507| | the cloud is completed. Cleanup temporary files, |
1508| | perform other post upgrade tasks. |
1509+-------------------------------+------------------------------------------------------+
1510| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1511| | operations, verify do not have dead network |
1512| | agents/compute services) |
1513+-------------------------------+------------------------------------------------------+
Oleksandr Pidrepnyidabe8b22019-06-07 16:18:11 +03001514
1515
1516Don't manage services scheduling while upgrade
1517----------------------------------------------
1518For some special cases, don't manage services scheduling both enable and disable
1519before and after upgrade procedure.
1520
1521If 'manage_service_maintenance: true' or not present - default behavior, disable services
1522before upgrade and enable it after upgrade.
1523If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
1524scheduling before and after upgrade.
1525
1526.. code-block:: yaml
1527
1528 nova:
1529 upgrade:
1530 manage_service_maintenance: false
Dzmitry Stremkouskice8475b2020-07-06 20:02:58 +02001531
1532Execute database maintenance tasks
1533----------------------------------
1534Cleanup stale records from nova database to make it smaller.
1535This is helpful before any upgrade activity.
1536It is safe to execute it generally without maintenance window same as online db_sync.
1537
1538Enable this pillar:
1539
1540.. code-block:: yaml
1541
1542 nova:
1543 controller:
1544 db_purge:
1545 enabled: True
1546
1547Execute state nova.db.db_cleanup to purge stale records:
1548
1549.. code-block:: bash
1550
1551 salt -C 'I@nova:controller:role:primary' state.apply nova.db.db_cleanup -l debug
1552
1553Starting from rocky release it is possible to pass days parameter.
1554If you skip setting it, all records would be archived/purged:
1555
1556.. code-block:: yaml
1557
1558 nova:
1559 controller:
1560 db_purge:
1561 enabled: True
1562 days: 45
1563
1564Control pre-rocky releases parameters:
1565
1566.. code-block:: yaml
1567
1568 nova:
1569 controller:
1570 db_purge:
1571 enabled: True
1572 max_rows: 1000
1573 verbose: True
1574
1575Control rocky+ releases parameters:
1576'days' and 'all' parameters are mutually exclusive.
1577
1578.. code-block:: yaml
1579
1580 nova:
1581 controller:
1582 db_purge:
1583 enabled: True
1584 all: True
1585 verbose: True
1586 all_cells: True
Vladimir Khlyunev76b9e342020-09-15 12:39:55 +04001587
1588
1589Configure filter schedulers
1590---------------------------
1591At this moment only max_instances_per_host for NumInstancesFilter is supported.
1592
1593.. code-block:: yaml
1594
1595 nova:
1596 controller:
1597 filter_scheduler:
1598 max_instances_per_host: 50