blob: a290d34857431d80404e90881f3c0d7d5e8ba902 [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
sgarbuzcc02c7f2018-10-25 14:29:30 +030035 consoleauth:
36 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020037 bind:
38 public_address: 10.0.0.122
39 public_name: openstack.domain.com
40 novncproxy_port: 6080
41 database:
42 engine: mysql
43 host: 127.0.0.1
44 port: 3306
45 name: nova
46 user: nova
47 password: pwd
48 identity:
49 engine: keystone
50 host: 127.0.0.1
51 port: 35357
52 user: nova
53 password: pwd
54 tenant: service
55 message_queue:
56 engine: rabbitmq
57 host: 127.0.0.1
58 port: 5672
59 user: openstack
60 password: pwd
61 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000062 pci:
63 alias:
64 alias1:
65 device_type: "type-PF"
66 name: "a1"
67 product_id: "154d"
68 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020069 network:
70 engine: neutron
71 host: 127.0.0.1
72 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020073 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020074 identity:
75 engine: keystone
76 host: 127.0.0.1
77 port: 35357
78 user: neutron
79 password: pwd
80 tenant: service
81 metadata:
82 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010083 audit:
84 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010085 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030086 barbican:
87 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020088
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030089Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020090
91.. code-block:: yaml
92
93 nova:
94 controller:
95 version: juno
96 source:
97 engine: pkg
98 address: http://...
99 ....
100
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300101Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200102
103.. code-block:: yaml
104
105 nova:
106 controller:
107 ....
108 message_queue:
109 engine: rabbitmq
110 members:
111 - host: 10.0.16.1
112 - host: 10.0.16.2
113 - host: 10.0.16.3
114 user: openstack
115 password: pwd
116 virtual_host: '/openstack'
117 ....
118
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300119Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100120
121.. code-block:: yaml
122
123 nova:
124 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100125 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100126 enabled: true
127 ....
128 filter_factory: 'keystonemiddleware.audit:filter_factory'
129 map_file: '/etc/pycadf/nova_api_audit_map.conf'
130 ....
131
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300132Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200133
134.. code-block:: yaml
135
136 nova:
137 controller:
138 cors:
139 allowed_origin: https:localhost.local,http:localhost.local
140 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
141 allow_methods: GET,PUT,POST,DELETE,PATCH
142 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
143 allow_credentials: True
144 max_age: 86400
145
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300146Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400147
148.. code-block:: yaml
149
150 nova:
151 controller:
152 ....
153 policy:
154 context_is_admin: 'role:admin or role:administrator'
155 'compute:create': 'rule:admin_or_owner'
156 # Add key without value to remove line from policy.json
157 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200158
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300159Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300160
161.. code-block:: yaml
162
163 nova:
164 controller:
165 ....
166 barbican:
167 enabled: true
168
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000169Define aliases for PCI devices:
170.. code-block:: yaml
171
172 nova:
173 controller:
174 ...
175 pci:
176 alias:
177 alias1:
178 device_type: "type-PF"
179 name: "a1"
180 product_id: "154d"
181 vendor_id: "8086"
182
Jiri Broulik789179a2018-02-13 16:16:46 +0100183Enable cells update:
184
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300185.. note:: Useful when upgrading Openstack. To update cells to test
186 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100187
188.. code-block:: yaml
189
190 nova:
191 controller:
192 update_cells: true
193
Kirill Bespalov64617172017-07-11 14:43:14 +0300194
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300195Configuring TLS communications
196------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300197
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300198.. note:: By default system wide installed CA certs are used,
199 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300200
201- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300202
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300203 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300204
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300205 nova:
206 compute:
207 message_queue:
208 port: 5671
209 ssl:
210 enabled: True
211 (optional) cacert: cert body if the cacert_file does not exists
212 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
213 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300214
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300215- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300216
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300217 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300218
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300219 nova:
220 controller:
221 database:
222 ssl:
223 enabled: True
224 (optional) cacert: cert body if the cacert_file does not exists
225 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300226
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300227- **Openstack HTTPS API**
228
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300229 Set the ``https`` as protocol at ``nova:compute`` and
230 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300231
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300232 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300233
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300234 nova:
235 controller :
236 identity:
237 protocol: https
238 (optional) cacert_file: /etc/openstack/proxy.pem
239 network:
240 protocol: https
241 (optional) cacert_file: /etc/openstack/proxy.pem
242 glance:
243 protocol: https
244 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300245
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300246 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300247
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300248 nova:
249 compute:
250 identity:
251 protocol: https
252 (optional) cacert_file: /etc/openstack/proxy.pem
253 network:
254 protocol: https
255 (optional) cacert_file: /etc/openstack/proxy.pem
256 image:
257 protocol: https
258 (optional) cacert_file: /etc/openstack/proxy.pem
259 ironic:
260 protocol: https
261 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300262
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300263.. note:: Barbican, Cinder, and placement url endpoints are discovering
264 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300265
Filip Pytloun4a72d792015-10-06 16:28:32 +0200266Compute nodes
267-------------
268
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300269Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200270
271.. code-block:: yaml
272
273 nova:
274 compute:
275 version: juno
276 enabled: true
Mykyta Karpin5ef9f982019-02-07 18:40:00 +0200277 timeout_nbd: 10
278 heal_instance_info_cache_interval: 60
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300279 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300280 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100281 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200282 aggregates:
283 - hosts_with_fc
284 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200285 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200286 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400287 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300288 my_ip: 10.1.0.16
Vasyl Saienko09b6ac32019-01-17 15:23:58 +0200289 vif_plugging_timeout: 300
290 vif_plugging_is_fatal: false
Filip Pytloun4a72d792015-10-06 16:28:32 +0200291 bind:
292 vnc_address: 172.20.0.100
293 vnc_port: 6080
294 vnc_name: openstack.domain.com
295 vnc_protocol: http
296 database:
297 engine: mysql
298 host: 127.0.0.1
299 port: 3306
300 name: nova
301 user: nova
302 password: pwd
303 identity:
304 engine: keystone
305 host: 127.0.0.1
306 port: 35357
307 user: nova
308 password: pwd
309 tenant: service
310 message_queue:
311 engine: rabbitmq
312 host: 127.0.0.1
313 port: 5672
314 user: openstack
315 password: pwd
316 virtual_host: '/openstack'
317 image:
318 engine: glance
319 host: 127.0.0.1
320 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000321 pci:
322 alias:
323 alias1:
324 device_type: "type-PF"
325 name: "a1"
326 product_id: "154d"
327 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200328 network:
329 engine: neutron
330 host: 127.0.0.1
331 port: 9696
332 identity:
333 engine: keystone
334 host: 127.0.0.1
335 port: 35357
336 user: neutron
337 password: pwd
338 tenant: service
339 qemu:
340 max_files: 4096
341 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300342 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200343
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300344Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
345Each process should have uniq host identifier. However multiple computes might be running on
346single host. It is not recommended to have multiple computes running on different hosts that
347manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
348
349.. code-block:: yaml
350
351 nova:
352 compute:
353 compute_driver: vmwareapi.VMwareVCDriver
354 vmware:
355 host_username: vmware
356 host_password: vmware
357 cluster_name: vmware_cluster01
358 host_ip: 1.2.3.4
359
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300360Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200361
362.. code-block:: yaml
363
364 nova:
365 compute:
366 enabled: true
367 ...
368 qemu:
369 user: nova
370 group: cinder
371 dynamic_ownership: 1
372
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300373Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300374
375.. code-block:: yaml
376
377 nova:
378 compute:
379 enabled: true
380 ...
381 user:
382 groups:
383 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200384
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300385Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200386
387.. code-block:: yaml
388
389 nova:
390 compute:
391 enabled: true
392 ...
393 networking: contrail
394
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000395Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200396
397.. code-block:: yaml
398
399 nova:
400 compute:
401 enabled: true
402 ...
403 cache:
404 engine: memcached
405 members:
406 - host: 127.0.0.1
407 port: 11211
408 - host: 127.0.0.1
409 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000410 security:
411 enabled: true
412 strategy: ENCRYPT
413 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200414
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300415Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200416
417.. code-block:: yaml
418
419 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300420 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200421 ....
422 message_queue:
423 engine: rabbitmq
424 members:
425 - host: 10.0.16.1
426 - host: 10.0.16.2
427 - host: 10.0.16.3
428 user: openstack
429 password: pwd
430 virtual_host: '/openstack'
431 ....
432
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300433Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000434
435.. code-block:: yaml
436
437 nova:
438 compute:
439 enabled: true
440 ...
441 ceph:
442 ephemeral: yes
443 rbd_pool: nova
444 rbd_user: nova
445 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300446 ....
maxstack39e6aca2016-05-04 13:50:13 +0000447
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300448Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300449
450.. code-block:: yaml
451
452 nova:
453 compute:
454 enabled: true
455 ...
456 lvm:
457 ephemeral: yes
458 images_volume_group: nova_vg
459
460 linux:
461 storage:
462 lvm:
463 nova_vg:
464 name: nova_vg
465 devices:
466 - /dev/sdf
467 - /dev/sdd
468 - /dev/sdg
469 - /dev/sde
470 - /dev/sdc
471 - /dev/sdj
472 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000473
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300474Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300475
476.. code-block:: yaml
477
478 nova:
479 compute:
480 ....
481 barbican:
482 enabled: true
483
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000484Define aliases for PCI devices:
485.. code-block:: yaml
486
487 nova:
488 compute:
489 ...
490 pci:
491 alias:
492 alias1:
493 device_type: "type-PF"
494 name: "a1"
495 product_id: "154d"
496 vendor_id: "8086"
497
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300498Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200499
500.. code-block:: yaml
501
502 nova:
503 controller:
504 enabled: true
505 ...
506 metadata:
507 bind:
508 address: 1.2.3.4
509 port: 8776
510
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200511Define multipath for nova compute:
512
513.. code-block:: yaml
514
515 nova:
516 compute:
517 ....
518 libvirt:
519 volume_use_multipath: True
520
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100521Client role
522-----------
523
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300524Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300525
526.. code-block:: yaml
527
528 nova:
529 compute:
530 instances_path: /mnt/nova/instances
531
532 linux:
533 storage:
534 enabled: true
535 mount:
536 nfs_nova:
537 enabled: true
538 path: ${nova:compute:instances_path}
539 device: 172.31.35.145:/data
540 file_system: nfs
541 opts: rw,vers=3
542
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300543Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100544
545.. code-block:: yaml
546
547 nova:
548 client:
549 enabled: true
550 server:
551 identity:
552 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100553 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100554 flavor_id: 10
555 ram: 4096
556 disk: 10
557 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100558 flavor2:
559 flavor_id: auto
560 ram: 4096
561 disk: 20
562 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100563 identity1:
564 flavor:
565 ...
566
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300567Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100568
569.. code-block:: yaml
570
571 nova:
572 client:
573 enabled: true
574 server:
575 identity:
576 availability_zones:
577 - availability_zone_01
578 - availability_zone_02
579
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300580Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200581
582.. code-block:: yaml
583
584 nova:
585 client:
586 enabled: true
587 server:
588 identity:
589 aggregates:
590 - aggregate1
591 - aggregate2
592
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300593Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300594
595.. code-block:: yaml
596
597 nova:
598 controller:
599 upgrade_levels:
600 compute: juno
601
602 nova:
603 compute:
604 upgrade_levels:
605 compute: juno
606
Petr Jedinýd855ef22017-03-06 22:24:33 +0100607SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100608------
609
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300610Add ``PciPassthroughFilter`` into scheduler filters and NICs on
611specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100612
613.. code-block:: yaml
614
615 nova:
616 controller:
617 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000618 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100619
620 nova:
621 compute:
622 sriov:
623 nic_one:
624 devname: eth1
625 physical_network: physnet1
626
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000627.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
628 nova.conf file in appropriate format.
629
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100630CPU pinning & Hugepages
631-----------------------
632
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300633CPU pinning of virtual machine instances to dedicated physical
634CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100635
636.. code-block:: yaml
637
638 nova:
639 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000640 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100641
642 nova:
643 compute:
644 vcpu_pin_set: 2,3,4,5
645 hugepages:
646 mount_points:
647 - path: /mnt/hugepages_1GB
648 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100649
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200650Custom Scheduler filters
651------------------------
652
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300653If you have a custom filter, that needs to be included in the
654scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200655
656.. code-block:: yaml
657
658 nova:
659 controller:
660 scheduler_custom_filters:
661 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
662
663 # 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 +0000664 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200665
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400666 # Since Queens version a sequence could be used as well:
667 ~scheduler_default_filters:
668 - DifferentHostFilter
669 - SameHostFilter
670 ...
671 - MyCustomFilter
672
673
Michel Nederlofeb566f62017-04-21 15:37:47 +0200674Hardware Trip/Unmap Support
675---------------------------
676
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300677To enable TRIM support for ephemeral images (thru nova managed
678images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200679
680.. code-block:: yaml
681
682 nova:
683 compute:
684 libvirt:
685 hw_disk_discard: unmap
686
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300687To actually utilize this feature, the following metadata must be
688set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200689
690.. code-block:: bash
691
692 glance image-update --property hw_scsi_model=virtio-scsi <image>
693 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100694
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000695Scheduler Host Manager
696----------------------
697
698Specify a custom host manager.
699
Thom Gerdesec00afd2017-04-07 18:06:59 +0000700libvirt CPU mode
701----------------
702
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300703Allow setting the model of CPU that is exposed to a VM. This
704allows for better support live migration between hypervisors with
705different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200706
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000707.. code-block:: yaml
708
709 nova:
710 controller:
711 scheduler_host_manager: ironic_host_manager
712
Thom Gerdesec00afd2017-04-07 18:06:59 +0000713 compute:
714 cpu_mode: host-model
715
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200716Nova compute cpu model
717----------------------
718
719.. code-block:: yaml
720
721 nova:
722 compute:
723 cpu_mode: custom
724 libvirt:
725 cpu_model: IvyBridge
726
727
Michel Nederloff7eefb22017-07-10 11:14:33 +0200728Nova compute workarounds
729------------------------
730
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300731Live snapshotting is disabled by default in nova. To enable
732this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200733
734From manual:
735
736.. code-block:: yaml
737
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300738 When using libvirt 1.2.2 live snapshots fail intermittently under load
739 (likely related to concurrent libvirt/qemu operations). This config
740 option provides a mechanism to disable live snapshot, in favor of cold
741 snapshot, while this is resolved. Cold snapshot causes an instance
742 outage while the guest is going through the snapshotting process.
743
744 For more information, refer to the bug report:
745
746 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200747
748Configurable pillar data:
749
750.. code-block:: yaml
751
752 nova:
753 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200754 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200755 disable_libvirt_livesnapshot: False
756
Michel Nederlofb51a5142017-06-27 08:31:35 +0200757Config drive options
758--------------------
759
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300760See example below on how to configure the options for the
761config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200762
763.. code-block:: yaml
764
765 nova:
766 compute:
767 config_drive:
768 forced: True # Default: True
769 cdrom: True # Default: False
770 format: iso9660 # Default: vfat
771 inject_password: False # Default: False
772
Michel Nederloff81919b2017-11-20 09:37:07 +0100773Number of concurrent live migrates
774----------------------------------
775
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300776Default is to have no concurrent live migrations (so 1
777live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100778
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300779Excerpt from config options page
780https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100781
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300782Maximum number of live migrations to run concurrently. This limit is
783enforced to avoid outbound live migrations overwhelming the host/network
784and causing failures. It is not recommended that you change this unless
785you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100786
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300787Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100788
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300789- 0 : treated as unlimited.
790- Negative value defaults to 0.
791- Any positive integer representing maximum number of live migrations
792 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100793
794To configure this option:
795
796.. code-block:: yaml
797
798 nova:
799 compute:
800 max_concurrent_live_migrations: 1 # (1 is the default)
801
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300802Live migration with auto converge
803----------------------------------
804
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300805Auto converge throttles down CPU if a progress of on-going live
806migration is slow
807https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300808
809.. code-block:: yaml
810
811 nova:
812 compute:
813 libvirt:
814 live_migration_permit_auto_converge: False # (False is the default)
815
816.. code-block:: yaml
817
818 nova:
819 controller:
820 libvirt:
821 live_migration_permit_auto_converge: False # (False is the default)
822
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400823Enhanced logging with logging.conf
824----------------------------------
825
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300826By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400827
828That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400829
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300830* ``openstack_log_appender``
831 Set to true to enable log_config_append for all OpenStack services
832
833* ``openstack_fluentd_handler_enabled``
834 Set to true to enable FluentHandler for all Openstack services
835
836* ``openstack_ossyslog_handler_enabled``
837 Set to true to enable OSSysLogHandler for all Openstack services
838
839Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
840are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400841
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400842Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400843
844.. code-block:: yaml
845
846 nova:
847 controller:
848 logging:
849 log_appender: true
850 log_handlers:
851 watchedfile:
852 enabled: true
853 fluentd:
854 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200855 ossyslog:
856 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400857
858 compute:
859 logging:
860 log_appender: true
861 log_handlers:
862 watchedfile:
863 enabled: true
864 fluentd:
865 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200866 ossyslog:
867 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000868
Vasyl Saienko7243a952018-05-11 21:26:54 +0300869The log level might be configured per logger by using the
870following pillar structure:
871
872.. code-block:: yaml
873
874 nova:
875 compute:
876 logging:
877 loggers:
878 <logger_name>:
879 level: WARNING
880
881 nova:
882 compute:
883 logging:
884 loggers:
885 <logger_name>:
886 level: WARNING
887
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000888Configure syslog parameters for libvirtd
889----------------------------------------
890
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300891To configure syslog parameters for libvirtd the below pillar
892structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000893by libvirtd. These values might be known from the documentation.
894
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300895.. code-block:: yaml
896
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000897 nova:
898 compute:
899 libvirt:
900 logging:
901 level: 3
902 filters: '3:remote 4:event'
903 outputs: '3:syslog:libvirtd'
904 buffer_size: 64
905
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300906Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000907
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300908Logging level: 4 errors, 3 warnings, 2 information, 1 debug
909basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000910
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300911Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000912
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300913A filter allows to select a different logging level for a given category
914of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000915
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300916The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000917
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300918* ``x:name``
919* ``x:+name``
920 where name is a string which is matched against source file name,
921 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
922 tells libvirt to log stack trace for each message matching name,
923 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000924
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300925* ``1: DEBUG``
926* ``2: INFO``
927* ``3: WARNING``
928* ``4: ERROR``
929
930Multiple filter can be defined in a single @filters, they just
931need to be separated by spaces.
932
933For example, to only get warning or errors from the remote layer
934and only errors from the event layer: ``log_filters="3:remote 4:event``
935
936Logging outputs:
937
938An output is one of the places to save logging information
939The format for an output can be:
940
941* ``x:stderr``
942 Output goes to stderr
943
944* ``x:syslog:name``
945 Use syslog for the output and use the given name as the ident
946
947* ``x:file:file_path``
948 output to a file, with the given filepath
949
950 In all case the x prefix is the minimal level, acting as a filter
951
952* ``1: DEBUG``
953* ``2: INFO``
954* ``3: WARNING``
955* ``4: ERROR``
956
957Multiple output can be defined, they just need to be separated by spaces.
958For example, to log all warnings and errors to syslog under the libvirt
959dident: ``log_outputs="3:syslog:libvirtd``
960
961Log debug buffer size: default 64
962The daemon keeps an internal debug log buffer which will be dumped
963in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
964allows to override the default buffer size in kilobytes.
965If value is ``0`` or less the debug log buffer is deactivated
966``log_buffer_size = 64``
967
968To configure the logging parameters for QEMU, the below pillar
969structure and logging parameters should be used:
970
971.. code-block:: yaml
972
973 nova:
974 compute:
975 qemu:
976 logging:
977 handler: logd
978 virtlog:
979 enabled: true
980 level: 4
981 filters: '3:remote 3:event'
982 outputs: '4:syslog:virtlogd'
983 max_clients: 512
984 max_size: 2097100
985 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000986
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300987Inject password to VM
988---------------------
989
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300990By default nova blocks up any inject to VM because
991``inject_partition`` param is equal to ``-2``.
992If you want to inject password to VM, you will need to
993define ``inject_partition`` greater or equal to ``-1`` and
994define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300995
996For example:
997
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300998.. code-block:: yaml
999
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001000 nova:
1001 compute:
1002 inject_partition: '-1'
1003 inject_password: True
1004
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001005Allow the injection of an admin password for instance only at
1006``create`` and ``rebuild`` process.
1007
1008There is no agent needed within the image to do this. If *libguestfs* is
1009available on the host, it will be used. Otherwise *nbd* is used. The file
1010system of the image will be mounted and the admin password, which is provided
1011in the REST API call will be injected as password for the root user. If no
1012root user is available, the instance won't be launched and an error is thrown.
1013Be aware that the injection is *not* possible when the instance gets launched
1014from a volume.
1015
1016Possible values:
1017
1018* ``True``
1019 Allows the injection
1020
1021* ``False`` (default)
1022 Disallows the injection. Any via the REST API provided
1023 admin password will be silently ignored.
1024
1025Related options:
1026
1027* ``inject_partition``
1028 Decides about the discovery and usage of the file system.
1029 It also can disable the injection at all.
1030 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001031
1032You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001033https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001034
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001035Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001036---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001037
1038By default TLS is disabled.
1039
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001040Enable TLS transport:
1041
1042.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001043
1044 compute:
1045 libvirt:
1046 tls:
1047 enabled: True
1048
1049You able to set custom certificates in pillar:
1050
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001051.. code-block:: yaml
1052
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001053 nova:
1054 compute:
1055 libvirt:
1056 tls:
1057 key: (certificate content)
1058 cert: (certificate content)
1059 cacert: (certificate content)
1060 client:
1061 key: (certificate content)
1062 cert: (certificate content)
1063
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001064Controlling access by `tls_allowed_dn_list`.
1065Enable an access control list of client certificate Distinguished Names (DNs)
1066which can connect to the TLS port on this server. The default is that DNs are
1067not checked. This list may contain wildcards such as
1068"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1069for the format of the wildcards.
1070Note that if this is an empty list, no client can connect.
1071Note also that GnuTLS returns DNs without spaces after commas between
1072the fields (and this is what we check against), but the openssl x509 tool
1073shows spaces.
1074
1075.. code-block:: yaml
1076
1077 nova:
1078 compute:
1079 libvirt:
1080 tls:
1081 tls_allowed_dn_list:
1082 host1:
1083 enabled: true
1084 value: 'C=foo,CN=cmp1'
1085 host2:
1086 enabled: true
1087 value: 'C=foo,CN=cmp2'
1088
1089
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001090You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001091https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001092
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001093Enable transport + authentication for VNC over TLS
1094---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001095# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001096
1097By default communication between nova-novncproxy and qemu service is unsecure.
1098
1099compute:
1100 qemu:
1101 vnc:
1102 tls:
1103 enabled: True
1104
1105controller:
1106 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001107 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001108 tls:
1109 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001110 # This section responsible for communication between nova-novncproxy and qemu service
1111 vencrypt:
1112 tls:
1113 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001114
1115You able to set custom certificates in pillar:
1116
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001117nova:
1118 compute:
1119 qemu:
1120 vnc:
1121 tls:
1122 cacert (certificate content)
1123 cert (certificate content)
1124 key (certificate content)
1125
1126nova:
1127 controller:
1128 novncproxy:
1129 tls:
1130 server:
1131 cert (certificate content)
1132 key (certificate content)
1133 vencrypt:
1134 tls:
1135 cacert (certificate content)
1136 cert (certificate content)
1137 key (certificate content)
1138
1139
1140You can read more about it here:
1141 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1142
1143Enable communication between noVNC proxy and client machine over TLS
1144---------------------
1145
1146By default communication between noVNC proxy and client machine is unsecure.
1147
1148 controller:
1149 novncproxy:
1150 tls:
1151 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001152
1153 nova:
1154 controller:
1155 novncproxy:
1156 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001157 server:
1158 cert (certificate content)
1159 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001160
1161You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001162 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001163
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001164Enable x509 and ssl communication between Nova and Galera cluster.
1165---------------------
1166By default communication between Nova and Galera is unsecure.
1167
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001168nova:
1169 controller:
1170 database:
1171 x509:
1172 enabled: True
1173
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001174You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001175
1176nova:
1177 controller:
1178 database:
1179 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001180 cacert: (certificate content)
1181 cert: (certificate content)
1182 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001183
1184You can read more about it here:
1185 https://docs.openstack.org/security-guide/databases/database-access-control.html
1186
obryndziif7957912019-01-31 00:55:56 +00001187Nova database connection setup:
1188========
1189
1190.. code-block:: yaml
1191
1192 nova:
1193 controller:
1194 enabled: True
1195 ...
1196 database:
1197 idle_timeout: 180
1198 min_pool_size: 100
1199 max_pool_size: 700
1200 max_overflow: 100
1201 retry_interval: 5
1202 max_retries: '-1'
1203 db_max_retries: 3
1204 db_retry_interval: 1
1205 connection_debug: 10
1206 pool_timeout: 120
1207
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001208Upgrades
1209========
1210
1211Each openstack formula provide set of phases (logical bloks) that will help to
1212build flexible upgrade orchestration logic for particular components. The list
1213of phases might and theirs descriptions are listed in table below:
1214
1215+-------------------------------+------------------------------------------------------+
1216| State | Description |
1217+===============================+======================================================+
1218| <app>.upgrade.service_running | Ensure that all services for particular application |
1219| | are enabled for autostart and running |
1220+-------------------------------+------------------------------------------------------+
1221| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1222| | disabled for autostart and dead |
1223+-------------------------------+------------------------------------------------------+
1224| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1225| | are installed to latest available version. |
1226| | This will not upgrade data plane packages like qemu |
1227| | and openvswitch as usually minimal required version |
1228| | in openstack services is really old. The data plane |
1229| | packages should be upgraded separately by `apt-get |
1230| | upgrade` or `apt-get dist-upgrade` |
1231| | Applying this state will not autostart service. |
1232+-------------------------------+------------------------------------------------------+
1233| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1234+-------------------------------+------------------------------------------------------+
1235| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1236| | cloud before running upgrade. |
1237| | Only non destructive actions will be applied during |
1238| | this phase. Perform service built in service check |
1239| | like (keystone-manage doctor and nova-status upgrade)|
1240+-------------------------------+------------------------------------------------------+
1241| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1242| | phase resources will be gracefully removed from |
1243| | current node if it is allowed. Services for upgraded |
1244| | application will be set to admin disabled state to |
1245| | make sure node will not participate in resources |
1246| | scheduling. For example on gtw nodes this will set |
1247| | all agents to admin disable state and will move all |
1248| | routers to other agents. |
1249+-------------------------------+------------------------------------------------------+
1250| <app>.upgrade.upgrade | This state will basically upgrade application on |
1251| | particular target. Stop services, render |
1252| | configuration, install new packages, run offline |
1253| | dbsync (for ctl), start services. Data plane should |
1254| | not be affected, only OpenStack python services. |
1255+-------------------------------+------------------------------------------------------+
1256| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1257+-------------------------------+------------------------------------------------------+
1258| <app>.upgrade.post | This phase should be launched only when upgrade of |
1259| | the cloud is completed. Cleanup temporary files, |
1260| | perform other post upgrade tasks. |
1261+-------------------------------+------------------------------------------------------+
1262| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1263| | operations, verify do not have dead network |
1264| | agents/compute services) |
1265+-------------------------------+------------------------------------------------------+