blob: e57665b4aa7c09feb37450093396fe00a17479b3 [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"
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200328 passthrough_whitelist:
329 - vendor_id: "10de"
330 product_id: "1db4"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200331 network:
332 engine: neutron
333 host: 127.0.0.1
334 port: 9696
335 identity:
336 engine: keystone
337 host: 127.0.0.1
338 port: 35357
339 user: neutron
340 password: pwd
341 tenant: service
342 qemu:
343 max_files: 4096
344 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300345 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200346
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300347Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
348Each process should have uniq host identifier. However multiple computes might be running on
349single host. It is not recommended to have multiple computes running on different hosts that
350manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
351
352.. code-block:: yaml
353
354 nova:
355 compute:
356 compute_driver: vmwareapi.VMwareVCDriver
357 vmware:
358 host_username: vmware
359 host_password: vmware
360 cluster_name: vmware_cluster01
361 host_ip: 1.2.3.4
362
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300363Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200364
365.. code-block:: yaml
366
367 nova:
368 compute:
369 enabled: true
370 ...
371 qemu:
372 user: nova
373 group: cinder
374 dynamic_ownership: 1
375
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300376Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300377
378.. code-block:: yaml
379
380 nova:
381 compute:
382 enabled: true
383 ...
384 user:
385 groups:
386 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200387
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300388Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200389
390.. code-block:: yaml
391
392 nova:
393 compute:
394 enabled: true
395 ...
396 networking: contrail
397
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000398Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200399
400.. code-block:: yaml
401
402 nova:
403 compute:
404 enabled: true
405 ...
406 cache:
407 engine: memcached
408 members:
409 - host: 127.0.0.1
410 port: 11211
411 - host: 127.0.0.1
412 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000413 security:
414 enabled: true
415 strategy: ENCRYPT
416 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200417
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300418Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200419
420.. code-block:: yaml
421
422 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300423 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200424 ....
425 message_queue:
426 engine: rabbitmq
427 members:
428 - host: 10.0.16.1
429 - host: 10.0.16.2
430 - host: 10.0.16.3
431 user: openstack
432 password: pwd
433 virtual_host: '/openstack'
434 ....
435
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300436Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000437
438.. code-block:: yaml
439
440 nova:
441 compute:
442 enabled: true
443 ...
444 ceph:
445 ephemeral: yes
446 rbd_pool: nova
447 rbd_user: nova
448 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300449 ....
maxstack39e6aca2016-05-04 13:50:13 +0000450
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300451Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300452
453.. code-block:: yaml
454
455 nova:
456 compute:
457 enabled: true
458 ...
459 lvm:
460 ephemeral: yes
461 images_volume_group: nova_vg
462
463 linux:
464 storage:
465 lvm:
466 nova_vg:
467 name: nova_vg
468 devices:
469 - /dev/sdf
470 - /dev/sdd
471 - /dev/sdg
472 - /dev/sde
473 - /dev/sdc
474 - /dev/sdj
475 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000476
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300477Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300478
479.. code-block:: yaml
480
481 nova:
482 compute:
483 ....
484 barbican:
485 enabled: true
486
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200487Define aliases for a PCI passthrough devices:
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000488.. code-block:: yaml
489
490 nova:
491 compute:
492 ...
493 pci:
494 alias:
495 alias1:
496 device_type: "type-PF"
497 name: "a1"
498 product_id: "154d"
499 vendor_id: "8086"
500
Oleksandr Pidrepnyi14f08272019-02-20 12:48:17 +0200501Define white list of PCI devices available to VMs:
502.. code-block:: yaml
503
504 nova:
505 compute:
506 ...
507 pci:
508 passthrough_whitelist:
509 - vendor_id: "10de"
510 product_id: "1db4"
511
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300512Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200513
514.. code-block:: yaml
515
516 nova:
517 controller:
518 enabled: true
519 ...
520 metadata:
521 bind:
522 address: 1.2.3.4
523 port: 8776
524
Oleh Hryhorov08482aa2018-11-19 14:07:47 +0200525Define multipath for nova compute:
526
527.. code-block:: yaml
528
529 nova:
530 compute:
531 ....
532 libvirt:
533 volume_use_multipath: True
534
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100535Client role
536-----------
537
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300538Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300539
540.. code-block:: yaml
541
542 nova:
543 compute:
544 instances_path: /mnt/nova/instances
545
546 linux:
547 storage:
548 enabled: true
549 mount:
550 nfs_nova:
551 enabled: true
552 path: ${nova:compute:instances_path}
553 device: 172.31.35.145:/data
554 file_system: nfs
555 opts: rw,vers=3
556
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300557Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100558
559.. code-block:: yaml
560
561 nova:
562 client:
563 enabled: true
564 server:
565 identity:
566 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100567 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100568 flavor_id: 10
569 ram: 4096
570 disk: 10
571 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100572 flavor2:
573 flavor_id: auto
574 ram: 4096
575 disk: 20
576 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100577 identity1:
578 flavor:
579 ...
580
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300581Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100582
583.. code-block:: yaml
584
585 nova:
586 client:
587 enabled: true
588 server:
589 identity:
590 availability_zones:
591 - availability_zone_01
592 - availability_zone_02
593
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300594Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200595
596.. code-block:: yaml
597
598 nova:
599 client:
600 enabled: true
601 server:
602 identity:
603 aggregates:
604 - aggregate1
605 - aggregate2
606
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300607Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300608
609.. code-block:: yaml
610
611 nova:
612 controller:
613 upgrade_levels:
614 compute: juno
615
616 nova:
617 compute:
618 upgrade_levels:
619 compute: juno
620
Petr Jedinýd855ef22017-03-06 22:24:33 +0100621SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100622------
623
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300624Add ``PciPassthroughFilter`` into scheduler filters and NICs on
625specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100626
627.. code-block:: yaml
628
629 nova:
630 controller:
631 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000632 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100633
634 nova:
635 compute:
636 sriov:
637 nic_one:
638 devname: eth1
639 physical_network: physnet1
640
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000641.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
642 nova.conf file in appropriate format.
643
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100644CPU pinning & Hugepages
645-----------------------
646
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300647CPU pinning of virtual machine instances to dedicated physical
648CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100649
650.. code-block:: yaml
651
652 nova:
653 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000654 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100655
656 nova:
657 compute:
658 vcpu_pin_set: 2,3,4,5
659 hugepages:
660 mount_points:
661 - path: /mnt/hugepages_1GB
662 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100663
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200664Custom Scheduler filters
665------------------------
666
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300667If you have a custom filter, that needs to be included in the
668scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200669
670.. code-block:: yaml
671
672 nova:
673 controller:
674 scheduler_custom_filters:
675 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
676
677 # 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 +0000678 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200679
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400680 # Since Queens version a sequence could be used as well:
681 ~scheduler_default_filters:
682 - DifferentHostFilter
683 - SameHostFilter
684 ...
685 - MyCustomFilter
686
687
Michel Nederlofeb566f62017-04-21 15:37:47 +0200688Hardware Trip/Unmap Support
689---------------------------
690
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300691To enable TRIM support for ephemeral images (thru nova managed
692images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200693
694.. code-block:: yaml
695
696 nova:
697 compute:
698 libvirt:
699 hw_disk_discard: unmap
700
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300701To actually utilize this feature, the following metadata must be
702set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200703
704.. code-block:: bash
705
706 glance image-update --property hw_scsi_model=virtio-scsi <image>
707 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100708
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000709Scheduler Host Manager
710----------------------
711
712Specify a custom host manager.
713
Thom Gerdesec00afd2017-04-07 18:06:59 +0000714libvirt CPU mode
715----------------
716
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300717Allow setting the model of CPU that is exposed to a VM. This
718allows for better support live migration between hypervisors with
719different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200720
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000721.. code-block:: yaml
722
723 nova:
724 controller:
725 scheduler_host_manager: ironic_host_manager
726
Thom Gerdesec00afd2017-04-07 18:06:59 +0000727 compute:
728 cpu_mode: host-model
729
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200730Nova compute cpu model
731----------------------
732
733.. code-block:: yaml
734
735 nova:
736 compute:
737 cpu_mode: custom
738 libvirt:
739 cpu_model: IvyBridge
740
741
Michel Nederloff7eefb22017-07-10 11:14:33 +0200742Nova compute workarounds
743------------------------
744
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300745Live snapshotting is disabled by default in nova. To enable
746this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200747
748From manual:
749
750.. code-block:: yaml
751
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300752 When using libvirt 1.2.2 live snapshots fail intermittently under load
753 (likely related to concurrent libvirt/qemu operations). This config
754 option provides a mechanism to disable live snapshot, in favor of cold
755 snapshot, while this is resolved. Cold snapshot causes an instance
756 outage while the guest is going through the snapshotting process.
757
758 For more information, refer to the bug report:
759
760 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200761
762Configurable pillar data:
763
764.. code-block:: yaml
765
766 nova:
767 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200768 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200769 disable_libvirt_livesnapshot: False
770
Michel Nederlofb51a5142017-06-27 08:31:35 +0200771Config drive options
772--------------------
773
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300774See example below on how to configure the options for the
775config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200776
777.. code-block:: yaml
778
779 nova:
780 compute:
781 config_drive:
782 forced: True # Default: True
783 cdrom: True # Default: False
784 format: iso9660 # Default: vfat
785 inject_password: False # Default: False
786
Michel Nederloff81919b2017-11-20 09:37:07 +0100787Number of concurrent live migrates
788----------------------------------
789
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300790Default is to have no concurrent live migrations (so 1
791live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100792
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300793Excerpt from config options page
794https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100795
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300796Maximum number of live migrations to run concurrently. This limit is
797enforced to avoid outbound live migrations overwhelming the host/network
798and causing failures. It is not recommended that you change this unless
799you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100800
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300801Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100802
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300803- 0 : treated as unlimited.
804- Negative value defaults to 0.
805- Any positive integer representing maximum number of live migrations
806 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100807
808To configure this option:
809
810.. code-block:: yaml
811
812 nova:
813 compute:
814 max_concurrent_live_migrations: 1 # (1 is the default)
815
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300816Live migration with auto converge
817----------------------------------
818
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300819Auto converge throttles down CPU if a progress of on-going live
820migration is slow
821https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300822
823.. code-block:: yaml
824
825 nova:
826 compute:
827 libvirt:
828 live_migration_permit_auto_converge: False # (False is the default)
829
830.. code-block:: yaml
831
832 nova:
833 controller:
834 libvirt:
835 live_migration_permit_auto_converge: False # (False is the default)
836
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400837Enhanced logging with logging.conf
838----------------------------------
839
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300840By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400841
842That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400843
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300844* ``openstack_log_appender``
845 Set to true to enable log_config_append for all OpenStack services
846
847* ``openstack_fluentd_handler_enabled``
848 Set to true to enable FluentHandler for all Openstack services
849
850* ``openstack_ossyslog_handler_enabled``
851 Set to true to enable OSSysLogHandler for all Openstack services
852
853Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
854are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400855
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400856Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400857
858.. code-block:: yaml
859
860 nova:
861 controller:
862 logging:
863 log_appender: true
864 log_handlers:
865 watchedfile:
866 enabled: true
867 fluentd:
868 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200869 ossyslog:
870 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400871
872 compute:
873 logging:
874 log_appender: true
875 log_handlers:
876 watchedfile:
877 enabled: true
878 fluentd:
879 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200880 ossyslog:
881 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000882
Vasyl Saienko7243a952018-05-11 21:26:54 +0300883The log level might be configured per logger by using the
884following pillar structure:
885
886.. code-block:: yaml
887
888 nova:
889 compute:
890 logging:
891 loggers:
892 <logger_name>:
893 level: WARNING
894
895 nova:
896 compute:
897 logging:
898 loggers:
899 <logger_name>:
900 level: WARNING
901
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000902Configure syslog parameters for libvirtd
903----------------------------------------
904
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300905To configure syslog parameters for libvirtd the below pillar
906structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000907by libvirtd. These values might be known from the documentation.
908
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300909.. code-block:: yaml
910
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000911 nova:
912 compute:
913 libvirt:
914 logging:
915 level: 3
916 filters: '3:remote 4:event'
917 outputs: '3:syslog:libvirtd'
918 buffer_size: 64
919
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300920Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000921
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300922Logging level: 4 errors, 3 warnings, 2 information, 1 debug
923basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000924
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300925Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000926
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300927A filter allows to select a different logging level for a given category
928of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000929
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300930The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000931
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300932* ``x:name``
933* ``x:+name``
934 where name is a string which is matched against source file name,
935 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
936 tells libvirt to log stack trace for each message matching name,
937 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000938
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300939* ``1: DEBUG``
940* ``2: INFO``
941* ``3: WARNING``
942* ``4: ERROR``
943
944Multiple filter can be defined in a single @filters, they just
945need to be separated by spaces.
946
947For example, to only get warning or errors from the remote layer
948and only errors from the event layer: ``log_filters="3:remote 4:event``
949
950Logging outputs:
951
952An output is one of the places to save logging information
953The format for an output can be:
954
955* ``x:stderr``
956 Output goes to stderr
957
958* ``x:syslog:name``
959 Use syslog for the output and use the given name as the ident
960
961* ``x:file:file_path``
962 output to a file, with the given filepath
963
964 In all case the x prefix is the minimal level, acting as a filter
965
966* ``1: DEBUG``
967* ``2: INFO``
968* ``3: WARNING``
969* ``4: ERROR``
970
971Multiple output can be defined, they just need to be separated by spaces.
972For example, to log all warnings and errors to syslog under the libvirt
973dident: ``log_outputs="3:syslog:libvirtd``
974
975Log debug buffer size: default 64
976The daemon keeps an internal debug log buffer which will be dumped
977in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
978allows to override the default buffer size in kilobytes.
979If value is ``0`` or less the debug log buffer is deactivated
980``log_buffer_size = 64``
981
982To configure the logging parameters for QEMU, the below pillar
983structure and logging parameters should be used:
984
985.. code-block:: yaml
986
987 nova:
988 compute:
989 qemu:
990 logging:
991 handler: logd
992 virtlog:
993 enabled: true
994 level: 4
995 filters: '3:remote 3:event'
996 outputs: '4:syslog:virtlogd'
997 max_clients: 512
998 max_size: 2097100
999 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +00001000
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001001Inject password to VM
1002---------------------
1003
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001004By default nova blocks up any inject to VM because
1005``inject_partition`` param is equal to ``-2``.
1006If you want to inject password to VM, you will need to
1007define ``inject_partition`` greater or equal to ``-1`` and
1008define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001009
1010For example:
1011
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001012.. code-block:: yaml
1013
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001014 nova:
1015 compute:
1016 inject_partition: '-1'
1017 inject_password: True
1018
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001019Allow the injection of an admin password for instance only at
1020``create`` and ``rebuild`` process.
1021
1022There is no agent needed within the image to do this. If *libguestfs* is
1023available on the host, it will be used. Otherwise *nbd* is used. The file
1024system of the image will be mounted and the admin password, which is provided
1025in the REST API call will be injected as password for the root user. If no
1026root user is available, the instance won't be launched and an error is thrown.
1027Be aware that the injection is *not* possible when the instance gets launched
1028from a volume.
1029
1030Possible values:
1031
1032* ``True``
1033 Allows the injection
1034
1035* ``False`` (default)
1036 Disallows the injection. Any via the REST API provided
1037 admin password will be silently ignored.
1038
1039Related options:
1040
1041* ``inject_partition``
1042 Decides about the discovery and usage of the file system.
1043 It also can disable the injection at all.
1044 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001045
1046You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001047https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001048
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001049Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001050---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001051
1052By default TLS is disabled.
1053
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001054Enable TLS transport:
1055
1056.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001057
1058 compute:
1059 libvirt:
1060 tls:
1061 enabled: True
1062
1063You able to set custom certificates in pillar:
1064
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001065.. code-block:: yaml
1066
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001067 nova:
1068 compute:
1069 libvirt:
1070 tls:
1071 key: (certificate content)
1072 cert: (certificate content)
1073 cacert: (certificate content)
1074 client:
1075 key: (certificate content)
1076 cert: (certificate content)
1077
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001078Controlling access by `tls_allowed_dn_list`.
1079Enable an access control list of client certificate Distinguished Names (DNs)
1080which can connect to the TLS port on this server. The default is that DNs are
1081not checked. This list may contain wildcards such as
1082"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1083for the format of the wildcards.
1084Note that if this is an empty list, no client can connect.
1085Note also that GnuTLS returns DNs without spaces after commas between
1086the fields (and this is what we check against), but the openssl x509 tool
1087shows spaces.
1088
1089.. code-block:: yaml
1090
1091 nova:
1092 compute:
1093 libvirt:
1094 tls:
1095 tls_allowed_dn_list:
1096 host1:
1097 enabled: true
1098 value: 'C=foo,CN=cmp1'
1099 host2:
1100 enabled: true
1101 value: 'C=foo,CN=cmp2'
1102
1103
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001104You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001105https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001106
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001107Enable transport + authentication for VNC over TLS
1108---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001109# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001110
1111By default communication between nova-novncproxy and qemu service is unsecure.
1112
1113compute:
1114 qemu:
1115 vnc:
1116 tls:
1117 enabled: True
1118
1119controller:
1120 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001121 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001122 tls:
1123 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001124 # This section responsible for communication between nova-novncproxy and qemu service
1125 vencrypt:
1126 tls:
1127 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001128
1129You able to set custom certificates in pillar:
1130
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001131nova:
1132 compute:
1133 qemu:
1134 vnc:
1135 tls:
1136 cacert (certificate content)
1137 cert (certificate content)
1138 key (certificate content)
1139
1140nova:
1141 controller:
1142 novncproxy:
1143 tls:
1144 server:
1145 cert (certificate content)
1146 key (certificate content)
1147 vencrypt:
1148 tls:
1149 cacert (certificate content)
1150 cert (certificate content)
1151 key (certificate content)
1152
1153
1154You can read more about it here:
1155 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1156
1157Enable communication between noVNC proxy and client machine over TLS
1158---------------------
1159
1160By default communication between noVNC proxy and client machine is unsecure.
1161
1162 controller:
1163 novncproxy:
1164 tls:
1165 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001166
1167 nova:
1168 controller:
1169 novncproxy:
1170 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001171 server:
1172 cert (certificate content)
1173 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001174
1175You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001176 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001177
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001178Enable x509 and ssl communication between Nova and Galera cluster.
1179---------------------
1180By default communication between Nova and Galera is unsecure.
1181
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001182nova:
1183 controller:
1184 database:
1185 x509:
1186 enabled: True
1187
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001188You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001189
1190nova:
1191 controller:
1192 database:
1193 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001194 cacert: (certificate content)
1195 cert: (certificate content)
1196 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001197
1198You can read more about it here:
1199 https://docs.openstack.org/security-guide/databases/database-access-control.html
1200
obryndziif7957912019-01-31 00:55:56 +00001201Nova database connection setup:
1202========
1203
1204.. code-block:: yaml
1205
1206 nova:
1207 controller:
1208 enabled: True
1209 ...
1210 database:
1211 idle_timeout: 180
1212 min_pool_size: 100
1213 max_pool_size: 700
1214 max_overflow: 100
1215 retry_interval: 5
1216 max_retries: '-1'
1217 db_max_retries: 3
1218 db_retry_interval: 1
1219 connection_debug: 10
1220 pool_timeout: 120
1221
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001222Upgrades
1223========
1224
1225Each openstack formula provide set of phases (logical bloks) that will help to
1226build flexible upgrade orchestration logic for particular components. The list
1227of phases might and theirs descriptions are listed in table below:
1228
1229+-------------------------------+------------------------------------------------------+
1230| State | Description |
1231+===============================+======================================================+
1232| <app>.upgrade.service_running | Ensure that all services for particular application |
1233| | are enabled for autostart and running |
1234+-------------------------------+------------------------------------------------------+
1235| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1236| | disabled for autostart and dead |
1237+-------------------------------+------------------------------------------------------+
1238| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1239| | are installed to latest available version. |
1240| | This will not upgrade data plane packages like qemu |
1241| | and openvswitch as usually minimal required version |
1242| | in openstack services is really old. The data plane |
1243| | packages should be upgraded separately by `apt-get |
1244| | upgrade` or `apt-get dist-upgrade` |
1245| | Applying this state will not autostart service. |
1246+-------------------------------+------------------------------------------------------+
1247| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1248+-------------------------------+------------------------------------------------------+
1249| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1250| | cloud before running upgrade. |
1251| | Only non destructive actions will be applied during |
1252| | this phase. Perform service built in service check |
1253| | like (keystone-manage doctor and nova-status upgrade)|
1254+-------------------------------+------------------------------------------------------+
1255| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1256| | phase resources will be gracefully removed from |
1257| | current node if it is allowed. Services for upgraded |
1258| | application will be set to admin disabled state to |
1259| | make sure node will not participate in resources |
1260| | scheduling. For example on gtw nodes this will set |
1261| | all agents to admin disable state and will move all |
1262| | routers to other agents. |
1263+-------------------------------+------------------------------------------------------+
1264| <app>.upgrade.upgrade | This state will basically upgrade application on |
1265| | particular target. Stop services, render |
1266| | configuration, install new packages, run offline |
1267| | dbsync (for ctl), start services. Data plane should |
1268| | not be affected, only OpenStack python services. |
1269+-------------------------------+------------------------------------------------------+
1270| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1271+-------------------------------+------------------------------------------------------+
1272| <app>.upgrade.post | This phase should be launched only when upgrade of |
1273| | the cloud is completed. Cleanup temporary files, |
1274| | perform other post upgrade tasks. |
1275+-------------------------------+------------------------------------------------------+
1276| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1277| | operations, verify do not have dead network |
1278| | agents/compute services) |
1279+-------------------------------+------------------------------------------------------+