blob: ce885a6215afe5bd9ff9933b81e08bec854635ba [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
Martin Polreich65e2a142019-12-17 14:19:44 +0100284Change default service policy configuration:
285--------------------------------------------
286
287.. code-block:: yaml
288
289 nova:
290 controller:
291 policy:
292 'context_is_admin': 'role:admin or role:administrator'
293 'compute:create': 'rule:admin_or_owner'
294 # Add key without value to remove line from policy.json
295 'compute:create:attach_network':
296
297
Filip Pytloun4a72d792015-10-06 16:28:32 +0200298Compute nodes
299-------------
300
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300301Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200302
303.. code-block:: yaml
304
305 nova:
306 compute:
307 version: juno
308 enabled: true
Mykyta Karpin5ef9f982019-02-07 18:40:00 +0200309 timeout_nbd: 10
310 heal_instance_info_cache_interval: 60
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300311 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300312 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100313 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200314 aggregates:
315 - hosts_with_fc
316 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200317 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200318 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400319 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300320 my_ip: 10.1.0.16
Vasyl Saienko09b6ac32019-01-17 15:23:58 +0200321 vif_plugging_timeout: 300
322 vif_plugging_is_fatal: false
Ivan Berezovskiyf1869a32019-11-14 20:17:58 +0400323 concurrency:
324 lock_path: '/var/lib/nova/tmp'
Filip Pytloun4a72d792015-10-06 16:28:32 +0200325 bind:
326 vnc_address: 172.20.0.100
327 vnc_port: 6080
328 vnc_name: openstack.domain.com
329 vnc_protocol: http
330 database:
331 engine: mysql
332 host: 127.0.0.1
333 port: 3306
334 name: nova
335 user: nova
336 password: pwd
337 identity:
338 engine: keystone
339 host: 127.0.0.1
340 port: 35357
341 user: nova
342 password: pwd
343 tenant: service
344 message_queue:
345 engine: rabbitmq
346 host: 127.0.0.1
347 port: 5672
348 user: openstack
349 password: pwd
350 virtual_host: '/openstack'
351 image:
352 engine: glance
353 host: 127.0.0.1
354 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000355 pci:
356 alias:
357 alias1:
358 device_type: "type-PF"
359 name: "a1"
360 product_id: "154d"
361 vendor_id: "8086"
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200362 passthrough_whitelist:
363 - vendor_id: "10de"
364 product_id: "1db4"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200365 network:
366 engine: neutron
367 host: 127.0.0.1
368 port: 9696
369 identity:
370 engine: keystone
371 host: 127.0.0.1
372 port: 35357
373 user: neutron
374 password: pwd
375 tenant: service
376 qemu:
377 max_files: 4096
378 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300379 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200380
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300381Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
382Each process should have uniq host identifier. However multiple computes might be running on
383single host. It is not recommended to have multiple computes running on different hosts that
384manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
385
386.. code-block:: yaml
387
388 nova:
389 compute:
390 compute_driver: vmwareapi.VMwareVCDriver
391 vmware:
392 host_username: vmware
393 host_password: vmware
394 cluster_name: vmware_cluster01
395 host_ip: 1.2.3.4
396
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300397Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200398
399.. code-block:: yaml
400
401 nova:
402 compute:
403 enabled: true
404 ...
405 qemu:
406 user: nova
407 group: cinder
408 dynamic_ownership: 1
409
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300410Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300411
412.. code-block:: yaml
413
414 nova:
415 compute:
416 enabled: true
417 ...
418 user:
419 groups:
420 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200421
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300422Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200423
424.. code-block:: yaml
425
426 nova:
427 compute:
428 enabled: true
429 ...
430 networking: contrail
431
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000432Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200433
434.. code-block:: yaml
435
436 nova:
437 compute:
438 enabled: true
439 ...
440 cache:
441 engine: memcached
442 members:
443 - host: 127.0.0.1
444 port: 11211
445 - host: 127.0.0.1
446 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000447 security:
448 enabled: true
449 strategy: ENCRYPT
450 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200451
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300452Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200453
454.. code-block:: yaml
455
456 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300457 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200458 ....
459 message_queue:
460 engine: rabbitmq
461 members:
462 - host: 10.0.16.1
463 - host: 10.0.16.2
464 - host: 10.0.16.3
465 user: openstack
466 password: pwd
467 virtual_host: '/openstack'
468 ....
469
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300470Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000471
472.. code-block:: yaml
473
474 nova:
475 compute:
476 enabled: true
477 ...
478 ceph:
479 ephemeral: yes
480 rbd_pool: nova
481 rbd_user: nova
482 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300483 ....
maxstack39e6aca2016-05-04 13:50:13 +0000484
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300485Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300486
487.. code-block:: yaml
488
489 nova:
490 compute:
491 enabled: true
492 ...
493 lvm:
494 ephemeral: yes
495 images_volume_group: nova_vg
496
497 linux:
498 storage:
499 lvm:
500 nova_vg:
501 name: nova_vg
502 devices:
503 - /dev/sdf
504 - /dev/sdd
505 - /dev/sdg
506 - /dev/sde
507 - /dev/sdc
508 - /dev/sdj
509 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000510
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300511Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300512
513.. code-block:: yaml
514
515 nova:
516 compute:
517 ....
518 barbican:
519 enabled: true
520
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200521Define aliases for a PCI passthrough devices:
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000522.. code-block:: yaml
523
524 nova:
525 compute:
526 ...
527 pci:
528 alias:
529 alias1:
530 device_type: "type-PF"
531 name: "a1"
532 product_id: "154d"
533 vendor_id: "8086"
534
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200535Define white list of PCI devices available to VMs:
536.. code-block:: yaml
537
538 nova:
539 compute:
540 ...
541 pci:
542 passthrough_whitelist:
543 - vendor_id: "10de"
544 product_id: "1db4"
545
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300546Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200547
548.. code-block:: yaml
549
550 nova:
551 controller:
552 enabled: true
553 ...
554 metadata:
555 bind:
556 address: 1.2.3.4
557 port: 8776
558
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200559Define multipath for nova compute:
560
561.. code-block:: yaml
562
563 nova:
564 compute:
565 ....
566 libvirt:
567 volume_use_multipath: True
568
Oleh Hryhorovce1f2142019-03-06 17:00:00 +0000569To disable or enable StrictHostKeyChecking and discover
570compute nodes fingerprints the below pillar should be used:
571
572.. code-block:: yaml
573
574 nova:
575 compute:
576 ....
577 openssh:
578 stricthostkeychecking: True
579 discover_compute_hosts: True
580
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100581Client role
582-----------
583
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300584Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300585
586.. code-block:: yaml
587
588 nova:
589 compute:
590 instances_path: /mnt/nova/instances
591
592 linux:
593 storage:
594 enabled: true
595 mount:
596 nfs_nova:
597 enabled: true
598 path: ${nova:compute:instances_path}
599 device: 172.31.35.145:/data
600 file_system: nfs
601 opts: rw,vers=3
602
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300603Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100604
605.. code-block:: yaml
606
607 nova:
608 client:
609 enabled: true
610 server:
611 identity:
612 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100613 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100614 flavor_id: 10
615 ram: 4096
616 disk: 10
617 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100618 flavor2:
619 flavor_id: auto
620 ram: 4096
621 disk: 20
622 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100623 identity1:
624 flavor:
625 ...
626
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300627Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100628
629.. code-block:: yaml
630
631 nova:
632 client:
633 enabled: true
634 server:
635 identity:
636 availability_zones:
637 - availability_zone_01
638 - availability_zone_02
639
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300640Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200641
642.. code-block:: yaml
643
644 nova:
645 client:
646 enabled: true
647 server:
648 identity:
649 aggregates:
650 - aggregate1
651 - aggregate2
652
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300653Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300654
655.. code-block:: yaml
656
657 nova:
658 controller:
659 upgrade_levels:
660 compute: juno
661
662 nova:
663 compute:
664 upgrade_levels:
665 compute: juno
666
Petr Jedinýd855ef22017-03-06 22:24:33 +0100667SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100668------
669
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300670Add ``PciPassthroughFilter`` into scheduler filters and NICs on
671specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100672
673.. code-block:: yaml
674
675 nova:
676 controller:
677 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000678 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100679
680 nova:
681 compute:
682 sriov:
683 nic_one:
684 devname: eth1
685 physical_network: physnet1
686
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000687.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
688 nova.conf file in appropriate format.
689
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100690CPU pinning & Hugepages
691-----------------------
692
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300693CPU pinning of virtual machine instances to dedicated physical
694CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100695
696.. code-block:: yaml
697
698 nova:
699 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000700 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100701
702 nova:
703 compute:
704 vcpu_pin_set: 2,3,4,5
705 hugepages:
706 mount_points:
707 - path: /mnt/hugepages_1GB
708 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100709
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200710Custom Scheduler filters
711------------------------
712
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300713If you have a custom filter, that needs to be included in the
714scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200715
716.. code-block:: yaml
717
718 nova:
719 controller:
720 scheduler_custom_filters:
721 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
722
723 # 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 +0000724 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200725
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400726 # Since Queens version a sequence could be used as well:
727 ~scheduler_default_filters:
728 - DifferentHostFilter
729 - SameHostFilter
730 ...
731 - MyCustomFilter
732
733
Michel Nederlofeb566f62017-04-21 15:37:47 +0200734Hardware Trip/Unmap Support
735---------------------------
736
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300737To enable TRIM support for ephemeral images (thru nova managed
738images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200739
740.. code-block:: yaml
741
742 nova:
743 compute:
744 libvirt:
745 hw_disk_discard: unmap
746
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300747To actually utilize this feature, the following metadata must be
748set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200749
750.. code-block:: bash
751
752 glance image-update --property hw_scsi_model=virtio-scsi <image>
753 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100754
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000755Scheduler Host Manager
756----------------------
757
758Specify a custom host manager.
759
Thom Gerdesec00afd2017-04-07 18:06:59 +0000760libvirt CPU mode
761----------------
762
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300763Allow setting the model of CPU that is exposed to a VM. This
764allows for better support live migration between hypervisors with
765different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200766
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000767.. code-block:: yaml
768
769 nova:
770 controller:
771 scheduler_host_manager: ironic_host_manager
772
Thom Gerdesec00afd2017-04-07 18:06:59 +0000773 compute:
774 cpu_mode: host-model
775
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200776Nova compute cpu model
777----------------------
778
779.. code-block:: yaml
780
781 nova:
782 compute:
783 cpu_mode: custom
784 libvirt:
785 cpu_model: IvyBridge
786
Oleksandr Pidrepnyid9020082019-03-04 19:18:19 +0200787RNG (Random Number Generator) device path
788----------------------
789
790The path to an RNG (Random Number Generator) device that will be used
791as the source of entropy on the host.
792The recommended source of entropy is /dev/urandom.
793Permitted options are: /dev/random, /dev/urandom or /dev/hwrng.
794Default: /dev/urandom
795
796.. code-block:: yaml
797
798 nova:
799 controller:
800 libvirt:
801 rng_dev_path: /dev/random
802
803 compute:
804 libvirt:
805 rng_dev_path: /dev/random
806
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200807
Michel Nederloff7eefb22017-07-10 11:14:33 +0200808Nova compute workarounds
809------------------------
810
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300811Live snapshotting is disabled by default in nova. To enable
812this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200813
814From manual:
815
816.. code-block:: yaml
817
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300818 When using libvirt 1.2.2 live snapshots fail intermittently under load
819 (likely related to concurrent libvirt/qemu operations). This config
820 option provides a mechanism to disable live snapshot, in favor of cold
821 snapshot, while this is resolved. Cold snapshot causes an instance
822 outage while the guest is going through the snapshotting process.
823
824 For more information, refer to the bug report:
825
826 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200827
828Configurable pillar data:
829
830.. code-block:: yaml
831
832 nova:
833 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200834 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200835 disable_libvirt_livesnapshot: False
836
Michel Nederlofb51a5142017-06-27 08:31:35 +0200837Config drive options
838--------------------
839
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300840See example below on how to configure the options for the
841config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200842
843.. code-block:: yaml
844
845 nova:
846 compute:
847 config_drive:
848 forced: True # Default: True
849 cdrom: True # Default: False
850 format: iso9660 # Default: vfat
851 inject_password: False # Default: False
852
Michel Nederloff81919b2017-11-20 09:37:07 +0100853Number of concurrent live migrates
854----------------------------------
855
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300856Default is to have no concurrent live migrations (so 1
857live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100858
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300859Excerpt from config options page
860https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100861
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300862Maximum number of live migrations to run concurrently. This limit is
863enforced to avoid outbound live migrations overwhelming the host/network
864and causing failures. It is not recommended that you change this unless
865you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100866
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300867Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100868
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300869- 0 : treated as unlimited.
870- Negative value defaults to 0.
871- Any positive integer representing maximum number of live migrations
872 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100873
874To configure this option:
875
876.. code-block:: yaml
877
878 nova:
879 compute:
880 max_concurrent_live_migrations: 1 # (1 is the default)
881
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300882Live migration with auto converge
883----------------------------------
884
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300885Auto converge throttles down CPU if a progress of on-going live
886migration is slow
887https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300888
889.. code-block:: yaml
890
891 nova:
892 compute:
893 libvirt:
894 live_migration_permit_auto_converge: False # (False is the default)
895
896.. code-block:: yaml
897
898 nova:
899 controller:
900 libvirt:
901 live_migration_permit_auto_converge: False # (False is the default)
902
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400903Enhanced logging with logging.conf
904----------------------------------
905
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300906By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400907
908That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400909
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300910* ``openstack_log_appender``
911 Set to true to enable log_config_append for all OpenStack services
912
913* ``openstack_fluentd_handler_enabled``
914 Set to true to enable FluentHandler for all Openstack services
915
916* ``openstack_ossyslog_handler_enabled``
917 Set to true to enable OSSysLogHandler for all Openstack services
918
919Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
920are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400921
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400922Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400923
924.. code-block:: yaml
925
926 nova:
927 controller:
928 logging:
929 log_appender: true
930 log_handlers:
931 watchedfile:
932 enabled: true
933 fluentd:
934 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200935 ossyslog:
936 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400937
938 compute:
939 logging:
940 log_appender: true
941 log_handlers:
942 watchedfile:
943 enabled: true
944 fluentd:
945 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200946 ossyslog:
947 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000948
Vasyl Saienko7243a952018-05-11 21:26:54 +0300949The log level might be configured per logger by using the
950following pillar structure:
951
952.. code-block:: yaml
953
954 nova:
955 compute:
956 logging:
957 loggers:
958 <logger_name>:
959 level: WARNING
960
961 nova:
962 compute:
963 logging:
964 loggers:
965 <logger_name>:
966 level: WARNING
967
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000968Configure syslog parameters for libvirtd
969----------------------------------------
970
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300971To configure syslog parameters for libvirtd the below pillar
972structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000973by libvirtd. These values might be known from the documentation.
974
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300975.. code-block:: yaml
976
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000977 nova:
978 compute:
979 libvirt:
980 logging:
981 level: 3
982 filters: '3:remote 4:event'
983 outputs: '3:syslog:libvirtd'
984 buffer_size: 64
985
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300986Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000987
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300988Logging level: 4 errors, 3 warnings, 2 information, 1 debug
989basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000990
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300991Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000992
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300993A filter allows to select a different logging level for a given category
994of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000995
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300996The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000997
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300998* ``x:name``
999* ``x:+name``
1000 where name is a string which is matched against source file name,
1001 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
1002 tells libvirt to log stack trace for each message matching name,
1003 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001004
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001005* ``1: DEBUG``
1006* ``2: INFO``
1007* ``3: WARNING``
1008* ``4: ERROR``
1009
1010Multiple filter can be defined in a single @filters, they just
1011need to be separated by spaces.
1012
1013For example, to only get warning or errors from the remote layer
1014and only errors from the event layer: ``log_filters="3:remote 4:event``
1015
1016Logging outputs:
1017
1018An output is one of the places to save logging information
1019The format for an output can be:
1020
1021* ``x:stderr``
1022 Output goes to stderr
1023
1024* ``x:syslog:name``
1025 Use syslog for the output and use the given name as the ident
1026
1027* ``x:file:file_path``
1028 output to a file, with the given filepath
1029
1030 In all case the x prefix is the minimal level, acting as a filter
1031
1032* ``1: DEBUG``
1033* ``2: INFO``
1034* ``3: WARNING``
1035* ``4: ERROR``
1036
1037Multiple output can be defined, they just need to be separated by spaces.
1038For example, to log all warnings and errors to syslog under the libvirt
1039dident: ``log_outputs="3:syslog:libvirtd``
1040
1041Log debug buffer size: default 64
1042The daemon keeps an internal debug log buffer which will be dumped
1043in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
1044allows to override the default buffer size in kilobytes.
1045If value is ``0`` or less the debug log buffer is deactivated
1046``log_buffer_size = 64``
1047
1048To configure the logging parameters for QEMU, the below pillar
1049structure and logging parameters should be used:
1050
1051.. code-block:: yaml
1052
1053 nova:
1054 compute:
1055 qemu:
1056 logging:
1057 handler: logd
1058 virtlog:
1059 enabled: true
1060 level: 4
1061 filters: '3:remote 3:event'
1062 outputs: '4:syslog:virtlogd'
1063 max_clients: 512
1064 max_size: 2097100
1065 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001066
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001067Inject password to VM
1068---------------------
1069
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001070By default nova blocks up any inject to VM because
1071``inject_partition`` param is equal to ``-2``.
1072If you want to inject password to VM, you will need to
1073define ``inject_partition`` greater or equal to ``-1`` and
1074define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001075
1076For example:
1077
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001078.. code-block:: yaml
1079
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001080 nova:
1081 compute:
1082 inject_partition: '-1'
1083 inject_password: True
1084
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001085Allow the injection of an admin password for instance only at
1086``create`` and ``rebuild`` process.
1087
1088There is no agent needed within the image to do this. If *libguestfs* is
1089available on the host, it will be used. Otherwise *nbd* is used. The file
1090system of the image will be mounted and the admin password, which is provided
1091in the REST API call will be injected as password for the root user. If no
1092root user is available, the instance won't be launched and an error is thrown.
1093Be aware that the injection is *not* possible when the instance gets launched
1094from a volume.
1095
1096Possible values:
1097
1098* ``True``
1099 Allows the injection
1100
1101* ``False`` (default)
1102 Disallows the injection. Any via the REST API provided
1103 admin password will be silently ignored.
1104
1105Related options:
1106
1107* ``inject_partition``
1108 Decides about the discovery and usage of the file system.
1109 It also can disable the injection at all.
1110 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001111
1112You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001113https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001114
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001115Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001116---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001117
1118By default TLS is disabled.
1119
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001120Enable TLS transport:
1121
1122.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001123
1124 compute:
1125 libvirt:
1126 tls:
1127 enabled: True
1128
1129You able to set custom certificates in pillar:
1130
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001131.. code-block:: yaml
1132
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001133 nova:
1134 compute:
1135 libvirt:
1136 tls:
1137 key: (certificate content)
1138 cert: (certificate content)
1139 cacert: (certificate content)
1140 client:
1141 key: (certificate content)
1142 cert: (certificate content)
1143
Dmitry Teselkin77d9dac2019-04-18 16:43:50 +03001144It is possible to limit allowed SSL / TLS ciphers using libvirt's tls_priority:
1145
1146.. code-block:: yaml
1147
1148 nova:
1149 compute:
1150 libvirt:
1151 tls:
1152 priority: <TLS priority string>
1153
1154Example priority strings are:
1155
1156- The system imposed security level:
1157
1158.. code-block:: text
1159
1160 "SYSTEM"
1161
1162- The default priority without the HMAC-MD5:
1163
1164.. code-block:: text
1165
1166 "NORMAL:-MD5"
1167
1168- Specifying RSA with AES-128-CBC:
1169
1170.. code-block:: text
1171
1172 "NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
1173
1174- Specifying the defaults plus ARCFOUR-128:
1175
1176.. code-block:: text
1177
1178 "NORMAL:+ARCFOUR-128"
1179
1180- Enabling the 128-bit secure ciphers, while disabling TLS 1.0:
1181
1182.. code-block:: text
1183
1184 "SECURE128:-VERS-TLS1.0"
1185
1186- Enabling the 128-bit and 192-bit secure ciphers, while disabling all TLS
1187 versions except TLS 1.2:
1188
1189.. code-block:: text
1190
1191 "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2"
1192
1193More on TLS Priority Strings:
1194
1195- https://gnutls.org/manual/html_node/Priority-Strings.html
1196
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001197Controlling access by `tls_allowed_dn_list`.
1198Enable an access control list of client certificate Distinguished Names (DNs)
1199which can connect to the TLS port on this server. The default is that DNs are
1200not checked. This list may contain wildcards such as
1201"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1202for the format of the wildcards.
1203Note that if this is an empty list, no client can connect.
1204Note also that GnuTLS returns DNs without spaces after commas between
1205the fields (and this is what we check against), but the openssl x509 tool
1206shows spaces.
1207
1208.. code-block:: yaml
1209
1210 nova:
1211 compute:
1212 libvirt:
1213 tls:
1214 tls_allowed_dn_list:
1215 host1:
1216 enabled: true
1217 value: 'C=foo,CN=cmp1'
1218 host2:
1219 enabled: true
1220 value: 'C=foo,CN=cmp2'
1221
1222
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001223You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001224https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001225
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001226Enable transport + authentication for VNC over TLS
1227---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001228# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001229
1230By default communication between nova-novncproxy and qemu service is unsecure.
1231
1232compute:
1233 qemu:
1234 vnc:
1235 tls:
1236 enabled: True
1237
1238controller:
1239 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001240 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001241 tls:
1242 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001243 # This section responsible for communication between nova-novncproxy and qemu service
1244 vencrypt:
1245 tls:
1246 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001247
1248You able to set custom certificates in pillar:
1249
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001250nova:
1251 compute:
1252 qemu:
1253 vnc:
1254 tls:
1255 cacert (certificate content)
1256 cert (certificate content)
1257 key (certificate content)
1258
1259nova:
1260 controller:
1261 novncproxy:
1262 tls:
1263 server:
1264 cert (certificate content)
1265 key (certificate content)
1266 vencrypt:
1267 tls:
1268 cacert (certificate content)
1269 cert (certificate content)
1270 key (certificate content)
1271
1272
1273You can read more about it here:
1274 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1275
1276Enable communication between noVNC proxy and client machine over TLS
1277---------------------
1278
1279By default communication between noVNC proxy and client machine is unsecure.
1280
1281 controller:
1282 novncproxy:
1283 tls:
1284 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001285
1286 nova:
1287 controller:
1288 novncproxy:
1289 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001290 server:
1291 cert (certificate content)
1292 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001293
1294You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001295 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001296
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001297Enable x509 and ssl communication between Nova and Galera cluster.
1298---------------------
1299By default communication between Nova and Galera is unsecure.
1300
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001301nova:
1302 controller:
1303 database:
1304 x509:
1305 enabled: True
1306
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001307You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001308
1309nova:
1310 controller:
1311 database:
1312 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001313 cacert: (certificate content)
1314 cert: (certificate content)
1315 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001316
1317You can read more about it here:
1318 https://docs.openstack.org/security-guide/databases/database-access-control.html
1319
Oleksandr Shyshkod96a0992019-03-29 11:18:25 +00001320Define config option which allows to use nova-api service behind proxy.(Only Mitaka)
1321---------------------
1322The HTTP Header that will be used to determine what the original request protocol
1323scheme was, even if it was hidden by a SSL termination proxy.
1324
1325 nova:
1326 controller:
1327 secure_proxy_ssl_header: HTTP_X_FORWARDED_PROTO
1328
1329You can read more about it here:
1330 https://docs.openstack.org/mitaka/config-reference/compute/config-options.html
1331
obryndziif7957912019-01-31 00:55:56 +00001332Nova database connection setup:
1333========
1334
1335.. code-block:: yaml
1336
1337 nova:
1338 controller:
1339 enabled: True
1340 ...
1341 database:
1342 idle_timeout: 180
1343 min_pool_size: 100
1344 max_pool_size: 700
1345 max_overflow: 100
1346 retry_interval: 5
1347 max_retries: '-1'
1348 db_max_retries: 3
1349 db_retry_interval: 1
1350 connection_debug: 10
1351 pool_timeout: 120
1352
Oleksandr Bryndzii6d821f52019-02-20 15:51:15 +02001353
1354Configure nova to use service user tokens:
1355========
1356Long-running operations such as live migration or snapshot can sometimes overrun the
1357expiry of the user token. In such cases, post operations such as cleaning up after a
1358live migration can fail when the nova-compute service needs to cleanup resources in
1359other services, such as in the block-storage (cinder) or networking (neutron) services.
1360
1361This patch enables nova to use service user tokens to supplement the regular user token
1362used to initiate the operation. The identity service (keystone) will then authenticate
1363a request using the service user token if the user token has already expired.
1364
1365.. code-block:: yaml
1366
1367 nova:
1368 controller:
1369 enabled: True
1370 ...
1371 service_user:
1372 enabled: True
1373 user_domain_id: default
1374 project_domain_id: default
1375 project_name: service
1376 username: nova
1377 password: pswd
1378
Oleksandr Bryndzii6af347b2019-04-23 15:34:42 +03001379Change default resource quotas using configmap template settings
1380========
1381
1382.. code-block:: yaml
1383
1384 nova:
1385 controller:
1386 configmap:
1387 quota:
1388 instances: 10
1389 cores: 20
1390 ram: 51200
1391 metadata_items: 128
1392 injected_files: 5
1393 injected_file_content_bytes: 10240
1394 injected_file_path_length: 255
1395 key_pairs: 100
1396 server_groups: 10
1397 server_group_members: 10
1398 reservation_expire: 86400
1399 until_refresh: 0
1400 max_age: 0
1401
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001402Upgrades
1403========
1404
1405Each openstack formula provide set of phases (logical bloks) that will help to
1406build flexible upgrade orchestration logic for particular components. The list
1407of phases might and theirs descriptions are listed in table below:
1408
1409+-------------------------------+------------------------------------------------------+
1410| State | Description |
1411+===============================+======================================================+
1412| <app>.upgrade.service_running | Ensure that all services for particular application |
1413| | are enabled for autostart and running |
1414+-------------------------------+------------------------------------------------------+
1415| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1416| | disabled for autostart and dead |
1417+-------------------------------+------------------------------------------------------+
1418| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1419| | are installed to latest available version. |
1420| | This will not upgrade data plane packages like qemu |
1421| | and openvswitch as usually minimal required version |
1422| | in openstack services is really old. The data plane |
1423| | packages should be upgraded separately by `apt-get |
1424| | upgrade` or `apt-get dist-upgrade` |
1425| | Applying this state will not autostart service. |
1426+-------------------------------+------------------------------------------------------+
1427| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1428+-------------------------------+------------------------------------------------------+
1429| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1430| | cloud before running upgrade. |
1431| | Only non destructive actions will be applied during |
1432| | this phase. Perform service built in service check |
1433| | like (keystone-manage doctor and nova-status upgrade)|
1434+-------------------------------+------------------------------------------------------+
1435| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1436| | phase resources will be gracefully removed from |
1437| | current node if it is allowed. Services for upgraded |
1438| | application will be set to admin disabled state to |
1439| | make sure node will not participate in resources |
1440| | scheduling. For example on gtw nodes this will set |
1441| | all agents to admin disable state and will move all |
1442| | routers to other agents. |
1443+-------------------------------+------------------------------------------------------+
1444| <app>.upgrade.upgrade | This state will basically upgrade application on |
1445| | particular target. Stop services, render |
1446| | configuration, install new packages, run offline |
1447| | dbsync (for ctl), start services. Data plane should |
1448| | not be affected, only OpenStack python services. |
1449+-------------------------------+------------------------------------------------------+
1450| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1451+-------------------------------+------------------------------------------------------+
1452| <app>.upgrade.post | This phase should be launched only when upgrade of |
1453| | the cloud is completed. Cleanup temporary files, |
1454| | perform other post upgrade tasks. |
1455+-------------------------------+------------------------------------------------------+
1456| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1457| | operations, verify do not have dead network |
1458| | agents/compute services) |
1459+-------------------------------+------------------------------------------------------+
Oleksandr Pidrepnyi60df8722019-06-07 16:18:11 +03001460
1461
1462Don't manage services scheduling while upgrade
1463----------------------------------------------
1464For some special cases, don't manage services scheduling both enable and disable
1465before and after upgrade procedure.
1466
1467If 'manage_service_maintenance: true' or not present - default behavior, disable services
1468before upgrade and enable it after upgrade.
1469If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
1470scheduling before and after upgrade.
1471
1472.. code-block:: yaml
1473
1474 nova:
1475 upgrade:
1476 manage_service_maintenance: false