blob: e5151f094c3316499e756f97999146bd322f0e71 [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
Vasyl Saienko09b6ac32019-01-17 15:23:58 +020033 vif_plugging_timeout: 300
34 vif_plugging_is_fatal: false
Vasyl Saienko2adac3f2019-02-18 12:32:52 +020035 instance_build_timeout: 600
Ivan Berezovskiyf1869a32019-11-14 20:17:58 +040036 concurrency:
37 lock_path: '/var/lib/nova/tmp'
sgarbuzcc02c7f2018-10-25 14:29:30 +030038 consoleauth:
39 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020040 bind:
41 public_address: 10.0.0.122
42 public_name: openstack.domain.com
43 novncproxy_port: 6080
44 database:
45 engine: mysql
46 host: 127.0.0.1
47 port: 3306
48 name: nova
49 user: nova
50 password: pwd
51 identity:
52 engine: keystone
53 host: 127.0.0.1
54 port: 35357
55 user: nova
56 password: pwd
57 tenant: service
Dzmitry Stremkouskifb2289a2019-05-26 01:20:42 +020058 interface: internal
59 valid_interfaces:
60 - internal
Filip Pytloun4a72d792015-10-06 16:28:32 +020061 message_queue:
62 engine: rabbitmq
63 host: 127.0.0.1
64 port: 5672
65 user: openstack
66 password: pwd
67 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000068 pci:
69 alias:
70 alias1:
71 device_type: "type-PF"
72 name: "a1"
73 product_id: "154d"
74 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020075 network:
76 engine: neutron
77 host: 127.0.0.1
78 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020079 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020080 identity:
81 engine: keystone
82 host: 127.0.0.1
83 port: 35357
84 user: neutron
85 password: pwd
86 tenant: service
87 metadata:
88 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010089 audit:
90 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010091 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030092 barbican:
93 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020094
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030095Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020096
97.. code-block:: yaml
98
99 nova:
100 controller:
101 version: juno
102 source:
103 engine: pkg
104 address: http://...
105 ....
106
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300107Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200108
109.. code-block:: yaml
110
111 nova:
112 controller:
113 ....
114 message_queue:
115 engine: rabbitmq
116 members:
117 - host: 10.0.16.1
118 - host: 10.0.16.2
119 - host: 10.0.16.3
120 user: openstack
121 password: pwd
122 virtual_host: '/openstack'
123 ....
124
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300125Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100126
127.. code-block:: yaml
128
129 nova:
130 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100131 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100132 enabled: true
133 ....
134 filter_factory: 'keystonemiddleware.audit:filter_factory'
135 map_file: '/etc/pycadf/nova_api_audit_map.conf'
136 ....
137
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300138Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200139
140.. code-block:: yaml
141
142 nova:
143 controller:
144 cors:
145 allowed_origin: https:localhost.local,http:localhost.local
146 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
147 allow_methods: GET,PUT,POST,DELETE,PATCH
148 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
149 allow_credentials: True
150 max_age: 86400
151
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300152Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400153
154.. code-block:: yaml
155
156 nova:
157 controller:
158 ....
159 policy:
160 context_is_admin: 'role:admin or role:administrator'
161 'compute:create': 'rule:admin_or_owner'
162 # Add key without value to remove line from policy.json
163 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200164
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300165Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300166
167.. code-block:: yaml
168
169 nova:
170 controller:
171 ....
172 barbican:
173 enabled: true
174
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000175Define aliases for PCI devices:
176.. code-block:: yaml
177
178 nova:
179 controller:
180 ...
181 pci:
182 alias:
183 alias1:
184 device_type: "type-PF"
185 name: "a1"
186 product_id: "154d"
187 vendor_id: "8086"
188
Jiri Broulik789179a2018-02-13 16:16:46 +0100189Enable cells update:
190
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300191.. note:: Useful when upgrading Openstack. To update cells to test
192 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100193
194.. code-block:: yaml
195
196 nova:
197 controller:
198 update_cells: true
199
Dzmitry Stremkouskib139f142019-11-03 10:36:46 +0100200Increase number of chunks for online db migrations:
201
202.. note:: This only should be done in offline as large number of
203 rows locked by this process may cause service outage, which
204 may not be expected.
205
206.. code-block:: yaml
207
208 nova:
209 controller:
210 db_migrations:
211 max_count: 5000000
Kirill Bespalov64617172017-07-11 14:43:14 +0300212
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300213Configuring TLS communications
214------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300215
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300216.. note:: By default system wide installed CA certs are used,
217 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300218
219- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300220
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300221 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300222
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300223 nova:
224 compute:
225 message_queue:
226 port: 5671
227 ssl:
228 enabled: True
229 (optional) cacert: cert body if the cacert_file does not exists
230 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
231 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300232
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300233- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300234
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300235 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300236
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300237 nova:
238 controller:
239 database:
240 ssl:
241 enabled: True
242 (optional) cacert: cert body if the cacert_file does not exists
243 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300244
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300245- **Openstack HTTPS API**
246
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300247 Set the ``https`` as protocol at ``nova:compute`` and
248 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300249
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300250 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300251
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300252 nova:
253 controller :
254 identity:
255 protocol: https
256 (optional) cacert_file: /etc/openstack/proxy.pem
257 network:
258 protocol: https
259 (optional) cacert_file: /etc/openstack/proxy.pem
260 glance:
261 protocol: https
262 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300263
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300264 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300265
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300266 nova:
267 compute:
268 identity:
269 protocol: https
270 (optional) cacert_file: /etc/openstack/proxy.pem
271 network:
272 protocol: https
273 (optional) cacert_file: /etc/openstack/proxy.pem
274 image:
275 protocol: https
276 (optional) cacert_file: /etc/openstack/proxy.pem
277 ironic:
278 protocol: https
279 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300280
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300281.. note:: Barbican, Cinder, and placement url endpoints are discovering
282 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300283
Filip Pytloun4a72d792015-10-06 16:28:32 +0200284Compute nodes
285-------------
286
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300287Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200288
289.. code-block:: yaml
290
291 nova:
292 compute:
293 version: juno
294 enabled: true
Mykyta Karpin5ef9f982019-02-07 18:40:00 +0200295 timeout_nbd: 10
296 heal_instance_info_cache_interval: 60
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300297 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300298 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100299 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200300 aggregates:
301 - hosts_with_fc
302 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200303 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200304 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400305 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300306 my_ip: 10.1.0.16
Vasyl Saienko09b6ac32019-01-17 15:23:58 +0200307 vif_plugging_timeout: 300
308 vif_plugging_is_fatal: false
Ivan Berezovskiyf1869a32019-11-14 20:17:58 +0400309 concurrency:
310 lock_path: '/var/lib/nova/tmp'
Filip Pytloun4a72d792015-10-06 16:28:32 +0200311 bind:
312 vnc_address: 172.20.0.100
313 vnc_port: 6080
314 vnc_name: openstack.domain.com
315 vnc_protocol: http
316 database:
317 engine: mysql
318 host: 127.0.0.1
319 port: 3306
320 name: nova
321 user: nova
322 password: pwd
323 identity:
324 engine: keystone
325 host: 127.0.0.1
326 port: 35357
327 user: nova
328 password: pwd
329 tenant: service
330 message_queue:
331 engine: rabbitmq
332 host: 127.0.0.1
333 port: 5672
334 user: openstack
335 password: pwd
336 virtual_host: '/openstack'
337 image:
338 engine: glance
339 host: 127.0.0.1
340 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000341 pci:
342 alias:
343 alias1:
344 device_type: "type-PF"
345 name: "a1"
346 product_id: "154d"
347 vendor_id: "8086"
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200348 passthrough_whitelist:
349 - vendor_id: "10de"
350 product_id: "1db4"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200351 network:
352 engine: neutron
353 host: 127.0.0.1
354 port: 9696
355 identity:
356 engine: keystone
357 host: 127.0.0.1
358 port: 35357
359 user: neutron
360 password: pwd
361 tenant: service
362 qemu:
363 max_files: 4096
364 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300365 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200366
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300367Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
368Each process should have uniq host identifier. However multiple computes might be running on
369single host. It is not recommended to have multiple computes running on different hosts that
370manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
371
372.. code-block:: yaml
373
374 nova:
375 compute:
376 compute_driver: vmwareapi.VMwareVCDriver
377 vmware:
378 host_username: vmware
379 host_password: vmware
380 cluster_name: vmware_cluster01
381 host_ip: 1.2.3.4
382
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300383Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200384
385.. code-block:: yaml
386
387 nova:
388 compute:
389 enabled: true
390 ...
391 qemu:
392 user: nova
393 group: cinder
394 dynamic_ownership: 1
395
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300396Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300397
398.. code-block:: yaml
399
400 nova:
401 compute:
402 enabled: true
403 ...
404 user:
405 groups:
406 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200407
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300408Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200409
410.. code-block:: yaml
411
412 nova:
413 compute:
414 enabled: true
415 ...
416 networking: contrail
417
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000418Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200419
420.. code-block:: yaml
421
422 nova:
423 compute:
424 enabled: true
425 ...
426 cache:
427 engine: memcached
428 members:
429 - host: 127.0.0.1
430 port: 11211
431 - host: 127.0.0.1
432 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000433 security:
434 enabled: true
435 strategy: ENCRYPT
436 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200437
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300438Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200439
440.. code-block:: yaml
441
442 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300443 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200444 ....
445 message_queue:
446 engine: rabbitmq
447 members:
448 - host: 10.0.16.1
449 - host: 10.0.16.2
450 - host: 10.0.16.3
451 user: openstack
452 password: pwd
453 virtual_host: '/openstack'
454 ....
455
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300456Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000457
458.. code-block:: yaml
459
460 nova:
461 compute:
462 enabled: true
463 ...
464 ceph:
465 ephemeral: yes
466 rbd_pool: nova
467 rbd_user: nova
468 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300469 ....
maxstack39e6aca2016-05-04 13:50:13 +0000470
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300471Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300472
473.. code-block:: yaml
474
475 nova:
476 compute:
477 enabled: true
478 ...
479 lvm:
480 ephemeral: yes
481 images_volume_group: nova_vg
482
483 linux:
484 storage:
485 lvm:
486 nova_vg:
487 name: nova_vg
488 devices:
489 - /dev/sdf
490 - /dev/sdd
491 - /dev/sdg
492 - /dev/sde
493 - /dev/sdc
494 - /dev/sdj
495 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000496
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300497Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300498
499.. code-block:: yaml
500
501 nova:
502 compute:
503 ....
504 barbican:
505 enabled: true
506
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200507Define aliases for a PCI passthrough devices:
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000508.. code-block:: yaml
509
510 nova:
511 compute:
512 ...
513 pci:
514 alias:
515 alias1:
516 device_type: "type-PF"
517 name: "a1"
518 product_id: "154d"
519 vendor_id: "8086"
520
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200521Define white list of PCI devices available to VMs:
522.. code-block:: yaml
523
524 nova:
525 compute:
526 ...
527 pci:
528 passthrough_whitelist:
529 - vendor_id: "10de"
530 product_id: "1db4"
531
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300532Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200533
534.. code-block:: yaml
535
536 nova:
537 controller:
538 enabled: true
539 ...
540 metadata:
541 bind:
542 address: 1.2.3.4
543 port: 8776
544
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200545Define multipath for nova compute:
546
547.. code-block:: yaml
548
549 nova:
550 compute:
551 ....
552 libvirt:
553 volume_use_multipath: True
554
Oleh Hryhorovce1f2142019-03-06 17:00:00 +0000555To disable or enable StrictHostKeyChecking and discover
556compute nodes fingerprints the below pillar should be used:
557
558.. code-block:: yaml
559
560 nova:
561 compute:
562 ....
563 openssh:
564 stricthostkeychecking: True
565 discover_compute_hosts: True
566
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100567Client role
568-----------
569
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300570Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300571
572.. code-block:: yaml
573
574 nova:
575 compute:
576 instances_path: /mnt/nova/instances
577
578 linux:
579 storage:
580 enabled: true
581 mount:
582 nfs_nova:
583 enabled: true
584 path: ${nova:compute:instances_path}
585 device: 172.31.35.145:/data
586 file_system: nfs
587 opts: rw,vers=3
588
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300589Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100590
591.. code-block:: yaml
592
593 nova:
594 client:
595 enabled: true
596 server:
597 identity:
598 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100599 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100600 flavor_id: 10
601 ram: 4096
602 disk: 10
603 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100604 flavor2:
605 flavor_id: auto
606 ram: 4096
607 disk: 20
608 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100609 identity1:
610 flavor:
611 ...
612
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300613Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100614
615.. code-block:: yaml
616
617 nova:
618 client:
619 enabled: true
620 server:
621 identity:
622 availability_zones:
623 - availability_zone_01
624 - availability_zone_02
625
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300626Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200627
628.. code-block:: yaml
629
630 nova:
631 client:
632 enabled: true
633 server:
634 identity:
635 aggregates:
636 - aggregate1
637 - aggregate2
638
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300639Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300640
641.. code-block:: yaml
642
643 nova:
644 controller:
645 upgrade_levels:
646 compute: juno
647
648 nova:
649 compute:
650 upgrade_levels:
651 compute: juno
652
Petr Jedinýd855ef22017-03-06 22:24:33 +0100653SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100654------
655
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300656Add ``PciPassthroughFilter`` into scheduler filters and NICs on
657specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100658
659.. code-block:: yaml
660
661 nova:
662 controller:
663 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000664 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100665
666 nova:
667 compute:
668 sriov:
669 nic_one:
670 devname: eth1
671 physical_network: physnet1
672
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000673.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
674 nova.conf file in appropriate format.
675
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100676CPU pinning & Hugepages
677-----------------------
678
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300679CPU pinning of virtual machine instances to dedicated physical
680CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100681
682.. code-block:: yaml
683
684 nova:
685 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000686 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100687
688 nova:
689 compute:
690 vcpu_pin_set: 2,3,4,5
691 hugepages:
692 mount_points:
693 - path: /mnt/hugepages_1GB
694 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100695
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200696Custom Scheduler filters
697------------------------
698
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300699If you have a custom filter, that needs to be included in the
700scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200701
702.. code-block:: yaml
703
704 nova:
705 controller:
706 scheduler_custom_filters:
707 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
708
709 # 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 +0000710 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200711
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400712 # Since Queens version a sequence could be used as well:
713 ~scheduler_default_filters:
714 - DifferentHostFilter
715 - SameHostFilter
716 ...
717 - MyCustomFilter
718
719
Michel Nederlofeb566f62017-04-21 15:37:47 +0200720Hardware Trip/Unmap Support
721---------------------------
722
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300723To enable TRIM support for ephemeral images (thru nova managed
724images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200725
726.. code-block:: yaml
727
728 nova:
729 compute:
730 libvirt:
731 hw_disk_discard: unmap
732
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300733To actually utilize this feature, the following metadata must be
734set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200735
736.. code-block:: bash
737
738 glance image-update --property hw_scsi_model=virtio-scsi <image>
739 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100740
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000741Scheduler Host Manager
742----------------------
743
744Specify a custom host manager.
745
Thom Gerdesec00afd2017-04-07 18:06:59 +0000746libvirt CPU mode
747----------------
748
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300749Allow setting the model of CPU that is exposed to a VM. This
750allows for better support live migration between hypervisors with
751different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200752
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000753.. code-block:: yaml
754
755 nova:
756 controller:
757 scheduler_host_manager: ironic_host_manager
758
Thom Gerdesec00afd2017-04-07 18:06:59 +0000759 compute:
760 cpu_mode: host-model
761
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200762Nova compute cpu model
763----------------------
764
765.. code-block:: yaml
766
767 nova:
768 compute:
769 cpu_mode: custom
770 libvirt:
771 cpu_model: IvyBridge
772
Oleksandr Pidrepnyid9020082019-03-04 19:18:19 +0200773RNG (Random Number Generator) device path
774----------------------
775
776The path to an RNG (Random Number Generator) device that will be used
777as the source of entropy on the host.
778The recommended source of entropy is /dev/urandom.
779Permitted options are: /dev/random, /dev/urandom or /dev/hwrng.
780Default: /dev/urandom
781
782.. code-block:: yaml
783
784 nova:
785 controller:
786 libvirt:
787 rng_dev_path: /dev/random
788
789 compute:
790 libvirt:
791 rng_dev_path: /dev/random
792
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200793
Michel Nederloff7eefb22017-07-10 11:14:33 +0200794Nova compute workarounds
795------------------------
796
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300797Live snapshotting is disabled by default in nova. To enable
798this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200799
800From manual:
801
802.. code-block:: yaml
803
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300804 When using libvirt 1.2.2 live snapshots fail intermittently under load
805 (likely related to concurrent libvirt/qemu operations). This config
806 option provides a mechanism to disable live snapshot, in favor of cold
807 snapshot, while this is resolved. Cold snapshot causes an instance
808 outage while the guest is going through the snapshotting process.
809
810 For more information, refer to the bug report:
811
812 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200813
814Configurable pillar data:
815
816.. code-block:: yaml
817
818 nova:
819 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200820 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200821 disable_libvirt_livesnapshot: False
822
Michel Nederlofb51a5142017-06-27 08:31:35 +0200823Config drive options
824--------------------
825
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300826See example below on how to configure the options for the
827config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200828
829.. code-block:: yaml
830
831 nova:
832 compute:
833 config_drive:
834 forced: True # Default: True
835 cdrom: True # Default: False
836 format: iso9660 # Default: vfat
837 inject_password: False # Default: False
838
Michel Nederloff81919b2017-11-20 09:37:07 +0100839Number of concurrent live migrates
840----------------------------------
841
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300842Default is to have no concurrent live migrations (so 1
843live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100844
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300845Excerpt from config options page
846https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100847
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300848Maximum number of live migrations to run concurrently. This limit is
849enforced to avoid outbound live migrations overwhelming the host/network
850and causing failures. It is not recommended that you change this unless
851you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100852
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300853Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100854
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300855- 0 : treated as unlimited.
856- Negative value defaults to 0.
857- Any positive integer representing maximum number of live migrations
858 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100859
860To configure this option:
861
862.. code-block:: yaml
863
864 nova:
865 compute:
866 max_concurrent_live_migrations: 1 # (1 is the default)
867
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300868Live migration with auto converge
869----------------------------------
870
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300871Auto converge throttles down CPU if a progress of on-going live
872migration is slow
873https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300874
875.. code-block:: yaml
876
877 nova:
878 compute:
879 libvirt:
880 live_migration_permit_auto_converge: False # (False is the default)
881
882.. code-block:: yaml
883
884 nova:
885 controller:
886 libvirt:
887 live_migration_permit_auto_converge: False # (False is the default)
888
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400889Enhanced logging with logging.conf
890----------------------------------
891
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300892By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400893
894That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400895
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300896* ``openstack_log_appender``
897 Set to true to enable log_config_append for all OpenStack services
898
899* ``openstack_fluentd_handler_enabled``
900 Set to true to enable FluentHandler for all Openstack services
901
902* ``openstack_ossyslog_handler_enabled``
903 Set to true to enable OSSysLogHandler for all Openstack services
904
905Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
906are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400907
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400908Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400909
910.. code-block:: yaml
911
912 nova:
913 controller:
914 logging:
915 log_appender: true
916 log_handlers:
917 watchedfile:
918 enabled: true
919 fluentd:
920 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200921 ossyslog:
922 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400923
924 compute:
925 logging:
926 log_appender: true
927 log_handlers:
928 watchedfile:
929 enabled: true
930 fluentd:
931 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200932 ossyslog:
933 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000934
Vasyl Saienko7243a952018-05-11 21:26:54 +0300935The log level might be configured per logger by using the
936following pillar structure:
937
938.. code-block:: yaml
939
940 nova:
941 compute:
942 logging:
943 loggers:
944 <logger_name>:
945 level: WARNING
946
947 nova:
948 compute:
949 logging:
950 loggers:
951 <logger_name>:
952 level: WARNING
953
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000954Configure syslog parameters for libvirtd
955----------------------------------------
956
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300957To configure syslog parameters for libvirtd the below pillar
958structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000959by libvirtd. These values might be known from the documentation.
960
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300961.. code-block:: yaml
962
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000963 nova:
964 compute:
965 libvirt:
966 logging:
967 level: 3
968 filters: '3:remote 4:event'
969 outputs: '3:syslog:libvirtd'
970 buffer_size: 64
971
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300972Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000973
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300974Logging level: 4 errors, 3 warnings, 2 information, 1 debug
975basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000976
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300977Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000978
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300979A filter allows to select a different logging level for a given category
980of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000981
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300982The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000983
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300984* ``x:name``
985* ``x:+name``
986 where name is a string which is matched against source file name,
987 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
988 tells libvirt to log stack trace for each message matching name,
989 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000990
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300991* ``1: DEBUG``
992* ``2: INFO``
993* ``3: WARNING``
994* ``4: ERROR``
995
996Multiple filter can be defined in a single @filters, they just
997need to be separated by spaces.
998
999For example, to only get warning or errors from the remote layer
1000and only errors from the event layer: ``log_filters="3:remote 4:event``
1001
1002Logging outputs:
1003
1004An output is one of the places to save logging information
1005The format for an output can be:
1006
1007* ``x:stderr``
1008 Output goes to stderr
1009
1010* ``x:syslog:name``
1011 Use syslog for the output and use the given name as the ident
1012
1013* ``x:file:file_path``
1014 output to a file, with the given filepath
1015
1016 In all case the x prefix is the minimal level, acting as a filter
1017
1018* ``1: DEBUG``
1019* ``2: INFO``
1020* ``3: WARNING``
1021* ``4: ERROR``
1022
1023Multiple output can be defined, they just need to be separated by spaces.
1024For example, to log all warnings and errors to syslog under the libvirt
1025dident: ``log_outputs="3:syslog:libvirtd``
1026
1027Log debug buffer size: default 64
1028The daemon keeps an internal debug log buffer which will be dumped
1029in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
1030allows to override the default buffer size in kilobytes.
1031If value is ``0`` or less the debug log buffer is deactivated
1032``log_buffer_size = 64``
1033
1034To configure the logging parameters for QEMU, the below pillar
1035structure and logging parameters should be used:
1036
1037.. code-block:: yaml
1038
1039 nova:
1040 compute:
1041 qemu:
1042 logging:
1043 handler: logd
1044 virtlog:
1045 enabled: true
1046 level: 4
1047 filters: '3:remote 3:event'
1048 outputs: '4:syslog:virtlogd'
1049 max_clients: 512
1050 max_size: 2097100
1051 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001052
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001053Inject password to VM
1054---------------------
1055
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001056By default nova blocks up any inject to VM because
1057``inject_partition`` param is equal to ``-2``.
1058If you want to inject password to VM, you will need to
1059define ``inject_partition`` greater or equal to ``-1`` and
1060define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001061
1062For example:
1063
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001064.. code-block:: yaml
1065
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001066 nova:
1067 compute:
1068 inject_partition: '-1'
1069 inject_password: True
1070
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001071Allow the injection of an admin password for instance only at
1072``create`` and ``rebuild`` process.
1073
1074There is no agent needed within the image to do this. If *libguestfs* is
1075available on the host, it will be used. Otherwise *nbd* is used. The file
1076system of the image will be mounted and the admin password, which is provided
1077in the REST API call will be injected as password for the root user. If no
1078root user is available, the instance won't be launched and an error is thrown.
1079Be aware that the injection is *not* possible when the instance gets launched
1080from a volume.
1081
1082Possible values:
1083
1084* ``True``
1085 Allows the injection
1086
1087* ``False`` (default)
1088 Disallows the injection. Any via the REST API provided
1089 admin password will be silently ignored.
1090
1091Related options:
1092
1093* ``inject_partition``
1094 Decides about the discovery and usage of the file system.
1095 It also can disable the injection at all.
1096 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001097
1098You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001099https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001100
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001101Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001102---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001103
1104By default TLS is disabled.
1105
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001106Enable TLS transport:
1107
1108.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001109
1110 compute:
1111 libvirt:
1112 tls:
1113 enabled: True
1114
1115You able to set custom certificates in pillar:
1116
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001117.. code-block:: yaml
1118
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001119 nova:
1120 compute:
1121 libvirt:
1122 tls:
1123 key: (certificate content)
1124 cert: (certificate content)
1125 cacert: (certificate content)
1126 client:
1127 key: (certificate content)
1128 cert: (certificate content)
1129
Dmitry Teselkin77d9dac2019-04-18 16:43:50 +03001130It is possible to limit allowed SSL / TLS ciphers using libvirt's tls_priority:
1131
1132.. code-block:: yaml
1133
1134 nova:
1135 compute:
1136 libvirt:
1137 tls:
1138 priority: <TLS priority string>
1139
1140Example priority strings are:
1141
1142- The system imposed security level:
1143
1144.. code-block:: text
1145
1146 "SYSTEM"
1147
1148- The default priority without the HMAC-MD5:
1149
1150.. code-block:: text
1151
1152 "NORMAL:-MD5"
1153
1154- Specifying RSA with AES-128-CBC:
1155
1156.. code-block:: text
1157
1158 "NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
1159
1160- Specifying the defaults plus ARCFOUR-128:
1161
1162.. code-block:: text
1163
1164 "NORMAL:+ARCFOUR-128"
1165
1166- Enabling the 128-bit secure ciphers, while disabling TLS 1.0:
1167
1168.. code-block:: text
1169
1170 "SECURE128:-VERS-TLS1.0"
1171
1172- Enabling the 128-bit and 192-bit secure ciphers, while disabling all TLS
1173 versions except TLS 1.2:
1174
1175.. code-block:: text
1176
1177 "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2"
1178
1179More on TLS Priority Strings:
1180
1181- https://gnutls.org/manual/html_node/Priority-Strings.html
1182
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001183Controlling access by `tls_allowed_dn_list`.
1184Enable an access control list of client certificate Distinguished Names (DNs)
1185which can connect to the TLS port on this server. The default is that DNs are
1186not checked. This list may contain wildcards such as
1187"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1188for the format of the wildcards.
1189Note that if this is an empty list, no client can connect.
1190Note also that GnuTLS returns DNs without spaces after commas between
1191the fields (and this is what we check against), but the openssl x509 tool
1192shows spaces.
1193
1194.. code-block:: yaml
1195
1196 nova:
1197 compute:
1198 libvirt:
1199 tls:
1200 tls_allowed_dn_list:
1201 host1:
1202 enabled: true
1203 value: 'C=foo,CN=cmp1'
1204 host2:
1205 enabled: true
1206 value: 'C=foo,CN=cmp2'
1207
1208
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001209You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001210https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001211
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001212Enable transport + authentication for VNC over TLS
1213---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001214# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001215
1216By default communication between nova-novncproxy and qemu service is unsecure.
1217
1218compute:
1219 qemu:
1220 vnc:
1221 tls:
1222 enabled: True
1223
1224controller:
1225 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001226 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001227 tls:
1228 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001229 # This section responsible for communication between nova-novncproxy and qemu service
1230 vencrypt:
1231 tls:
1232 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001233
1234You able to set custom certificates in pillar:
1235
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001236nova:
1237 compute:
1238 qemu:
1239 vnc:
1240 tls:
1241 cacert (certificate content)
1242 cert (certificate content)
1243 key (certificate content)
1244
1245nova:
1246 controller:
1247 novncproxy:
1248 tls:
1249 server:
1250 cert (certificate content)
1251 key (certificate content)
1252 vencrypt:
1253 tls:
1254 cacert (certificate content)
1255 cert (certificate content)
1256 key (certificate content)
1257
1258
1259You can read more about it here:
1260 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1261
1262Enable communication between noVNC proxy and client machine over TLS
1263---------------------
1264
1265By default communication between noVNC proxy and client machine is unsecure.
1266
1267 controller:
1268 novncproxy:
1269 tls:
1270 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001271
1272 nova:
1273 controller:
1274 novncproxy:
1275 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001276 server:
1277 cert (certificate content)
1278 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001279
1280You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001281 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001282
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001283Enable x509 and ssl communication between Nova and Galera cluster.
1284---------------------
1285By default communication between Nova and Galera is unsecure.
1286
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001287nova:
1288 controller:
1289 database:
1290 x509:
1291 enabled: True
1292
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001293You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001294
1295nova:
1296 controller:
1297 database:
1298 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001299 cacert: (certificate content)
1300 cert: (certificate content)
1301 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001302
1303You can read more about it here:
1304 https://docs.openstack.org/security-guide/databases/database-access-control.html
1305
Oleksandr Shyshkod96a0992019-03-29 11:18:25 +00001306Define config option which allows to use nova-api service behind proxy.(Only Mitaka)
1307---------------------
1308The HTTP Header that will be used to determine what the original request protocol
1309scheme was, even if it was hidden by a SSL termination proxy.
1310
1311 nova:
1312 controller:
1313 secure_proxy_ssl_header: HTTP_X_FORWARDED_PROTO
1314
1315You can read more about it here:
1316 https://docs.openstack.org/mitaka/config-reference/compute/config-options.html
1317
obryndziif7957912019-01-31 00:55:56 +00001318Nova database connection setup:
1319========
1320
1321.. code-block:: yaml
1322
1323 nova:
1324 controller:
1325 enabled: True
1326 ...
1327 database:
1328 idle_timeout: 180
1329 min_pool_size: 100
1330 max_pool_size: 700
1331 max_overflow: 100
1332 retry_interval: 5
1333 max_retries: '-1'
1334 db_max_retries: 3
1335 db_retry_interval: 1
1336 connection_debug: 10
1337 pool_timeout: 120
1338
Oleksandr Bryndzii6d821f52019-02-20 15:51:15 +02001339
1340Configure nova to use service user tokens:
1341========
1342Long-running operations such as live migration or snapshot can sometimes overrun the
1343expiry of the user token. In such cases, post operations such as cleaning up after a
1344live migration can fail when the nova-compute service needs to cleanup resources in
1345other services, such as in the block-storage (cinder) or networking (neutron) services.
1346
1347This patch enables nova to use service user tokens to supplement the regular user token
1348used to initiate the operation. The identity service (keystone) will then authenticate
1349a request using the service user token if the user token has already expired.
1350
1351.. code-block:: yaml
1352
1353 nova:
1354 controller:
1355 enabled: True
1356 ...
1357 service_user:
1358 enabled: True
1359 user_domain_id: default
1360 project_domain_id: default
1361 project_name: service
1362 username: nova
1363 password: pswd
1364
Oleksandr Bryndzii6af347b2019-04-23 15:34:42 +03001365Change default resource quotas using configmap template settings
1366========
1367
1368.. code-block:: yaml
1369
1370 nova:
1371 controller:
1372 configmap:
1373 quota:
1374 instances: 10
1375 cores: 20
1376 ram: 51200
1377 metadata_items: 128
1378 injected_files: 5
1379 injected_file_content_bytes: 10240
1380 injected_file_path_length: 255
1381 key_pairs: 100
1382 server_groups: 10
1383 server_group_members: 10
1384 reservation_expire: 86400
1385 until_refresh: 0
1386 max_age: 0
1387
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001388Upgrades
1389========
1390
1391Each openstack formula provide set of phases (logical bloks) that will help to
1392build flexible upgrade orchestration logic for particular components. The list
1393of phases might and theirs descriptions are listed in table below:
1394
1395+-------------------------------+------------------------------------------------------+
1396| State | Description |
1397+===============================+======================================================+
1398| <app>.upgrade.service_running | Ensure that all services for particular application |
1399| | are enabled for autostart and running |
1400+-------------------------------+------------------------------------------------------+
1401| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1402| | disabled for autostart and dead |
1403+-------------------------------+------------------------------------------------------+
1404| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1405| | are installed to latest available version. |
1406| | This will not upgrade data plane packages like qemu |
1407| | and openvswitch as usually minimal required version |
1408| | in openstack services is really old. The data plane |
1409| | packages should be upgraded separately by `apt-get |
1410| | upgrade` or `apt-get dist-upgrade` |
1411| | Applying this state will not autostart service. |
1412+-------------------------------+------------------------------------------------------+
1413| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1414+-------------------------------+------------------------------------------------------+
1415| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1416| | cloud before running upgrade. |
1417| | Only non destructive actions will be applied during |
1418| | this phase. Perform service built in service check |
1419| | like (keystone-manage doctor and nova-status upgrade)|
1420+-------------------------------+------------------------------------------------------+
1421| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1422| | phase resources will be gracefully removed from |
1423| | current node if it is allowed. Services for upgraded |
1424| | application will be set to admin disabled state to |
1425| | make sure node will not participate in resources |
1426| | scheduling. For example on gtw nodes this will set |
1427| | all agents to admin disable state and will move all |
1428| | routers to other agents. |
1429+-------------------------------+------------------------------------------------------+
1430| <app>.upgrade.upgrade | This state will basically upgrade application on |
1431| | particular target. Stop services, render |
1432| | configuration, install new packages, run offline |
1433| | dbsync (for ctl), start services. Data plane should |
1434| | not be affected, only OpenStack python services. |
1435+-------------------------------+------------------------------------------------------+
1436| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1437+-------------------------------+------------------------------------------------------+
1438| <app>.upgrade.post | This phase should be launched only when upgrade of |
1439| | the cloud is completed. Cleanup temporary files, |
1440| | perform other post upgrade tasks. |
1441+-------------------------------+------------------------------------------------------+
1442| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1443| | operations, verify do not have dead network |
1444| | agents/compute services) |
1445+-------------------------------+------------------------------------------------------+
Oleksandr Pidrepnyi60df8722019-06-07 16:18:11 +03001446
1447
1448Don't manage services scheduling while upgrade
1449----------------------------------------------
1450For some special cases, don't manage services scheduling both enable and disable
1451before and after upgrade procedure.
1452
1453If 'manage_service_maintenance: true' or not present - default behavior, disable services
1454before upgrade and enable it after upgrade.
1455If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
1456scheduling before and after upgrade.
1457
1458.. code-block:: yaml
1459
1460 nova:
1461 upgrade:
1462 manage_service_maintenance: false