blob: ff0ce8d6a9744640071fd036f001dd084e0f1f51 [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
sgarbuzcc02c7f2018-10-25 14:29:30 +030036 consoleauth:
37 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020038 bind:
39 public_address: 10.0.0.122
40 public_name: openstack.domain.com
41 novncproxy_port: 6080
42 database:
43 engine: mysql
44 host: 127.0.0.1
45 port: 3306
46 name: nova
47 user: nova
48 password: pwd
49 identity:
50 engine: keystone
51 host: 127.0.0.1
52 port: 35357
53 user: nova
54 password: pwd
55 tenant: service
56 message_queue:
57 engine: rabbitmq
58 host: 127.0.0.1
59 port: 5672
60 user: openstack
61 password: pwd
62 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000063 pci:
64 alias:
65 alias1:
66 device_type: "type-PF"
67 name: "a1"
68 product_id: "154d"
69 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020070 network:
71 engine: neutron
72 host: 127.0.0.1
73 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020074 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020075 identity:
76 engine: keystone
77 host: 127.0.0.1
78 port: 35357
79 user: neutron
80 password: pwd
81 tenant: service
82 metadata:
83 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010084 audit:
85 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010086 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030087 barbican:
88 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020089
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030090Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020091
92.. code-block:: yaml
93
94 nova:
95 controller:
96 version: juno
97 source:
98 engine: pkg
99 address: http://...
100 ....
101
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300102Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200103
104.. code-block:: yaml
105
106 nova:
107 controller:
108 ....
109 message_queue:
110 engine: rabbitmq
111 members:
112 - host: 10.0.16.1
113 - host: 10.0.16.2
114 - host: 10.0.16.3
115 user: openstack
116 password: pwd
117 virtual_host: '/openstack'
118 ....
119
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300120Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100121
122.. code-block:: yaml
123
124 nova:
125 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100126 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100127 enabled: true
128 ....
129 filter_factory: 'keystonemiddleware.audit:filter_factory'
130 map_file: '/etc/pycadf/nova_api_audit_map.conf'
131 ....
132
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300133Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200134
135.. code-block:: yaml
136
137 nova:
138 controller:
139 cors:
140 allowed_origin: https:localhost.local,http:localhost.local
141 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
142 allow_methods: GET,PUT,POST,DELETE,PATCH
143 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
144 allow_credentials: True
145 max_age: 86400
146
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300147Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400148
149.. code-block:: yaml
150
151 nova:
152 controller:
153 ....
154 policy:
155 context_is_admin: 'role:admin or role:administrator'
156 'compute:create': 'rule:admin_or_owner'
157 # Add key without value to remove line from policy.json
158 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200159
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300160Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300161
162.. code-block:: yaml
163
164 nova:
165 controller:
166 ....
167 barbican:
168 enabled: true
169
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000170Define aliases for PCI devices:
171.. code-block:: yaml
172
173 nova:
174 controller:
175 ...
176 pci:
177 alias:
178 alias1:
179 device_type: "type-PF"
180 name: "a1"
181 product_id: "154d"
182 vendor_id: "8086"
183
Jiri Broulik789179a2018-02-13 16:16:46 +0100184Enable cells update:
185
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300186.. note:: Useful when upgrading Openstack. To update cells to test
187 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100188
189.. code-block:: yaml
190
191 nova:
192 controller:
193 update_cells: true
194
Kirill Bespalov64617172017-07-11 14:43:14 +0300195
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300196Configuring TLS communications
197------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300198
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300199.. note:: By default system wide installed CA certs are used,
200 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300201
202- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300203
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300204 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300205
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300206 nova:
207 compute:
208 message_queue:
209 port: 5671
210 ssl:
211 enabled: True
212 (optional) cacert: cert body if the cacert_file does not exists
213 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
214 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300215
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300216- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300217
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300218 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300219
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300220 nova:
221 controller:
222 database:
223 ssl:
224 enabled: True
225 (optional) cacert: cert body if the cacert_file does not exists
226 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300227
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300228- **Openstack HTTPS API**
229
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300230 Set the ``https`` as protocol at ``nova:compute`` and
231 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300232
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300233 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300234
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300235 nova:
236 controller :
237 identity:
238 protocol: https
239 (optional) cacert_file: /etc/openstack/proxy.pem
240 network:
241 protocol: https
242 (optional) cacert_file: /etc/openstack/proxy.pem
243 glance:
244 protocol: https
245 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300246
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300247 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300248
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300249 nova:
250 compute:
251 identity:
252 protocol: https
253 (optional) cacert_file: /etc/openstack/proxy.pem
254 network:
255 protocol: https
256 (optional) cacert_file: /etc/openstack/proxy.pem
257 image:
258 protocol: https
259 (optional) cacert_file: /etc/openstack/proxy.pem
260 ironic:
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.. note:: Barbican, Cinder, and placement url endpoints are discovering
265 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300266
Filip Pytloun4a72d792015-10-06 16:28:32 +0200267Compute nodes
268-------------
269
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300270Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200271
272.. code-block:: yaml
273
274 nova:
275 compute:
276 version: juno
277 enabled: true
Mykyta Karpin5ef9f982019-02-07 18:40:00 +0200278 timeout_nbd: 10
279 heal_instance_info_cache_interval: 60
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300280 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300281 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100282 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200283 aggregates:
284 - hosts_with_fc
285 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200286 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200287 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400288 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300289 my_ip: 10.1.0.16
Vasyl Saienko09b6ac32019-01-17 15:23:58 +0200290 vif_plugging_timeout: 300
291 vif_plugging_is_fatal: false
Filip Pytloun4a72d792015-10-06 16:28:32 +0200292 bind:
293 vnc_address: 172.20.0.100
294 vnc_port: 6080
295 vnc_name: openstack.domain.com
296 vnc_protocol: http
297 database:
298 engine: mysql
299 host: 127.0.0.1
300 port: 3306
301 name: nova
302 user: nova
303 password: pwd
304 identity:
305 engine: keystone
306 host: 127.0.0.1
307 port: 35357
308 user: nova
309 password: pwd
310 tenant: service
311 message_queue:
312 engine: rabbitmq
313 host: 127.0.0.1
314 port: 5672
315 user: openstack
316 password: pwd
317 virtual_host: '/openstack'
318 image:
319 engine: glance
320 host: 127.0.0.1
321 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000322 pci:
323 alias:
324 alias1:
325 device_type: "type-PF"
326 name: "a1"
327 product_id: "154d"
328 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200329 network:
330 engine: neutron
331 host: 127.0.0.1
332 port: 9696
333 identity:
334 engine: keystone
335 host: 127.0.0.1
336 port: 35357
337 user: neutron
338 password: pwd
339 tenant: service
340 qemu:
341 max_files: 4096
342 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300343 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200344
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300345Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
346Each process should have uniq host identifier. However multiple computes might be running on
347single host. It is not recommended to have multiple computes running on different hosts that
348manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
349
350.. code-block:: yaml
351
352 nova:
353 compute:
354 compute_driver: vmwareapi.VMwareVCDriver
355 vmware:
356 host_username: vmware
357 host_password: vmware
358 cluster_name: vmware_cluster01
359 host_ip: 1.2.3.4
360
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300361Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200362
363.. code-block:: yaml
364
365 nova:
366 compute:
367 enabled: true
368 ...
369 qemu:
370 user: nova
371 group: cinder
372 dynamic_ownership: 1
373
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300374Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300375
376.. code-block:: yaml
377
378 nova:
379 compute:
380 enabled: true
381 ...
382 user:
383 groups:
384 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200385
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300386Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200387
388.. code-block:: yaml
389
390 nova:
391 compute:
392 enabled: true
393 ...
394 networking: contrail
395
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000396Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200397
398.. code-block:: yaml
399
400 nova:
401 compute:
402 enabled: true
403 ...
404 cache:
405 engine: memcached
406 members:
407 - host: 127.0.0.1
408 port: 11211
409 - host: 127.0.0.1
410 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000411 security:
412 enabled: true
413 strategy: ENCRYPT
414 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200415
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300416Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200417
418.. code-block:: yaml
419
420 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300421 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200422 ....
423 message_queue:
424 engine: rabbitmq
425 members:
426 - host: 10.0.16.1
427 - host: 10.0.16.2
428 - host: 10.0.16.3
429 user: openstack
430 password: pwd
431 virtual_host: '/openstack'
432 ....
433
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300434Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000435
436.. code-block:: yaml
437
438 nova:
439 compute:
440 enabled: true
441 ...
442 ceph:
443 ephemeral: yes
444 rbd_pool: nova
445 rbd_user: nova
446 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300447 ....
maxstack39e6aca2016-05-04 13:50:13 +0000448
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300449Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300450
451.. code-block:: yaml
452
453 nova:
454 compute:
455 enabled: true
456 ...
457 lvm:
458 ephemeral: yes
459 images_volume_group: nova_vg
460
461 linux:
462 storage:
463 lvm:
464 nova_vg:
465 name: nova_vg
466 devices:
467 - /dev/sdf
468 - /dev/sdd
469 - /dev/sdg
470 - /dev/sde
471 - /dev/sdc
472 - /dev/sdj
473 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000474
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300475Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300476
477.. code-block:: yaml
478
479 nova:
480 compute:
481 ....
482 barbican:
483 enabled: true
484
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000485Define aliases for PCI devices:
486.. code-block:: yaml
487
488 nova:
489 compute:
490 ...
491 pci:
492 alias:
493 alias1:
494 device_type: "type-PF"
495 name: "a1"
496 product_id: "154d"
497 vendor_id: "8086"
498
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300499Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200500
501.. code-block:: yaml
502
503 nova:
504 controller:
505 enabled: true
506 ...
507 metadata:
508 bind:
509 address: 1.2.3.4
510 port: 8776
511
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200512Define multipath for nova compute:
513
514.. code-block:: yaml
515
516 nova:
517 compute:
518 ....
519 libvirt:
520 volume_use_multipath: True
521
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100522Client role
523-----------
524
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300525Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300526
527.. code-block:: yaml
528
529 nova:
530 compute:
531 instances_path: /mnt/nova/instances
532
533 linux:
534 storage:
535 enabled: true
536 mount:
537 nfs_nova:
538 enabled: true
539 path: ${nova:compute:instances_path}
540 device: 172.31.35.145:/data
541 file_system: nfs
542 opts: rw,vers=3
543
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300544Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100545
546.. code-block:: yaml
547
548 nova:
549 client:
550 enabled: true
551 server:
552 identity:
553 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100554 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100555 flavor_id: 10
556 ram: 4096
557 disk: 10
558 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100559 flavor2:
560 flavor_id: auto
561 ram: 4096
562 disk: 20
563 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100564 identity1:
565 flavor:
566 ...
567
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300568Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100569
570.. code-block:: yaml
571
572 nova:
573 client:
574 enabled: true
575 server:
576 identity:
577 availability_zones:
578 - availability_zone_01
579 - availability_zone_02
580
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300581Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200582
583.. code-block:: yaml
584
585 nova:
586 client:
587 enabled: true
588 server:
589 identity:
590 aggregates:
591 - aggregate1
592 - aggregate2
593
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300594Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300595
596.. code-block:: yaml
597
598 nova:
599 controller:
600 upgrade_levels:
601 compute: juno
602
603 nova:
604 compute:
605 upgrade_levels:
606 compute: juno
607
Petr Jedinýd855ef22017-03-06 22:24:33 +0100608SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100609------
610
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300611Add ``PciPassthroughFilter`` into scheduler filters and NICs on
612specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100613
614.. code-block:: yaml
615
616 nova:
617 controller:
618 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000619 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100620
621 nova:
622 compute:
623 sriov:
624 nic_one:
625 devname: eth1
626 physical_network: physnet1
627
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000628.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
629 nova.conf file in appropriate format.
630
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100631CPU pinning & Hugepages
632-----------------------
633
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300634CPU pinning of virtual machine instances to dedicated physical
635CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100636
637.. code-block:: yaml
638
639 nova:
640 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000641 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100642
643 nova:
644 compute:
645 vcpu_pin_set: 2,3,4,5
646 hugepages:
647 mount_points:
648 - path: /mnt/hugepages_1GB
649 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100650
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200651Custom Scheduler filters
652------------------------
653
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300654If you have a custom filter, that needs to be included in the
655scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200656
657.. code-block:: yaml
658
659 nova:
660 controller:
661 scheduler_custom_filters:
662 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
663
664 # 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 +0000665 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200666
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400667 # Since Queens version a sequence could be used as well:
668 ~scheduler_default_filters:
669 - DifferentHostFilter
670 - SameHostFilter
671 ...
672 - MyCustomFilter
673
674
Michel Nederlofeb566f62017-04-21 15:37:47 +0200675Hardware Trip/Unmap Support
676---------------------------
677
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300678To enable TRIM support for ephemeral images (thru nova managed
679images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200680
681.. code-block:: yaml
682
683 nova:
684 compute:
685 libvirt:
686 hw_disk_discard: unmap
687
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300688To actually utilize this feature, the following metadata must be
689set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200690
691.. code-block:: bash
692
693 glance image-update --property hw_scsi_model=virtio-scsi <image>
694 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100695
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000696Scheduler Host Manager
697----------------------
698
699Specify a custom host manager.
700
Thom Gerdesec00afd2017-04-07 18:06:59 +0000701libvirt CPU mode
702----------------
703
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300704Allow setting the model of CPU that is exposed to a VM. This
705allows for better support live migration between hypervisors with
706different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200707
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000708.. code-block:: yaml
709
710 nova:
711 controller:
712 scheduler_host_manager: ironic_host_manager
713
Thom Gerdesec00afd2017-04-07 18:06:59 +0000714 compute:
715 cpu_mode: host-model
716
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200717Nova compute cpu model
718----------------------
719
720.. code-block:: yaml
721
722 nova:
723 compute:
724 cpu_mode: custom
725 libvirt:
726 cpu_model: IvyBridge
727
728
Michel Nederloff7eefb22017-07-10 11:14:33 +0200729Nova compute workarounds
730------------------------
731
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300732Live snapshotting is disabled by default in nova. To enable
733this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200734
735From manual:
736
737.. code-block:: yaml
738
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300739 When using libvirt 1.2.2 live snapshots fail intermittently under load
740 (likely related to concurrent libvirt/qemu operations). This config
741 option provides a mechanism to disable live snapshot, in favor of cold
742 snapshot, while this is resolved. Cold snapshot causes an instance
743 outage while the guest is going through the snapshotting process.
744
745 For more information, refer to the bug report:
746
747 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200748
749Configurable pillar data:
750
751.. code-block:: yaml
752
753 nova:
754 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200755 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200756 disable_libvirt_livesnapshot: False
757
Michel Nederlofb51a5142017-06-27 08:31:35 +0200758Config drive options
759--------------------
760
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300761See example below on how to configure the options for the
762config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200763
764.. code-block:: yaml
765
766 nova:
767 compute:
768 config_drive:
769 forced: True # Default: True
770 cdrom: True # Default: False
771 format: iso9660 # Default: vfat
772 inject_password: False # Default: False
773
Michel Nederloff81919b2017-11-20 09:37:07 +0100774Number of concurrent live migrates
775----------------------------------
776
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300777Default is to have no concurrent live migrations (so 1
778live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100779
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300780Excerpt from config options page
781https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100782
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300783Maximum number of live migrations to run concurrently. This limit is
784enforced to avoid outbound live migrations overwhelming the host/network
785and causing failures. It is not recommended that you change this unless
786you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100787
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300788Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100789
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300790- 0 : treated as unlimited.
791- Negative value defaults to 0.
792- Any positive integer representing maximum number of live migrations
793 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100794
795To configure this option:
796
797.. code-block:: yaml
798
799 nova:
800 compute:
801 max_concurrent_live_migrations: 1 # (1 is the default)
802
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300803Live migration with auto converge
804----------------------------------
805
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300806Auto converge throttles down CPU if a progress of on-going live
807migration is slow
808https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300809
810.. code-block:: yaml
811
812 nova:
813 compute:
814 libvirt:
815 live_migration_permit_auto_converge: False # (False is the default)
816
817.. code-block:: yaml
818
819 nova:
820 controller:
821 libvirt:
822 live_migration_permit_auto_converge: False # (False is the default)
823
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400824Enhanced logging with logging.conf
825----------------------------------
826
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300827By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400828
829That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400830
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300831* ``openstack_log_appender``
832 Set to true to enable log_config_append for all OpenStack services
833
834* ``openstack_fluentd_handler_enabled``
835 Set to true to enable FluentHandler for all Openstack services
836
837* ``openstack_ossyslog_handler_enabled``
838 Set to true to enable OSSysLogHandler for all Openstack services
839
840Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
841are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400842
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400843Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400844
845.. code-block:: yaml
846
847 nova:
848 controller:
849 logging:
850 log_appender: true
851 log_handlers:
852 watchedfile:
853 enabled: true
854 fluentd:
855 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200856 ossyslog:
857 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400858
859 compute:
860 logging:
861 log_appender: true
862 log_handlers:
863 watchedfile:
864 enabled: true
865 fluentd:
866 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200867 ossyslog:
868 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000869
Vasyl Saienko7243a952018-05-11 21:26:54 +0300870The log level might be configured per logger by using the
871following pillar structure:
872
873.. code-block:: yaml
874
875 nova:
876 compute:
877 logging:
878 loggers:
879 <logger_name>:
880 level: WARNING
881
882 nova:
883 compute:
884 logging:
885 loggers:
886 <logger_name>:
887 level: WARNING
888
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000889Configure syslog parameters for libvirtd
890----------------------------------------
891
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300892To configure syslog parameters for libvirtd the below pillar
893structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000894by libvirtd. These values might be known from the documentation.
895
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300896.. code-block:: yaml
897
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000898 nova:
899 compute:
900 libvirt:
901 logging:
902 level: 3
903 filters: '3:remote 4:event'
904 outputs: '3:syslog:libvirtd'
905 buffer_size: 64
906
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300907Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000908
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300909Logging level: 4 errors, 3 warnings, 2 information, 1 debug
910basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000911
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300912Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000913
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300914A filter allows to select a different logging level for a given category
915of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000916
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300917The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000918
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300919* ``x:name``
920* ``x:+name``
921 where name is a string which is matched against source file name,
922 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
923 tells libvirt to log stack trace for each message matching name,
924 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000925
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300926* ``1: DEBUG``
927* ``2: INFO``
928* ``3: WARNING``
929* ``4: ERROR``
930
931Multiple filter can be defined in a single @filters, they just
932need to be separated by spaces.
933
934For example, to only get warning or errors from the remote layer
935and only errors from the event layer: ``log_filters="3:remote 4:event``
936
937Logging outputs:
938
939An output is one of the places to save logging information
940The format for an output can be:
941
942* ``x:stderr``
943 Output goes to stderr
944
945* ``x:syslog:name``
946 Use syslog for the output and use the given name as the ident
947
948* ``x:file:file_path``
949 output to a file, with the given filepath
950
951 In all case the x prefix is the minimal level, acting as a filter
952
953* ``1: DEBUG``
954* ``2: INFO``
955* ``3: WARNING``
956* ``4: ERROR``
957
958Multiple output can be defined, they just need to be separated by spaces.
959For example, to log all warnings and errors to syslog under the libvirt
960dident: ``log_outputs="3:syslog:libvirtd``
961
962Log debug buffer size: default 64
963The daemon keeps an internal debug log buffer which will be dumped
964in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
965allows to override the default buffer size in kilobytes.
966If value is ``0`` or less the debug log buffer is deactivated
967``log_buffer_size = 64``
968
969To configure the logging parameters for QEMU, the below pillar
970structure and logging parameters should be used:
971
972.. code-block:: yaml
973
974 nova:
975 compute:
976 qemu:
977 logging:
978 handler: logd
979 virtlog:
980 enabled: true
981 level: 4
982 filters: '3:remote 3:event'
983 outputs: '4:syslog:virtlogd'
984 max_clients: 512
985 max_size: 2097100
986 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000987
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300988Inject password to VM
989---------------------
990
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300991By default nova blocks up any inject to VM because
992``inject_partition`` param is equal to ``-2``.
993If you want to inject password to VM, you will need to
994define ``inject_partition`` greater or equal to ``-1`` and
995define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300996
997For example:
998
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300999.. code-block:: yaml
1000
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001001 nova:
1002 compute:
1003 inject_partition: '-1'
1004 inject_password: True
1005
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001006Allow the injection of an admin password for instance only at
1007``create`` and ``rebuild`` process.
1008
1009There is no agent needed within the image to do this. If *libguestfs* is
1010available on the host, it will be used. Otherwise *nbd* is used. The file
1011system of the image will be mounted and the admin password, which is provided
1012in the REST API call will be injected as password for the root user. If no
1013root user is available, the instance won't be launched and an error is thrown.
1014Be aware that the injection is *not* possible when the instance gets launched
1015from a volume.
1016
1017Possible values:
1018
1019* ``True``
1020 Allows the injection
1021
1022* ``False`` (default)
1023 Disallows the injection. Any via the REST API provided
1024 admin password will be silently ignored.
1025
1026Related options:
1027
1028* ``inject_partition``
1029 Decides about the discovery and usage of the file system.
1030 It also can disable the injection at all.
1031 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001032
1033You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001034https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001035
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001036Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001037---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001038
1039By default TLS is disabled.
1040
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001041Enable TLS transport:
1042
1043.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001044
1045 compute:
1046 libvirt:
1047 tls:
1048 enabled: True
1049
1050You able to set custom certificates in pillar:
1051
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001052.. code-block:: yaml
1053
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001054 nova:
1055 compute:
1056 libvirt:
1057 tls:
1058 key: (certificate content)
1059 cert: (certificate content)
1060 cacert: (certificate content)
1061 client:
1062 key: (certificate content)
1063 cert: (certificate content)
1064
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001065Controlling access by `tls_allowed_dn_list`.
1066Enable an access control list of client certificate Distinguished Names (DNs)
1067which can connect to the TLS port on this server. The default is that DNs are
1068not checked. This list may contain wildcards such as
1069"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1070for the format of the wildcards.
1071Note that if this is an empty list, no client can connect.
1072Note also that GnuTLS returns DNs without spaces after commas between
1073the fields (and this is what we check against), but the openssl x509 tool
1074shows spaces.
1075
1076.. code-block:: yaml
1077
1078 nova:
1079 compute:
1080 libvirt:
1081 tls:
1082 tls_allowed_dn_list:
1083 host1:
1084 enabled: true
1085 value: 'C=foo,CN=cmp1'
1086 host2:
1087 enabled: true
1088 value: 'C=foo,CN=cmp2'
1089
1090
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001091You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001092https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001093
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001094Enable transport + authentication for VNC over TLS
1095---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001096# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001097
1098By default communication between nova-novncproxy and qemu service is unsecure.
1099
1100compute:
1101 qemu:
1102 vnc:
1103 tls:
1104 enabled: True
1105
1106controller:
1107 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001108 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001109 tls:
1110 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001111 # This section responsible for communication between nova-novncproxy and qemu service
1112 vencrypt:
1113 tls:
1114 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001115
1116You able to set custom certificates in pillar:
1117
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001118nova:
1119 compute:
1120 qemu:
1121 vnc:
1122 tls:
1123 cacert (certificate content)
1124 cert (certificate content)
1125 key (certificate content)
1126
1127nova:
1128 controller:
1129 novncproxy:
1130 tls:
1131 server:
1132 cert (certificate content)
1133 key (certificate content)
1134 vencrypt:
1135 tls:
1136 cacert (certificate content)
1137 cert (certificate content)
1138 key (certificate content)
1139
1140
1141You can read more about it here:
1142 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1143
1144Enable communication between noVNC proxy and client machine over TLS
1145---------------------
1146
1147By default communication between noVNC proxy and client machine is unsecure.
1148
1149 controller:
1150 novncproxy:
1151 tls:
1152 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001153
1154 nova:
1155 controller:
1156 novncproxy:
1157 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001158 server:
1159 cert (certificate content)
1160 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001161
1162You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001163 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001164
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001165Enable x509 and ssl communication between Nova and Galera cluster.
1166---------------------
1167By default communication between Nova and Galera is unsecure.
1168
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001169nova:
1170 controller:
1171 database:
1172 x509:
1173 enabled: True
1174
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001175You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001176
1177nova:
1178 controller:
1179 database:
1180 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001181 cacert: (certificate content)
1182 cert: (certificate content)
1183 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001184
1185You can read more about it here:
1186 https://docs.openstack.org/security-guide/databases/database-access-control.html
1187
obryndziif7957912019-01-31 00:55:56 +00001188Nova database connection setup:
1189========
1190
1191.. code-block:: yaml
1192
1193 nova:
1194 controller:
1195 enabled: True
1196 ...
1197 database:
1198 idle_timeout: 180
1199 min_pool_size: 100
1200 max_pool_size: 700
1201 max_overflow: 100
1202 retry_interval: 5
1203 max_retries: '-1'
1204 db_max_retries: 3
1205 db_retry_interval: 1
1206 connection_debug: 10
1207 pool_timeout: 120
1208
Oleksandr Bryndzii6d821f52019-02-20 15:51:15 +02001209
1210Configure nova to use service user tokens:
1211========
1212Long-running operations such as live migration or snapshot can sometimes overrun the
1213expiry of the user token. In such cases, post operations such as cleaning up after a
1214live migration can fail when the nova-compute service needs to cleanup resources in
1215other services, such as in the block-storage (cinder) or networking (neutron) services.
1216
1217This patch enables nova to use service user tokens to supplement the regular user token
1218used to initiate the operation. The identity service (keystone) will then authenticate
1219a request using the service user token if the user token has already expired.
1220
1221.. code-block:: yaml
1222
1223 nova:
1224 controller:
1225 enabled: True
1226 ...
1227 service_user:
1228 enabled: True
1229 user_domain_id: default
1230 project_domain_id: default
1231 project_name: service
1232 username: nova
1233 password: pswd
1234
1235
1236
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001237Upgrades
1238========
1239
1240Each openstack formula provide set of phases (logical bloks) that will help to
1241build flexible upgrade orchestration logic for particular components. The list
1242of phases might and theirs descriptions are listed in table below:
1243
1244+-------------------------------+------------------------------------------------------+
1245| State | Description |
1246+===============================+======================================================+
1247| <app>.upgrade.service_running | Ensure that all services for particular application |
1248| | are enabled for autostart and running |
1249+-------------------------------+------------------------------------------------------+
1250| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1251| | disabled for autostart and dead |
1252+-------------------------------+------------------------------------------------------+
1253| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1254| | are installed to latest available version. |
1255| | This will not upgrade data plane packages like qemu |
1256| | and openvswitch as usually minimal required version |
1257| | in openstack services is really old. The data plane |
1258| | packages should be upgraded separately by `apt-get |
1259| | upgrade` or `apt-get dist-upgrade` |
1260| | Applying this state will not autostart service. |
1261+-------------------------------+------------------------------------------------------+
1262| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1263+-------------------------------+------------------------------------------------------+
1264| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1265| | cloud before running upgrade. |
1266| | Only non destructive actions will be applied during |
1267| | this phase. Perform service built in service check |
1268| | like (keystone-manage doctor and nova-status upgrade)|
1269+-------------------------------+------------------------------------------------------+
1270| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1271| | phase resources will be gracefully removed from |
1272| | current node if it is allowed. Services for upgraded |
1273| | application will be set to admin disabled state to |
1274| | make sure node will not participate in resources |
1275| | scheduling. For example on gtw nodes this will set |
1276| | all agents to admin disable state and will move all |
1277| | routers to other agents. |
1278+-------------------------------+------------------------------------------------------+
1279| <app>.upgrade.upgrade | This state will basically upgrade application on |
1280| | particular target. Stop services, render |
1281| | configuration, install new packages, run offline |
1282| | dbsync (for ctl), start services. Data plane should |
1283| | not be affected, only OpenStack python services. |
1284+-------------------------------+------------------------------------------------------+
1285| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1286+-------------------------------+------------------------------------------------------+
1287| <app>.upgrade.post | This phase should be launched only when upgrade of |
1288| | the cloud is completed. Cleanup temporary files, |
1289| | perform other post upgrade tasks. |
1290+-------------------------------+------------------------------------------------------+
1291| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1292| | operations, verify do not have dead network |
1293| | agents/compute services) |
1294+-------------------------------+------------------------------------------------------+