blob: d1702ac0df4708c8b232e33dc6ad1ca1a1101237 [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
sgarbuzcc02c7f2018-10-25 14:29:30 +030033 consoleauth:
34 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020035 bind:
36 public_address: 10.0.0.122
37 public_name: openstack.domain.com
38 novncproxy_port: 6080
39 database:
40 engine: mysql
41 host: 127.0.0.1
42 port: 3306
43 name: nova
44 user: nova
45 password: pwd
46 identity:
47 engine: keystone
48 host: 127.0.0.1
49 port: 35357
50 user: nova
51 password: pwd
52 tenant: service
53 message_queue:
54 engine: rabbitmq
55 host: 127.0.0.1
56 port: 5672
57 user: openstack
58 password: pwd
59 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000060 pci:
61 alias:
62 alias1:
63 device_type: "type-PF"
64 name: "a1"
65 product_id: "154d"
66 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020067 network:
68 engine: neutron
69 host: 127.0.0.1
70 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020071 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020072 identity:
73 engine: keystone
74 host: 127.0.0.1
75 port: 35357
76 user: neutron
77 password: pwd
78 tenant: service
79 metadata:
80 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010081 audit:
82 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010083 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030084 barbican:
85 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020086
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030087Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020088
89.. code-block:: yaml
90
91 nova:
92 controller:
93 version: juno
94 source:
95 engine: pkg
96 address: http://...
97 ....
98
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030099Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200100
101.. code-block:: yaml
102
103 nova:
104 controller:
105 ....
106 message_queue:
107 engine: rabbitmq
108 members:
109 - host: 10.0.16.1
110 - host: 10.0.16.2
111 - host: 10.0.16.3
112 user: openstack
113 password: pwd
114 virtual_host: '/openstack'
115 ....
116
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300117Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100118
119.. code-block:: yaml
120
121 nova:
122 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100123 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100124 enabled: true
125 ....
126 filter_factory: 'keystonemiddleware.audit:filter_factory'
127 map_file: '/etc/pycadf/nova_api_audit_map.conf'
128 ....
129
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300130Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200131
132.. code-block:: yaml
133
134 nova:
135 controller:
136 cors:
137 allowed_origin: https:localhost.local,http:localhost.local
138 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
139 allow_methods: GET,PUT,POST,DELETE,PATCH
140 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
141 allow_credentials: True
142 max_age: 86400
143
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300144Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400145
146.. code-block:: yaml
147
148 nova:
149 controller:
150 ....
151 policy:
152 context_is_admin: 'role:admin or role:administrator'
153 'compute:create': 'rule:admin_or_owner'
154 # Add key without value to remove line from policy.json
155 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200156
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300157Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300158
159.. code-block:: yaml
160
161 nova:
162 controller:
163 ....
164 barbican:
165 enabled: true
166
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000167Define aliases for PCI devices:
168.. code-block:: yaml
169
170 nova:
171 controller:
172 ...
173 pci:
174 alias:
175 alias1:
176 device_type: "type-PF"
177 name: "a1"
178 product_id: "154d"
179 vendor_id: "8086"
180
Jiri Broulik789179a2018-02-13 16:16:46 +0100181Enable cells update:
182
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300183.. note:: Useful when upgrading Openstack. To update cells to test
184 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100185
186.. code-block:: yaml
187
188 nova:
189 controller:
190 update_cells: true
191
Dzmitry Stremkouskif8497672019-11-03 10:36:46 +0100192Increase number of chunks for online db migrations:
193
194.. note:: This only should be done in offline as large number of
195 rows locked by this process may cause service outage, which
196 may not be expected.
197
198.. code-block:: yaml
199
200 nova:
201 controller:
202 db_migrations:
203 max_count: 5000000
Kirill Bespalov64617172017-07-11 14:43:14 +0300204
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300205Configuring TLS communications
206------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300207
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300208.. note:: By default system wide installed CA certs are used,
209 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300210
211- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300212
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300213 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300214
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300215 nova:
216 compute:
217 message_queue:
218 port: 5671
219 ssl:
220 enabled: True
221 (optional) cacert: cert body if the cacert_file does not exists
222 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
223 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300224
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300225- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300226
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300227 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300228
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300229 nova:
230 controller:
231 database:
232 ssl:
233 enabled: True
234 (optional) cacert: cert body if the cacert_file does not exists
235 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300236
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300237- **Openstack HTTPS API**
238
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300239 Set the ``https`` as protocol at ``nova:compute`` and
240 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300241
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300242 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300243
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300244 nova:
245 controller :
246 identity:
247 protocol: https
248 (optional) cacert_file: /etc/openstack/proxy.pem
249 network:
250 protocol: https
251 (optional) cacert_file: /etc/openstack/proxy.pem
252 glance:
253 protocol: https
254 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300255
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300256 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300257
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300258 nova:
259 compute:
260 identity:
261 protocol: https
262 (optional) cacert_file: /etc/openstack/proxy.pem
263 network:
264 protocol: https
265 (optional) cacert_file: /etc/openstack/proxy.pem
266 image:
267 protocol: https
268 (optional) cacert_file: /etc/openstack/proxy.pem
269 ironic:
270 protocol: https
271 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300272
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300273.. note:: Barbican, Cinder, and placement url endpoints are discovering
274 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300275
Filip Pytloun4a72d792015-10-06 16:28:32 +0200276Compute nodes
277-------------
278
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300279Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200280
281.. code-block:: yaml
282
283 nova:
284 compute:
285 version: juno
286 enabled: true
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300287 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300288 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100289 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200290 aggregates:
291 - hosts_with_fc
292 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200293 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200294 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400295 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300296 my_ip: 10.1.0.16
Filip Pytloun4a72d792015-10-06 16:28:32 +0200297 bind:
298 vnc_address: 172.20.0.100
299 vnc_port: 6080
300 vnc_name: openstack.domain.com
301 vnc_protocol: http
302 database:
303 engine: mysql
304 host: 127.0.0.1
305 port: 3306
306 name: nova
307 user: nova
308 password: pwd
309 identity:
310 engine: keystone
311 host: 127.0.0.1
312 port: 35357
313 user: nova
314 password: pwd
315 tenant: service
316 message_queue:
317 engine: rabbitmq
318 host: 127.0.0.1
319 port: 5672
320 user: openstack
321 password: pwd
322 virtual_host: '/openstack'
323 image:
324 engine: glance
325 host: 127.0.0.1
326 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000327 pci:
328 alias:
329 alias1:
330 device_type: "type-PF"
331 name: "a1"
332 product_id: "154d"
333 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200334 network:
335 engine: neutron
336 host: 127.0.0.1
337 port: 9696
338 identity:
339 engine: keystone
340 host: 127.0.0.1
341 port: 35357
342 user: neutron
343 password: pwd
344 tenant: service
345 qemu:
346 max_files: 4096
347 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300348 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200349
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300350Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
351Each process should have uniq host identifier. However multiple computes might be running on
352single host. It is not recommended to have multiple computes running on different hosts that
353manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
354
355.. code-block:: yaml
356
357 nova:
358 compute:
359 compute_driver: vmwareapi.VMwareVCDriver
360 vmware:
361 host_username: vmware
362 host_password: vmware
363 cluster_name: vmware_cluster01
364 host_ip: 1.2.3.4
365
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300366Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200367
368.. code-block:: yaml
369
370 nova:
371 compute:
372 enabled: true
373 ...
374 qemu:
375 user: nova
376 group: cinder
377 dynamic_ownership: 1
378
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300379Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300380
381.. code-block:: yaml
382
383 nova:
384 compute:
385 enabled: true
386 ...
387 user:
388 groups:
389 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200390
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300391Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200392
393.. code-block:: yaml
394
395 nova:
396 compute:
397 enabled: true
398 ...
399 networking: contrail
400
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000401Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200402
403.. code-block:: yaml
404
405 nova:
406 compute:
407 enabled: true
408 ...
409 cache:
410 engine: memcached
411 members:
412 - host: 127.0.0.1
413 port: 11211
414 - host: 127.0.0.1
415 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000416 security:
417 enabled: true
418 strategy: ENCRYPT
419 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200420
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300421Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200422
423.. code-block:: yaml
424
425 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300426 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200427 ....
428 message_queue:
429 engine: rabbitmq
430 members:
431 - host: 10.0.16.1
432 - host: 10.0.16.2
433 - host: 10.0.16.3
434 user: openstack
435 password: pwd
436 virtual_host: '/openstack'
437 ....
438
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300439Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000440
441.. code-block:: yaml
442
443 nova:
444 compute:
445 enabled: true
446 ...
447 ceph:
448 ephemeral: yes
449 rbd_pool: nova
450 rbd_user: nova
451 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300452 ....
maxstack39e6aca2016-05-04 13:50:13 +0000453
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300454Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300455
456.. code-block:: yaml
457
458 nova:
459 compute:
460 enabled: true
461 ...
462 lvm:
463 ephemeral: yes
464 images_volume_group: nova_vg
465
466 linux:
467 storage:
468 lvm:
469 nova_vg:
470 name: nova_vg
471 devices:
472 - /dev/sdf
473 - /dev/sdd
474 - /dev/sdg
475 - /dev/sde
476 - /dev/sdc
477 - /dev/sdj
478 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000479
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300480Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300481
482.. code-block:: yaml
483
484 nova:
485 compute:
486 ....
487 barbican:
488 enabled: true
489
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000490Define aliases for PCI devices:
491.. code-block:: yaml
492
493 nova:
494 compute:
495 ...
496 pci:
497 alias:
498 alias1:
499 device_type: "type-PF"
500 name: "a1"
501 product_id: "154d"
502 vendor_id: "8086"
503
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300504Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200505
506.. code-block:: yaml
507
508 nova:
509 controller:
510 enabled: true
511 ...
512 metadata:
513 bind:
514 address: 1.2.3.4
515 port: 8776
516
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200517Define multipath for nova compute:
518
519.. code-block:: yaml
520
521 nova:
522 compute:
523 ....
524 libvirt:
525 volume_use_multipath: True
526
Oleh Hryhorov5add3b22019-03-06 17:00:00 +0000527To disable or enable StrictHostKeyChecking and discover
528compute nodes fingerprints the below pillar should be used:
529
530.. code-block:: yaml
531
532 nova:
533 compute:
534 ....
535 openssh:
536 stricthostkeychecking: True
537 discover_compute_hosts: True
538
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100539Client role
540-----------
541
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300542Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300543
544.. code-block:: yaml
545
546 nova:
547 compute:
548 instances_path: /mnt/nova/instances
549
550 linux:
551 storage:
552 enabled: true
553 mount:
554 nfs_nova:
555 enabled: true
556 path: ${nova:compute:instances_path}
557 device: 172.31.35.145:/data
558 file_system: nfs
559 opts: rw,vers=3
560
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300561Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100562
563.. code-block:: yaml
564
565 nova:
566 client:
567 enabled: true
568 server:
569 identity:
570 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100571 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100572 flavor_id: 10
573 ram: 4096
574 disk: 10
575 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100576 flavor2:
577 flavor_id: auto
578 ram: 4096
579 disk: 20
580 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100581 identity1:
582 flavor:
583 ...
584
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300585Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100586
587.. code-block:: yaml
588
589 nova:
590 client:
591 enabled: true
592 server:
593 identity:
594 availability_zones:
595 - availability_zone_01
596 - availability_zone_02
597
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300598Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200599
600.. code-block:: yaml
601
602 nova:
603 client:
604 enabled: true
605 server:
606 identity:
607 aggregates:
608 - aggregate1
609 - aggregate2
610
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300611Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300612
613.. code-block:: yaml
614
615 nova:
616 controller:
617 upgrade_levels:
618 compute: juno
619
620 nova:
621 compute:
622 upgrade_levels:
623 compute: juno
624
Petr Jedinýd855ef22017-03-06 22:24:33 +0100625SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100626------
627
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300628Add ``PciPassthroughFilter`` into scheduler filters and NICs on
629specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100630
631.. code-block:: yaml
632
633 nova:
634 controller:
635 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000636 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100637
638 nova:
639 compute:
640 sriov:
641 nic_one:
642 devname: eth1
643 physical_network: physnet1
644
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000645.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
646 nova.conf file in appropriate format.
647
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100648CPU pinning & Hugepages
649-----------------------
650
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300651CPU pinning of virtual machine instances to dedicated physical
652CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100653
654.. code-block:: yaml
655
656 nova:
657 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000658 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100659
660 nova:
661 compute:
662 vcpu_pin_set: 2,3,4,5
663 hugepages:
664 mount_points:
665 - path: /mnt/hugepages_1GB
666 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100667
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200668Custom Scheduler filters
669------------------------
670
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300671If you have a custom filter, that needs to be included in the
672scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200673
674.. code-block:: yaml
675
676 nova:
677 controller:
678 scheduler_custom_filters:
679 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
680
681 # 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 +0000682 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200683
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400684 # Since Queens version a sequence could be used as well:
685 ~scheduler_default_filters:
686 - DifferentHostFilter
687 - SameHostFilter
688 ...
689 - MyCustomFilter
690
691
Michel Nederlofeb566f62017-04-21 15:37:47 +0200692Hardware Trip/Unmap Support
693---------------------------
694
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300695To enable TRIM support for ephemeral images (thru nova managed
696images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200697
698.. code-block:: yaml
699
700 nova:
701 compute:
702 libvirt:
703 hw_disk_discard: unmap
704
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300705To actually utilize this feature, the following metadata must be
706set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200707
708.. code-block:: bash
709
710 glance image-update --property hw_scsi_model=virtio-scsi <image>
711 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100712
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000713Scheduler Host Manager
714----------------------
715
716Specify a custom host manager.
717
Thom Gerdesec00afd2017-04-07 18:06:59 +0000718libvirt CPU mode
719----------------
720
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300721Allow setting the model of CPU that is exposed to a VM. This
722allows for better support live migration between hypervisors with
723different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200724
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000725.. code-block:: yaml
726
727 nova:
728 controller:
729 scheduler_host_manager: ironic_host_manager
730
Thom Gerdesec00afd2017-04-07 18:06:59 +0000731 compute:
732 cpu_mode: host-model
733
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200734Nova compute cpu model
735----------------------
736
737.. code-block:: yaml
738
739 nova:
740 compute:
741 cpu_mode: custom
742 libvirt:
743 cpu_model: IvyBridge
744
Oleksandr Pidrepnyief9fd782019-03-04 19:18:19 +0200745RNG (Random Number Generator) device path
746----------------------
747
748The path to an RNG (Random Number Generator) device that will be used
749as the source of entropy on the host.
750The recommended source of entropy is /dev/urandom.
751Permitted options are: /dev/random, /dev/urandom or /dev/hwrng.
752Default: /dev/urandom
753
754.. code-block:: yaml
755
756 nova:
757 controller:
758 libvirt:
759 rng_dev_path: /dev/random
760
761 compute:
762 libvirt:
763 rng_dev_path: /dev/random
764
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200765
Michel Nederloff7eefb22017-07-10 11:14:33 +0200766Nova compute workarounds
767------------------------
768
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300769Live snapshotting is disabled by default in nova. To enable
770this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200771
772From manual:
773
774.. code-block:: yaml
775
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300776 When using libvirt 1.2.2 live snapshots fail intermittently under load
777 (likely related to concurrent libvirt/qemu operations). This config
778 option provides a mechanism to disable live snapshot, in favor of cold
779 snapshot, while this is resolved. Cold snapshot causes an instance
780 outage while the guest is going through the snapshotting process.
781
782 For more information, refer to the bug report:
783
784 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200785
786Configurable pillar data:
787
788.. code-block:: yaml
789
790 nova:
791 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200792 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200793 disable_libvirt_livesnapshot: False
794
Michel Nederlofb51a5142017-06-27 08:31:35 +0200795Config drive options
796--------------------
797
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300798See example below on how to configure the options for the
799config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200800
801.. code-block:: yaml
802
803 nova:
804 compute:
805 config_drive:
806 forced: True # Default: True
807 cdrom: True # Default: False
808 format: iso9660 # Default: vfat
809 inject_password: False # Default: False
810
Michel Nederloff81919b2017-11-20 09:37:07 +0100811Number of concurrent live migrates
812----------------------------------
813
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300814Default is to have no concurrent live migrations (so 1
815live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100816
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300817Excerpt from config options page
818https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100819
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300820Maximum number of live migrations to run concurrently. This limit is
821enforced to avoid outbound live migrations overwhelming the host/network
822and causing failures. It is not recommended that you change this unless
823you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100824
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300825Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100826
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300827- 0 : treated as unlimited.
828- Negative value defaults to 0.
829- Any positive integer representing maximum number of live migrations
830 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100831
832To configure this option:
833
834.. code-block:: yaml
835
836 nova:
837 compute:
838 max_concurrent_live_migrations: 1 # (1 is the default)
839
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300840Live migration with auto converge
841----------------------------------
842
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300843Auto converge throttles down CPU if a progress of on-going live
844migration is slow
845https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300846
847.. code-block:: yaml
848
849 nova:
850 compute:
851 libvirt:
852 live_migration_permit_auto_converge: False # (False is the default)
853
854.. code-block:: yaml
855
856 nova:
857 controller:
858 libvirt:
859 live_migration_permit_auto_converge: False # (False is the default)
860
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400861Enhanced logging with logging.conf
862----------------------------------
863
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300864By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400865
866That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400867
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300868* ``openstack_log_appender``
869 Set to true to enable log_config_append for all OpenStack services
870
871* ``openstack_fluentd_handler_enabled``
872 Set to true to enable FluentHandler for all Openstack services
873
874* ``openstack_ossyslog_handler_enabled``
875 Set to true to enable OSSysLogHandler for all Openstack services
876
877Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
878are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400879
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400880Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400881
882.. code-block:: yaml
883
884 nova:
885 controller:
886 logging:
887 log_appender: true
888 log_handlers:
889 watchedfile:
890 enabled: true
891 fluentd:
892 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200893 ossyslog:
894 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400895
896 compute:
897 logging:
898 log_appender: true
899 log_handlers:
900 watchedfile:
901 enabled: true
902 fluentd:
903 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200904 ossyslog:
905 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000906
Vasyl Saienko7243a952018-05-11 21:26:54 +0300907The log level might be configured per logger by using the
908following pillar structure:
909
910.. code-block:: yaml
911
912 nova:
913 compute:
914 logging:
915 loggers:
916 <logger_name>:
917 level: WARNING
918
919 nova:
920 compute:
921 logging:
922 loggers:
923 <logger_name>:
924 level: WARNING
925
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000926Configure syslog parameters for libvirtd
927----------------------------------------
928
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300929To configure syslog parameters for libvirtd the below pillar
930structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000931by libvirtd. These values might be known from the documentation.
932
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300933.. code-block:: yaml
934
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000935 nova:
936 compute:
937 libvirt:
938 logging:
939 level: 3
940 filters: '3:remote 4:event'
941 outputs: '3:syslog:libvirtd'
942 buffer_size: 64
943
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300944Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000945
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300946Logging level: 4 errors, 3 warnings, 2 information, 1 debug
947basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000948
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300949Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000950
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300951A filter allows to select a different logging level for a given category
952of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000953
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300954The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000955
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300956* ``x:name``
957* ``x:+name``
958 where name is a string which is matched against source file name,
959 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
960 tells libvirt to log stack trace for each message matching name,
961 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000962
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300963* ``1: DEBUG``
964* ``2: INFO``
965* ``3: WARNING``
966* ``4: ERROR``
967
968Multiple filter can be defined in a single @filters, they just
969need to be separated by spaces.
970
971For example, to only get warning or errors from the remote layer
972and only errors from the event layer: ``log_filters="3:remote 4:event``
973
974Logging outputs:
975
976An output is one of the places to save logging information
977The format for an output can be:
978
979* ``x:stderr``
980 Output goes to stderr
981
982* ``x:syslog:name``
983 Use syslog for the output and use the given name as the ident
984
985* ``x:file:file_path``
986 output to a file, with the given filepath
987
988 In all case the x prefix is the minimal level, acting as a filter
989
990* ``1: DEBUG``
991* ``2: INFO``
992* ``3: WARNING``
993* ``4: ERROR``
994
995Multiple output can be defined, they just need to be separated by spaces.
996For example, to log all warnings and errors to syslog under the libvirt
997dident: ``log_outputs="3:syslog:libvirtd``
998
999Log debug buffer size: default 64
1000The daemon keeps an internal debug log buffer which will be dumped
1001in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
1002allows to override the default buffer size in kilobytes.
1003If value is ``0`` or less the debug log buffer is deactivated
1004``log_buffer_size = 64``
1005
1006To configure the logging parameters for QEMU, the below pillar
1007structure and logging parameters should be used:
1008
1009.. code-block:: yaml
1010
1011 nova:
1012 compute:
1013 qemu:
1014 logging:
1015 handler: logd
1016 virtlog:
1017 enabled: true
1018 level: 4
1019 filters: '3:remote 3:event'
1020 outputs: '4:syslog:virtlogd'
1021 max_clients: 512
1022 max_size: 2097100
1023 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001024
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001025Inject password to VM
1026---------------------
1027
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001028By default nova blocks up any inject to VM because
1029``inject_partition`` param is equal to ``-2``.
1030If you want to inject password to VM, you will need to
1031define ``inject_partition`` greater or equal to ``-1`` and
1032define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001033
1034For example:
1035
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001036.. code-block:: yaml
1037
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001038 nova:
1039 compute:
1040 inject_partition: '-1'
1041 inject_password: True
1042
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001043Allow the injection of an admin password for instance only at
1044``create`` and ``rebuild`` process.
1045
1046There is no agent needed within the image to do this. If *libguestfs* is
1047available on the host, it will be used. Otherwise *nbd* is used. The file
1048system of the image will be mounted and the admin password, which is provided
1049in the REST API call will be injected as password for the root user. If no
1050root user is available, the instance won't be launched and an error is thrown.
1051Be aware that the injection is *not* possible when the instance gets launched
1052from a volume.
1053
1054Possible values:
1055
1056* ``True``
1057 Allows the injection
1058
1059* ``False`` (default)
1060 Disallows the injection. Any via the REST API provided
1061 admin password will be silently ignored.
1062
1063Related options:
1064
1065* ``inject_partition``
1066 Decides about the discovery and usage of the file system.
1067 It also can disable the injection at all.
1068 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001069
1070You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001071https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001072
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001073Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001074---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001075
1076By default TLS is disabled.
1077
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001078Enable TLS transport:
1079
1080.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001081
1082 compute:
1083 libvirt:
1084 tls:
1085 enabled: True
1086
1087You able to set custom certificates in pillar:
1088
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001089.. code-block:: yaml
1090
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001091 nova:
1092 compute:
1093 libvirt:
1094 tls:
1095 key: (certificate content)
1096 cert: (certificate content)
1097 cacert: (certificate content)
1098 client:
1099 key: (certificate content)
1100 cert: (certificate content)
1101
Dmitry Teselkin70862022019-04-18 16:43:50 +03001102It is possible to limit allowed SSL / TLS ciphers using libvirt's tls_priority:
1103
1104.. code-block:: yaml
1105
1106 nova:
1107 compute:
1108 libvirt:
1109 tls:
1110 priority: <TLS priority string>
1111
1112Example priority strings are:
1113
1114- The system imposed security level:
1115
1116.. code-block:: text
1117
1118 "SYSTEM"
1119
1120- The default priority without the HMAC-MD5:
1121
1122.. code-block:: text
1123
1124 "NORMAL:-MD5"
1125
1126- Specifying RSA with AES-128-CBC:
1127
1128.. code-block:: text
1129
1130 "NONE:+VERS-TLS-ALL:+MAC-ALL:+RSA:+AES-128-CBC:+SIGN-ALL:+COMP-NULL"
1131
1132- Specifying the defaults plus ARCFOUR-128:
1133
1134.. code-block:: text
1135
1136 "NORMAL:+ARCFOUR-128"
1137
1138- Enabling the 128-bit secure ciphers, while disabling TLS 1.0:
1139
1140.. code-block:: text
1141
1142 "SECURE128:-VERS-TLS1.0"
1143
1144- Enabling the 128-bit and 192-bit secure ciphers, while disabling all TLS
1145 versions except TLS 1.2:
1146
1147.. code-block:: text
1148
1149 "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2"
1150
1151More on TLS Priority Strings:
1152
1153- https://gnutls.org/manual/html_node/Priority-Strings.html
1154
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001155Controlling access by `tls_allowed_dn_list`.
1156Enable an access control list of client certificate Distinguished Names (DNs)
1157which can connect to the TLS port on this server. The default is that DNs are
1158not checked. This list may contain wildcards such as
1159"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1160for the format of the wildcards.
1161Note that if this is an empty list, no client can connect.
1162Note also that GnuTLS returns DNs without spaces after commas between
1163the fields (and this is what we check against), but the openssl x509 tool
1164shows spaces.
1165
1166.. code-block:: yaml
1167
1168 nova:
1169 compute:
1170 libvirt:
1171 tls:
1172 tls_allowed_dn_list:
1173 host1:
1174 enabled: true
1175 value: 'C=foo,CN=cmp1'
1176 host2:
1177 enabled: true
1178 value: 'C=foo,CN=cmp2'
1179
1180
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001181You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001182https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001183
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001184Enable transport + authentication for VNC over TLS
1185---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001186# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001187
1188By default communication between nova-novncproxy and qemu service is unsecure.
1189
1190compute:
1191 qemu:
1192 vnc:
1193 tls:
1194 enabled: True
1195
1196controller:
1197 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001198 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001199 tls:
1200 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001201 # This section responsible for communication between nova-novncproxy and qemu service
1202 vencrypt:
1203 tls:
1204 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001205
1206You able to set custom certificates in pillar:
1207
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001208nova:
1209 compute:
1210 qemu:
1211 vnc:
1212 tls:
1213 cacert (certificate content)
1214 cert (certificate content)
1215 key (certificate content)
1216
1217nova:
1218 controller:
1219 novncproxy:
1220 tls:
1221 server:
1222 cert (certificate content)
1223 key (certificate content)
1224 vencrypt:
1225 tls:
1226 cacert (certificate content)
1227 cert (certificate content)
1228 key (certificate content)
1229
1230
1231You can read more about it here:
1232 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1233
1234Enable communication between noVNC proxy and client machine over TLS
1235---------------------
1236
1237By default communication between noVNC proxy and client machine is unsecure.
1238
1239 controller:
1240 novncproxy:
1241 tls:
1242 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001243
1244 nova:
1245 controller:
1246 novncproxy:
1247 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001248 server:
1249 cert (certificate content)
1250 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001251
1252You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001253 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001254
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001255Enable x509 and ssl communication between Nova and Galera cluster.
1256---------------------
1257By default communication between Nova and Galera is unsecure.
1258
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001259nova:
1260 controller:
1261 database:
1262 x509:
1263 enabled: True
1264
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001265You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001266
1267nova:
1268 controller:
1269 database:
1270 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001271 cacert: (certificate content)
1272 cert: (certificate content)
1273 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001274
1275You can read more about it here:
1276 https://docs.openstack.org/security-guide/databases/database-access-control.html
1277
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001278Configure nova to use service user tokens:
1279========
1280Long-running operations such as live migration or snapshot can sometimes overrun the
1281expiry of the user token. In such cases, post operations such as cleaning up after a
1282live migration can fail when the nova-compute service needs to cleanup resources in
1283other services, such as in the block-storage (cinder) or networking (neutron) services.
1284
1285This patch enables nova to use service user tokens to supplement the regular user token
1286used to initiate the operation. The identity service (keystone) will then authenticate
1287a request using the service user token if the user token has already expired.
1288
1289.. code-block:: yaml
1290
1291 nova:
1292 controller:
1293 enabled: True
1294 ...
1295 service_user:
1296 enabled: True
1297 user_domain_id: default
1298 project_domain_id: default
1299 project_name: service
1300 username: nova
1301 password: pswd
1302
1303
obryndzii2ea61412019-01-31 00:55:56 +00001304Nova database connection setup:
1305========
1306
1307.. code-block:: yaml
1308
1309 nova:
1310 controller:
1311 enabled: True
1312 ...
1313 min_pool_size: 100
1314 max_pool_size: 700
1315 max_overflow: 100
1316 retry_interval: 5
1317 max_retries: '-1'
1318 db_max_retries: 3
1319 db_retry_interval: 1
1320 connection_debug: 10
1321 pool_timeout: 120
Oleksandr Bryndzii687b6542019-02-20 15:51:15 +02001322
Oleksandr Bryndziife715df2019-04-23 15:34:42 +03001323Change default resource quotas using configmap template settings
1324========
1325
1326.. code-block:: yaml
1327
1328 nova:
1329 controller:
1330 configmap:
1331 quota:
1332 instances: 10
1333 cores: 20
1334 ram: 51200
1335 metadata_items: 128
1336 injected_files: 5
1337 injected_file_content_bytes: 10240
1338 injected_file_path_length: 255
1339 key_pairs: 100
1340 server_groups: 10
1341 server_group_members: 10
1342 reservation_expire: 86400
1343 until_refresh: 0
1344 max_age: 0
1345
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001346Upgrades
1347========
1348
1349Each openstack formula provide set of phases (logical bloks) that will help to
1350build flexible upgrade orchestration logic for particular components. The list
1351of phases might and theirs descriptions are listed in table below:
1352
1353+-------------------------------+------------------------------------------------------+
1354| State | Description |
1355+===============================+======================================================+
1356| <app>.upgrade.service_running | Ensure that all services for particular application |
1357| | are enabled for autostart and running |
1358+-------------------------------+------------------------------------------------------+
1359| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1360| | disabled for autostart and dead |
1361+-------------------------------+------------------------------------------------------+
1362| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1363| | are installed to latest available version. |
1364| | This will not upgrade data plane packages like qemu |
1365| | and openvswitch as usually minimal required version |
1366| | in openstack services is really old. The data plane |
1367| | packages should be upgraded separately by `apt-get |
1368| | upgrade` or `apt-get dist-upgrade` |
1369| | Applying this state will not autostart service. |
1370+-------------------------------+------------------------------------------------------+
1371| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1372+-------------------------------+------------------------------------------------------+
1373| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1374| | cloud before running upgrade. |
1375| | Only non destructive actions will be applied during |
1376| | this phase. Perform service built in service check |
1377| | like (keystone-manage doctor and nova-status upgrade)|
1378+-------------------------------+------------------------------------------------------+
1379| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1380| | phase resources will be gracefully removed from |
1381| | current node if it is allowed. Services for upgraded |
1382| | application will be set to admin disabled state to |
1383| | make sure node will not participate in resources |
1384| | scheduling. For example on gtw nodes this will set |
1385| | all agents to admin disable state and will move all |
1386| | routers to other agents. |
1387+-------------------------------+------------------------------------------------------+
1388| <app>.upgrade.upgrade | This state will basically upgrade application on |
1389| | particular target. Stop services, render |
1390| | configuration, install new packages, run offline |
1391| | dbsync (for ctl), start services. Data plane should |
1392| | not be affected, only OpenStack python services. |
1393+-------------------------------+------------------------------------------------------+
1394| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1395+-------------------------------+------------------------------------------------------+
1396| <app>.upgrade.post | This phase should be launched only when upgrade of |
1397| | the cloud is completed. Cleanup temporary files, |
1398| | perform other post upgrade tasks. |
1399+-------------------------------+------------------------------------------------------+
1400| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1401| | operations, verify do not have dead network |
1402| | agents/compute services) |
1403+-------------------------------+------------------------------------------------------+
Oleksandr Pidrepnyidabe8b22019-06-07 16:18:11 +03001404
1405
1406Don't manage services scheduling while upgrade
1407----------------------------------------------
1408For some special cases, don't manage services scheduling both enable and disable
1409before and after upgrade procedure.
1410
1411If 'manage_service_maintenance: true' or not present - default behavior, disable services
1412before upgrade and enable it after upgrade.
1413If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
1414scheduling before and after upgrade.
1415
1416.. code-block:: yaml
1417
1418 nova:
1419 upgrade:
1420 manage_service_maintenance: false