blob: 0943db2125a03e526233564c005e67a8bc923e52 [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"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200371 network:
372 engine: neutron
373 host: 127.0.0.1
374 port: 9696
375 identity:
376 engine: keystone
377 host: 127.0.0.1
378 port: 35357
379 user: neutron
380 password: pwd
381 tenant: service
382 qemu:
383 max_files: 4096
384 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300385 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200386
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300387Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
388Each process should have uniq host identifier. However multiple computes might be running on
389single host. It is not recommended to have multiple computes running on different hosts that
390manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
391
392.. code-block:: yaml
393
394 nova:
395 compute:
396 compute_driver: vmwareapi.VMwareVCDriver
397 vmware:
398 host_username: vmware
399 host_password: vmware
400 cluster_name: vmware_cluster01
401 host_ip: 1.2.3.4
402
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300403Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200404
405.. code-block:: yaml
406
407 nova:
408 compute:
409 enabled: true
410 ...
411 qemu:
412 user: nova
413 group: cinder
414 dynamic_ownership: 1
415
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300416Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300417
418.. code-block:: yaml
419
420 nova:
421 compute:
422 enabled: true
423 ...
424 user:
425 groups:
426 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200427
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300428Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200429
430.. code-block:: yaml
431
432 nova:
433 compute:
434 enabled: true
435 ...
436 networking: contrail
437
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000438Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200439
440.. code-block:: yaml
441
442 nova:
443 compute:
444 enabled: true
445 ...
446 cache:
447 engine: memcached
448 members:
449 - host: 127.0.0.1
450 port: 11211
451 - host: 127.0.0.1
452 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000453 security:
454 enabled: true
455 strategy: ENCRYPT
456 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200457
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300458Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200459
460.. code-block:: yaml
461
462 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300463 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200464 ....
465 message_queue:
466 engine: rabbitmq
467 members:
468 - host: 10.0.16.1
469 - host: 10.0.16.2
470 - host: 10.0.16.3
471 user: openstack
472 password: pwd
473 virtual_host: '/openstack'
474 ....
475
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300476Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000477
478.. code-block:: yaml
479
480 nova:
481 compute:
482 enabled: true
483 ...
484 ceph:
485 ephemeral: yes
486 rbd_pool: nova
487 rbd_user: nova
488 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300489 ....
maxstack39e6aca2016-05-04 13:50:13 +0000490
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300491Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300492
493.. code-block:: yaml
494
495 nova:
496 compute:
497 enabled: true
498 ...
499 lvm:
500 ephemeral: yes
501 images_volume_group: nova_vg
502
503 linux:
504 storage:
505 lvm:
506 nova_vg:
507 name: nova_vg
508 devices:
509 - /dev/sdf
510 - /dev/sdd
511 - /dev/sdg
512 - /dev/sde
513 - /dev/sdc
514 - /dev/sdj
515 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000516
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300517Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300518
519.. code-block:: yaml
520
521 nova:
522 compute:
523 ....
524 barbican:
525 enabled: true
526
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000527Define aliases for PCI devices:
528.. code-block:: yaml
529
530 nova:
531 compute:
532 ...
533 pci:
534 alias:
535 alias1:
536 device_type: "type-PF"
537 name: "a1"
538 product_id: "154d"
539 vendor_id: "8086"
540
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300541Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200542
543.. code-block:: yaml
544
545 nova:
546 controller:
547 enabled: true
548 ...
549 metadata:
550 bind:
551 address: 1.2.3.4
552 port: 8776
553
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200554Define multipath for nova compute:
555
556.. code-block:: yaml
557
558 nova:
559 compute:
560 ....
561 libvirt:
562 volume_use_multipath: True
563
Oleh Hryhorov5add3b22019-03-06 17:00:00 +0000564To disable or enable StrictHostKeyChecking and discover
565compute nodes fingerprints the below pillar should be used:
566
567.. code-block:: yaml
568
569 nova:
570 compute:
571 ....
572 openssh:
573 stricthostkeychecking: True
574 discover_compute_hosts: True
575
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100576Client role
577-----------
578
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300579Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300580
581.. code-block:: yaml
582
583 nova:
584 compute:
585 instances_path: /mnt/nova/instances
586
587 linux:
588 storage:
589 enabled: true
590 mount:
591 nfs_nova:
592 enabled: true
593 path: ${nova:compute:instances_path}
594 device: 172.31.35.145:/data
595 file_system: nfs
596 opts: rw,vers=3
597
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300598Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100599
600.. code-block:: yaml
601
602 nova:
603 client:
604 enabled: true
Dzmitry Stremkouski48410002019-11-22 20:14:21 +0100605 resources:
606 v21:
607 admin_identity:
608 endpoint_type: internalURL
609 flavor:
610 flavor1:
611 flavor_id: 10
612 ram: 4096
613 disk: 10
614 vcpus: 1
615 flavor2:
616 flavor_id: auto
617 ram: 4096
618 disk: 20
619 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100620
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300621Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100622
623.. code-block:: yaml
624
625 nova:
626 client:
627 enabled: true
628 server:
629 identity:
630 availability_zones:
631 - availability_zone_01
632 - availability_zone_02
633
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300634Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200635
636.. code-block:: yaml
637
638 nova:
639 client:
640 enabled: true
Dzmitry Stremkouski48410002019-11-22 20:14:21 +0100641 resources:
642 v21:
643 admin_identity:
644 aggregates:
645 aggregate1: {}
646 aggregate2:
647 metadata: "..."
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200648
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300649Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300650
651.. code-block:: yaml
652
653 nova:
654 controller:
655 upgrade_levels:
656 compute: juno
657
658 nova:
659 compute:
660 upgrade_levels:
661 compute: juno
662
Petr Jedinýd855ef22017-03-06 22:24:33 +0100663SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100664------
665
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300666Add ``PciPassthroughFilter`` into scheduler filters and NICs on
667specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100668
669.. code-block:: yaml
670
671 nova:
672 controller:
673 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000674 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100675
676 nova:
677 compute:
678 sriov:
679 nic_one:
680 devname: eth1
681 physical_network: physnet1
682
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000683.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
684 nova.conf file in appropriate format.
685
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100686CPU pinning & Hugepages
687-----------------------
688
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300689CPU pinning of virtual machine instances to dedicated physical
690CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100691
692.. code-block:: yaml
693
694 nova:
695 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000696 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100697
698 nova:
699 compute:
700 vcpu_pin_set: 2,3,4,5
701 hugepages:
702 mount_points:
703 - path: /mnt/hugepages_1GB
704 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100705
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200706Custom Scheduler filters
707------------------------
708
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300709If you have a custom filter, that needs to be included in the
710scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200711
712.. code-block:: yaml
713
714 nova:
715 controller:
716 scheduler_custom_filters:
717 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
718
719 # 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 +0000720 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200721
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400722 # Since Queens version a sequence could be used as well:
723 ~scheduler_default_filters:
724 - DifferentHostFilter
725 - SameHostFilter
726 ...
727 - MyCustomFilter
728
729
Michel Nederlofeb566f62017-04-21 15:37:47 +0200730Hardware Trip/Unmap Support
731---------------------------
732
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300733To enable TRIM support for ephemeral images (thru nova managed
734images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200735
736.. code-block:: yaml
737
738 nova:
739 compute:
740 libvirt:
741 hw_disk_discard: unmap
742
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300743To actually utilize this feature, the following metadata must be
744set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200745
746.. code-block:: bash
747
748 glance image-update --property hw_scsi_model=virtio-scsi <image>
749 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100750
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000751Scheduler Host Manager
752----------------------
753
754Specify a custom host manager.
755
Thom Gerdesec00afd2017-04-07 18:06:59 +0000756libvirt CPU mode
757----------------
758
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300759Allow setting the model of CPU that is exposed to a VM. This
760allows for better support live migration between hypervisors with
761different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200762
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000763.. code-block:: yaml
764
765 nova:
766 controller:
767 scheduler_host_manager: ironic_host_manager
768
Thom Gerdesec00afd2017-04-07 18:06:59 +0000769 compute:
770 cpu_mode: host-model
771
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200772Nova compute cpu model
773----------------------
774
775.. code-block:: yaml
776
777 nova:
778 compute:
779 cpu_mode: custom
780 libvirt:
781 cpu_model: IvyBridge
782
Oleksandr Pidrepnyief9fd782019-03-04 19:18:19 +0200783RNG (Random Number Generator) device path
784----------------------
785
786The path to an RNG (Random Number Generator) device that will be used
787as the source of entropy on the host.
788The recommended source of entropy is /dev/urandom.
789Permitted options are: /dev/random, /dev/urandom or /dev/hwrng.
790Default: /dev/urandom
791
792.. code-block:: yaml
793
794 nova:
795 controller:
796 libvirt:
797 rng_dev_path: /dev/random
798
799 compute:
800 libvirt:
801 rng_dev_path: /dev/random
802
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200803
Michel Nederloff7eefb22017-07-10 11:14:33 +0200804Nova compute workarounds
805------------------------
806
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300807Live snapshotting is disabled by default in nova. To enable
808this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200809
810From manual:
811
812.. code-block:: yaml
813
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300814 When using libvirt 1.2.2 live snapshots fail intermittently under load
815 (likely related to concurrent libvirt/qemu operations). This config
816 option provides a mechanism to disable live snapshot, in favor of cold
817 snapshot, while this is resolved. Cold snapshot causes an instance
818 outage while the guest is going through the snapshotting process.
819
820 For more information, refer to the bug report:
821
822 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200823
824Configurable pillar data:
825
826.. code-block:: yaml
827
828 nova:
829 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200830 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200831 disable_libvirt_livesnapshot: False
832
Michel Nederlofb51a5142017-06-27 08:31:35 +0200833Config drive options
834--------------------
835
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300836See example below on how to configure the options for the
837config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200838
839.. code-block:: yaml
840
841 nova:
842 compute:
843 config_drive:
844 forced: True # Default: True
845 cdrom: True # Default: False
846 format: iso9660 # Default: vfat
847 inject_password: False # Default: False
848
Michel Nederloff81919b2017-11-20 09:37:07 +0100849Number of concurrent live migrates
850----------------------------------
851
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300852Default is to have no concurrent live migrations (so 1
853live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100854
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300855Excerpt from config options page
856https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100857
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300858Maximum number of live migrations to run concurrently. This limit is
859enforced to avoid outbound live migrations overwhelming the host/network
860and causing failures. It is not recommended that you change this unless
861you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100862
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300863Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100864
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300865- 0 : treated as unlimited.
866- Negative value defaults to 0.
867- Any positive integer representing maximum number of live migrations
868 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100869
870To configure this option:
871
872.. code-block:: yaml
873
874 nova:
875 compute:
876 max_concurrent_live_migrations: 1 # (1 is the default)
877
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300878Live migration with auto converge
879----------------------------------
880
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300881Auto converge throttles down CPU if a progress of on-going live
882migration is slow
883https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300884
885.. code-block:: yaml
886
887 nova:
888 compute:
889 libvirt:
890 live_migration_permit_auto_converge: False # (False is the default)
891
892.. code-block:: yaml
893
894 nova:
895 controller:
896 libvirt:
897 live_migration_permit_auto_converge: False # (False is the default)
898
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400899Enhanced logging with logging.conf
900----------------------------------
901
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300902By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400903
904That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400905
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300906* ``openstack_log_appender``
907 Set to true to enable log_config_append for all OpenStack services
908
909* ``openstack_fluentd_handler_enabled``
910 Set to true to enable FluentHandler for all Openstack services
911
912* ``openstack_ossyslog_handler_enabled``
913 Set to true to enable OSSysLogHandler for all Openstack services
914
915Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
916are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400917
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400918Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400919
920.. code-block:: yaml
921
922 nova:
923 controller:
924 logging:
925 log_appender: true
926 log_handlers:
927 watchedfile:
928 enabled: true
929 fluentd:
930 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200931 ossyslog:
932 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400933
934 compute:
935 logging:
936 log_appender: true
937 log_handlers:
938 watchedfile:
939 enabled: true
940 fluentd:
941 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200942 ossyslog:
943 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000944
Vasyl Saienko7243a952018-05-11 21:26:54 +0300945The log level might be configured per logger by using the
946following pillar structure:
947
948.. code-block:: yaml
949
950 nova:
951 compute:
952 logging:
953 loggers:
954 <logger_name>:
955 level: WARNING
956
957 nova:
958 compute:
959 logging:
960 loggers:
961 <logger_name>:
962 level: WARNING
963
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000964Configure syslog parameters for libvirtd
965----------------------------------------
966
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300967To configure syslog parameters for libvirtd the below pillar
968structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000969by libvirtd. These values might be known from the documentation.
970
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300971.. code-block:: yaml
972
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000973 nova:
974 compute:
975 libvirt:
976 logging:
977 level: 3
978 filters: '3:remote 4:event'
979 outputs: '3:syslog:libvirtd'
980 buffer_size: 64
981
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300982Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000983
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300984Logging level: 4 errors, 3 warnings, 2 information, 1 debug
985basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000986
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300987Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000988
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300989A filter allows to select a different logging level for a given category
990of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000991
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300992The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000993
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300994* ``x:name``
995* ``x:+name``
996 where name is a string which is matched against source file name,
997 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
998 tells libvirt to log stack trace for each message matching name,
999 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001000
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001001* ``1: DEBUG``
1002* ``2: INFO``
1003* ``3: WARNING``
1004* ``4: ERROR``
1005
1006Multiple filter can be defined in a single @filters, they just
1007need to be separated by spaces.
1008
1009For example, to only get warning or errors from the remote layer
1010and only errors from the event layer: ``log_filters="3:remote 4:event``
1011
1012Logging outputs:
1013
1014An output is one of the places to save logging information
1015The format for an output can be:
1016
1017* ``x:stderr``
1018 Output goes to stderr
1019
1020* ``x:syslog:name``
1021 Use syslog for the output and use the given name as the ident
1022
1023* ``x:file:file_path``
1024 output to a file, with the given filepath
1025
1026 In all case the x prefix is the minimal level, acting as a filter
1027
1028* ``1: DEBUG``
1029* ``2: INFO``
1030* ``3: WARNING``
1031* ``4: ERROR``
1032
1033Multiple output can be defined, they just need to be separated by spaces.
1034For example, to log all warnings and errors to syslog under the libvirt
1035dident: ``log_outputs="3:syslog:libvirtd``
1036
1037Log debug buffer size: default 64
1038The daemon keeps an internal debug log buffer which will be dumped
1039in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
1040allows to override the default buffer size in kilobytes.
1041If value is ``0`` or less the debug log buffer is deactivated
1042``log_buffer_size = 64``
1043
1044To configure the logging parameters for QEMU, the below pillar
1045structure and logging parameters should be used:
1046
1047.. code-block:: yaml
1048
1049 nova:
1050 compute:
1051 qemu:
1052 logging:
1053 handler: logd
1054 virtlog:
1055 enabled: true
1056 level: 4
1057 filters: '3:remote 3:event'
1058 outputs: '4:syslog:virtlogd'
1059 max_clients: 512
1060 max_size: 2097100
1061 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001062
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001063Inject password to VM
1064---------------------
1065
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001066By default nova blocks up any inject to VM because
1067``inject_partition`` param is equal to ``-2``.
1068If you want to inject password to VM, you will need to
1069define ``inject_partition`` greater or equal to ``-1`` and
1070define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001071
1072For example:
1073
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001074.. code-block:: yaml
1075
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001076 nova:
1077 compute:
1078 inject_partition: '-1'
1079 inject_password: True
1080
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001081Allow the injection of an admin password for instance only at
1082``create`` and ``rebuild`` process.
1083
1084There is no agent needed within the image to do this. If *libguestfs* is
1085available on the host, it will be used. Otherwise *nbd* is used. The file
1086system of the image will be mounted and the admin password, which is provided
1087in the REST API call will be injected as password for the root user. If no
1088root user is available, the instance won't be launched and an error is thrown.
1089Be aware that the injection is *not* possible when the instance gets launched
1090from a volume.
1091
1092Possible values:
1093
1094* ``True``
1095 Allows the injection
1096
1097* ``False`` (default)
1098 Disallows the injection. Any via the REST API provided
1099 admin password will be silently ignored.
1100
1101Related options:
1102
1103* ``inject_partition``
1104 Decides about the discovery and usage of the file system.
1105 It also can disable the injection at all.
1106 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001107
1108You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001109https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001110
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001111Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001112---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001113
1114By default TLS is disabled.
1115
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001116Enable TLS transport:
1117
1118.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001119
1120 compute:
1121 libvirt:
1122 tls:
1123 enabled: True
1124
1125You able to set custom certificates in pillar:
1126
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001127.. code-block:: yaml
1128
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001129 nova:
1130 compute:
1131 libvirt:
1132 tls:
1133 key: (certificate content)
1134 cert: (certificate content)
1135 cacert: (certificate content)
1136 client:
1137 key: (certificate content)
1138 cert: (certificate content)
1139
Dmitry Teselkin70862022019-04-18 16:43:50 +03001140It is possible to limit allowed SSL / TLS ciphers using libvirt's tls_priority:
1141
1142.. code-block:: yaml
1143
1144 nova:
1145 compute:
1146 libvirt:
1147 tls:
1148 priority: <TLS priority string>
1149
1150Example priority strings are:
1151
1152- The system imposed security level:
1153
1154.. code-block:: text
1155
1156 "SYSTEM"
1157
1158- The default priority without the HMAC-MD5:
1159
1160.. code-block:: text
1161
1162 "NORMAL:-MD5"
1163
1164- Specifying RSA with AES-128-CBC:
1165
1166.. code-block:: text
1167
1168 "NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
1169
1170- Specifying the defaults plus ARCFOUR-128:
1171
1172.. code-block:: text
1173
1174 "NORMAL:+ARCFOUR-128"
1175
1176- Enabling the 128-bit secure ciphers, while disabling TLS 1.0:
1177
1178.. code-block:: text
1179
1180 "SECURE128:-VERS-TLS1.0"
1181
1182- Enabling the 128-bit and 192-bit secure ciphers, while disabling all TLS
1183 versions except TLS 1.2:
1184
1185.. code-block:: text
1186
1187 "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2"
1188
1189More on TLS Priority Strings:
1190
1191- https://gnutls.org/manual/html_node/Priority-Strings.html
1192
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001193Controlling access by `tls_allowed_dn_list`.
1194Enable an access control list of client certificate Distinguished Names (DNs)
1195which can connect to the TLS port on this server. The default is that DNs are
1196not checked. This list may contain wildcards such as
1197"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1198for the format of the wildcards.
1199Note that if this is an empty list, no client can connect.
1200Note also that GnuTLS returns DNs without spaces after commas between
1201the fields (and this is what we check against), but the openssl x509 tool
1202shows spaces.
1203
1204.. code-block:: yaml
1205
1206 nova:
1207 compute:
1208 libvirt:
1209 tls:
1210 tls_allowed_dn_list:
1211 host1:
1212 enabled: true
1213 value: 'C=foo,CN=cmp1'
1214 host2:
1215 enabled: true
1216 value: 'C=foo,CN=cmp2'
1217
1218
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001219You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001220https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001221
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001222Enable transport + authentication for VNC over TLS
1223---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001224# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001225
1226By default communication between nova-novncproxy and qemu service is unsecure.
1227
1228compute:
1229 qemu:
1230 vnc:
1231 tls:
1232 enabled: True
1233
1234controller:
1235 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001236 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001237 tls:
1238 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001239 # This section responsible for communication between nova-novncproxy and qemu service
1240 vencrypt:
1241 tls:
1242 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001243
1244You able to set custom certificates in pillar:
1245
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001246nova:
1247 compute:
1248 qemu:
1249 vnc:
1250 tls:
1251 cacert (certificate content)
1252 cert (certificate content)
1253 key (certificate content)
1254
1255nova:
1256 controller:
1257 novncproxy:
1258 tls:
1259 server:
1260 cert (certificate content)
1261 key (certificate content)
1262 vencrypt:
1263 tls:
1264 cacert (certificate content)
1265 cert (certificate content)
1266 key (certificate content)
1267
1268
1269You can read more about it here:
1270 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1271
1272Enable communication between noVNC proxy and client machine over TLS
1273---------------------
1274
1275By default communication between noVNC proxy and client machine is unsecure.
1276
1277 controller:
1278 novncproxy:
1279 tls:
1280 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001281
1282 nova:
1283 controller:
1284 novncproxy:
1285 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001286 server:
1287 cert (certificate content)
1288 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001289
1290You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001291 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001292
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001293Enable x509 and ssl communication between Nova and Galera cluster.
1294---------------------
1295By default communication between Nova and Galera is unsecure.
1296
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001297nova:
1298 controller:
1299 database:
1300 x509:
1301 enabled: True
1302
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001303You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001304
1305nova:
1306 controller:
1307 database:
1308 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001309 cacert: (certificate content)
1310 cert: (certificate content)
1311 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001312
1313You can read more about it here:
1314 https://docs.openstack.org/security-guide/databases/database-access-control.html
1315
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001316Configure nova to use service user tokens:
1317========
1318Long-running operations such as live migration or snapshot can sometimes overrun the
1319expiry of the user token. In such cases, post operations such as cleaning up after a
1320live migration can fail when the nova-compute service needs to cleanup resources in
1321other services, such as in the block-storage (cinder) or networking (neutron) services.
1322
1323This patch enables nova to use service user tokens to supplement the regular user token
1324used to initiate the operation. The identity service (keystone) will then authenticate
1325a request using the service user token if the user token has already expired.
1326
1327.. code-block:: yaml
1328
1329 nova:
1330 controller:
1331 enabled: True
1332 ...
1333 service_user:
1334 enabled: True
1335 user_domain_id: default
1336 project_domain_id: default
1337 project_name: service
1338 username: nova
1339 password: pswd
1340
1341
obryndzii2ea61412019-01-31 00:55:56 +00001342Nova database connection setup:
1343========
1344
1345.. code-block:: yaml
1346
1347 nova:
1348 controller:
1349 enabled: True
1350 ...
1351 min_pool_size: 100
1352 max_pool_size: 700
1353 max_overflow: 100
1354 retry_interval: 5
1355 max_retries: '-1'
1356 db_max_retries: 3
1357 db_retry_interval: 1
1358 connection_debug: 10
1359 pool_timeout: 120
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001360
Oleksandr Bryndziife715df2019-04-23 15:34:42 +03001361Change default resource quotas using configmap template settings
1362========
1363
1364.. code-block:: yaml
1365
1366 nova:
1367 controller:
1368 configmap:
1369 quota:
1370 instances: 10
1371 cores: 20
1372 ram: 51200
1373 metadata_items: 128
1374 injected_files: 5
1375 injected_file_content_bytes: 10240
1376 injected_file_path_length: 255
1377 key_pairs: 100
1378 server_groups: 10
1379 server_group_members: 10
1380 reservation_expire: 86400
1381 until_refresh: 0
1382 max_age: 0
1383
Roman Lubianyiddd2c712020-03-26 14:08:10 +02001384Set use_db_reconnect for Nova
1385========
1386
1387.. code-block:: yaml
1388
1389 nova:
1390 controller:
1391 database:
1392 use_db_reconnect: true
1393
1394.. code-block:: yaml
1395
1396 nova:
1397 compute:
1398 database:
1399 use_db_reconnect: true
1400
Oleksii Molchanov1f9f6612020-11-19 22:46:05 +02001401Set qemu security_driver
1402========
1403
1404.. code-block:: yaml
1405
1406 nova:
1407 compute:
1408 security_driver: apparmor
1409
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001410Upgrades
1411========
1412
1413Each openstack formula provide set of phases (logical bloks) that will help to
1414build flexible upgrade orchestration logic for particular components. The list
1415of phases might and theirs descriptions are listed in table below:
1416
1417+-------------------------------+------------------------------------------------------+
1418| State | Description |
1419+===============================+======================================================+
1420| <app>.upgrade.service_running | Ensure that all services for particular application |
1421| | are enabled for autostart and running |
1422+-------------------------------+------------------------------------------------------+
1423| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1424| | disabled for autostart and dead |
1425+-------------------------------+------------------------------------------------------+
1426| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1427| | are installed to latest available version. |
1428| | This will not upgrade data plane packages like qemu |
1429| | and openvswitch as usually minimal required version |
1430| | in openstack services is really old. The data plane |
1431| | packages should be upgraded separately by `apt-get |
1432| | upgrade` or `apt-get dist-upgrade` |
1433| | Applying this state will not autostart service. |
1434+-------------------------------+------------------------------------------------------+
1435| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1436+-------------------------------+------------------------------------------------------+
1437| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1438| | cloud before running upgrade. |
1439| | Only non destructive actions will be applied during |
1440| | this phase. Perform service built in service check |
1441| | like (keystone-manage doctor and nova-status upgrade)|
1442+-------------------------------+------------------------------------------------------+
1443| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1444| | phase resources will be gracefully removed from |
1445| | current node if it is allowed. Services for upgraded |
1446| | application will be set to admin disabled state to |
1447| | make sure node will not participate in resources |
1448| | scheduling. For example on gtw nodes this will set |
1449| | all agents to admin disable state and will move all |
1450| | routers to other agents. |
1451+-------------------------------+------------------------------------------------------+
1452| <app>.upgrade.upgrade | This state will basically upgrade application on |
1453| | particular target. Stop services, render |
1454| | configuration, install new packages, run offline |
1455| | dbsync (for ctl), start services. Data plane should |
1456| | not be affected, only OpenStack python services. |
1457+-------------------------------+------------------------------------------------------+
1458| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1459+-------------------------------+------------------------------------------------------+
1460| <app>.upgrade.post | This phase should be launched only when upgrade of |
1461| | the cloud is completed. Cleanup temporary files, |
1462| | perform other post upgrade tasks. |
1463+-------------------------------+------------------------------------------------------+
1464| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1465| | operations, verify do not have dead network |
1466| | agents/compute services) |
1467+-------------------------------+------------------------------------------------------+
Oleksandr Pidrepnyidabe8b22019-06-07 16:18:11 +03001468
1469
1470Don't manage services scheduling while upgrade
1471----------------------------------------------
1472For some special cases, don't manage services scheduling both enable and disable
1473before and after upgrade procedure.
1474
1475If 'manage_service_maintenance: true' or not present - default behavior, disable services
1476before upgrade and enable it after upgrade.
1477If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
1478scheduling before and after upgrade.
1479
1480.. code-block:: yaml
1481
1482 nova:
1483 upgrade:
1484 manage_service_maintenance: false
Dzmitry Stremkouskice8475b2020-07-06 20:02:58 +02001485
1486Execute database maintenance tasks
1487----------------------------------
1488Cleanup stale records from nova database to make it smaller.
1489This is helpful before any upgrade activity.
1490It is safe to execute it generally without maintenance window same as online db_sync.
1491
1492Enable this pillar:
1493
1494.. code-block:: yaml
1495
1496 nova:
1497 controller:
1498 db_purge:
1499 enabled: True
1500
1501Execute state nova.db.db_cleanup to purge stale records:
1502
1503.. code-block:: bash
1504
1505 salt -C 'I@nova:controller:role:primary' state.apply nova.db.db_cleanup -l debug
1506
1507Starting from rocky release it is possible to pass days parameter.
1508If you skip setting it, all records would be archived/purged:
1509
1510.. code-block:: yaml
1511
1512 nova:
1513 controller:
1514 db_purge:
1515 enabled: True
1516 days: 45
1517
1518Control pre-rocky releases parameters:
1519
1520.. code-block:: yaml
1521
1522 nova:
1523 controller:
1524 db_purge:
1525 enabled: True
1526 max_rows: 1000
1527 verbose: True
1528
1529Control rocky+ releases parameters:
1530'days' and 'all' parameters are mutually exclusive.
1531
1532.. code-block:: yaml
1533
1534 nova:
1535 controller:
1536 db_purge:
1537 enabled: True
1538 all: True
1539 verbose: True
1540 all_cells: True
Vladimir Khlyunev76b9e342020-09-15 12:39:55 +04001541
1542
1543Configure filter schedulers
1544---------------------------
1545At this moment only max_instances_per_host for NumInstancesFilter is supported.
1546
1547.. code-block:: yaml
1548
1549 nova:
1550 controller:
1551 filter_scheduler:
1552 max_instances_per_host: 50