blob: 4d698c492fcf0a8d25609b9dae6dcf4277d80b8b [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
Gleb Galkin32a54092018-10-02 17:16:40 +030033 consoleauth_token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020034 bind:
35 public_address: 10.0.0.122
36 public_name: openstack.domain.com
37 novncproxy_port: 6080
38 database:
39 engine: mysql
40 host: 127.0.0.1
41 port: 3306
42 name: nova
43 user: nova
44 password: pwd
45 identity:
46 engine: keystone
47 host: 127.0.0.1
48 port: 35357
49 user: nova
50 password: pwd
51 tenant: service
52 message_queue:
53 engine: rabbitmq
54 host: 127.0.0.1
55 port: 5672
56 user: openstack
57 password: pwd
58 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000059 pci:
60 alias:
61 alias1:
62 device_type: "type-PF"
63 name: "a1"
64 product_id: "154d"
65 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020066 network:
67 engine: neutron
68 host: 127.0.0.1
69 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020070 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020071 identity:
72 engine: keystone
73 host: 127.0.0.1
74 port: 35357
75 user: neutron
76 password: pwd
77 tenant: service
78 metadata:
79 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010080 audit:
81 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010082 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030083 barbican:
84 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020085
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030086Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020087
88.. code-block:: yaml
89
90 nova:
91 controller:
92 version: juno
93 source:
94 engine: pkg
95 address: http://...
96 ....
97
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030098Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +020099
100.. code-block:: yaml
101
102 nova:
103 controller:
104 ....
105 message_queue:
106 engine: rabbitmq
107 members:
108 - host: 10.0.16.1
109 - host: 10.0.16.2
110 - host: 10.0.16.3
111 user: openstack
112 password: pwd
113 virtual_host: '/openstack'
114 ....
115
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300116Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100117
118.. code-block:: yaml
119
120 nova:
121 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100122 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100123 enabled: true
124 ....
125 filter_factory: 'keystonemiddleware.audit:filter_factory'
126 map_file: '/etc/pycadf/nova_api_audit_map.conf'
127 ....
128
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300129Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200130
131.. code-block:: yaml
132
133 nova:
134 controller:
135 cors:
136 allowed_origin: https:localhost.local,http:localhost.local
137 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
138 allow_methods: GET,PUT,POST,DELETE,PATCH
139 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
140 allow_credentials: True
141 max_age: 86400
142
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300143Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400144
145.. code-block:: yaml
146
147 nova:
148 controller:
149 ....
150 policy:
151 context_is_admin: 'role:admin or role:administrator'
152 'compute:create': 'rule:admin_or_owner'
153 # Add key without value to remove line from policy.json
154 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200155
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300156Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300157
158.. code-block:: yaml
159
160 nova:
161 controller:
162 ....
163 barbican:
164 enabled: true
165
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000166Define aliases for PCI devices:
167.. code-block:: yaml
168
169 nova:
170 controller:
171 ...
172 pci:
173 alias:
174 alias1:
175 device_type: "type-PF"
176 name: "a1"
177 product_id: "154d"
178 vendor_id: "8086"
179
Jiri Broulik789179a2018-02-13 16:16:46 +0100180Enable cells update:
181
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300182.. note:: Useful when upgrading Openstack. To update cells to test
183 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100184
185.. code-block:: yaml
186
187 nova:
188 controller:
189 update_cells: true
190
Kirill Bespalov64617172017-07-11 14:43:14 +0300191
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300192Configuring TLS communications
193------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300194
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300195.. note:: By default system wide installed CA certs are used,
196 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300197
198- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300199
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300200 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300201
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300202 nova:
203 compute:
204 message_queue:
205 port: 5671
206 ssl:
207 enabled: True
208 (optional) cacert: cert body if the cacert_file does not exists
209 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
210 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300211
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300212- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300213
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300214 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300215
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300216 nova:
217 controller:
218 database:
219 ssl:
220 enabled: True
221 (optional) cacert: cert body if the cacert_file does not exists
222 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300223
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300224- **Openstack HTTPS API**
225
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300226 Set the ``https`` as protocol at ``nova:compute`` and
227 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300228
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300229 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300230
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300231 nova:
232 controller :
233 identity:
234 protocol: https
235 (optional) cacert_file: /etc/openstack/proxy.pem
236 network:
237 protocol: https
238 (optional) cacert_file: /etc/openstack/proxy.pem
239 glance:
240 protocol: https
241 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300242
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300243 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300244
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300245 nova:
246 compute:
247 identity:
248 protocol: https
249 (optional) cacert_file: /etc/openstack/proxy.pem
250 network:
251 protocol: https
252 (optional) cacert_file: /etc/openstack/proxy.pem
253 image:
254 protocol: https
255 (optional) cacert_file: /etc/openstack/proxy.pem
256 ironic:
257 protocol: https
258 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300259
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300260.. note:: Barbican, Cinder, and placement url endpoints are discovering
261 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300262
Filip Pytloun4a72d792015-10-06 16:28:32 +0200263Compute nodes
264-------------
265
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300266Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200267
268.. code-block:: yaml
269
270 nova:
271 compute:
272 version: juno
273 enabled: true
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300274 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300275 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100276 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200277 aggregates:
278 - hosts_with_fc
279 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200280 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200281 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400282 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300283 my_ip: 10.1.0.16
Filip Pytloun4a72d792015-10-06 16:28:32 +0200284 bind:
285 vnc_address: 172.20.0.100
286 vnc_port: 6080
287 vnc_name: openstack.domain.com
288 vnc_protocol: http
289 database:
290 engine: mysql
291 host: 127.0.0.1
292 port: 3306
293 name: nova
294 user: nova
295 password: pwd
296 identity:
297 engine: keystone
298 host: 127.0.0.1
299 port: 35357
300 user: nova
301 password: pwd
302 tenant: service
303 message_queue:
304 engine: rabbitmq
305 host: 127.0.0.1
306 port: 5672
307 user: openstack
308 password: pwd
309 virtual_host: '/openstack'
310 image:
311 engine: glance
312 host: 127.0.0.1
313 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000314 pci:
315 alias:
316 alias1:
317 device_type: "type-PF"
318 name: "a1"
319 product_id: "154d"
320 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200321 network:
322 engine: neutron
323 host: 127.0.0.1
324 port: 9696
325 identity:
326 engine: keystone
327 host: 127.0.0.1
328 port: 35357
329 user: neutron
330 password: pwd
331 tenant: service
332 qemu:
333 max_files: 4096
334 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300335 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200336
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300337Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
338Each process should have uniq host identifier. However multiple computes might be running on
339single host. It is not recommended to have multiple computes running on different hosts that
340manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
341
342.. code-block:: yaml
343
344 nova:
345 compute:
346 compute_driver: vmwareapi.VMwareVCDriver
347 vmware:
348 host_username: vmware
349 host_password: vmware
350 cluster_name: vmware_cluster01
351 host_ip: 1.2.3.4
352
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300353Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200354
355.. code-block:: yaml
356
357 nova:
358 compute:
359 enabled: true
360 ...
361 qemu:
362 user: nova
363 group: cinder
364 dynamic_ownership: 1
365
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300366Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300367
368.. code-block:: yaml
369
370 nova:
371 compute:
372 enabled: true
373 ...
374 user:
375 groups:
376 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200377
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300378Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200379
380.. code-block:: yaml
381
382 nova:
383 compute:
384 enabled: true
385 ...
386 networking: contrail
387
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000388Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200389
390.. code-block:: yaml
391
392 nova:
393 compute:
394 enabled: true
395 ...
396 cache:
397 engine: memcached
398 members:
399 - host: 127.0.0.1
400 port: 11211
401 - host: 127.0.0.1
402 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000403 security:
404 enabled: true
405 strategy: ENCRYPT
406 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200407
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300408Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200409
410.. code-block:: yaml
411
412 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300413 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200414 ....
415 message_queue:
416 engine: rabbitmq
417 members:
418 - host: 10.0.16.1
419 - host: 10.0.16.2
420 - host: 10.0.16.3
421 user: openstack
422 password: pwd
423 virtual_host: '/openstack'
424 ....
425
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300426Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000427
428.. code-block:: yaml
429
430 nova:
431 compute:
432 enabled: true
433 ...
434 ceph:
435 ephemeral: yes
436 rbd_pool: nova
437 rbd_user: nova
438 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300439 ....
maxstack39e6aca2016-05-04 13:50:13 +0000440
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300441Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300442
443.. code-block:: yaml
444
445 nova:
446 compute:
447 enabled: true
448 ...
449 lvm:
450 ephemeral: yes
451 images_volume_group: nova_vg
452
453 linux:
454 storage:
455 lvm:
456 nova_vg:
457 name: nova_vg
458 devices:
459 - /dev/sdf
460 - /dev/sdd
461 - /dev/sdg
462 - /dev/sde
463 - /dev/sdc
464 - /dev/sdj
465 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000466
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300467Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300468
469.. code-block:: yaml
470
471 nova:
472 compute:
473 ....
474 barbican:
475 enabled: true
476
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000477Define aliases for PCI devices:
478.. code-block:: yaml
479
480 nova:
481 compute:
482 ...
483 pci:
484 alias:
485 alias1:
486 device_type: "type-PF"
487 name: "a1"
488 product_id: "154d"
489 vendor_id: "8086"
490
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300491Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200492
493.. code-block:: yaml
494
495 nova:
496 controller:
497 enabled: true
498 ...
499 metadata:
500 bind:
501 address: 1.2.3.4
502 port: 8776
503
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100504Client role
505-----------
506
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300507Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300508
509.. code-block:: yaml
510
511 nova:
512 compute:
513 instances_path: /mnt/nova/instances
514
515 linux:
516 storage:
517 enabled: true
518 mount:
519 nfs_nova:
520 enabled: true
521 path: ${nova:compute:instances_path}
522 device: 172.31.35.145:/data
523 file_system: nfs
524 opts: rw,vers=3
525
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300526Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100527
528.. code-block:: yaml
529
530 nova:
531 client:
532 enabled: true
533 server:
534 identity:
535 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100536 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100537 flavor_id: 10
538 ram: 4096
539 disk: 10
540 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100541 flavor2:
542 flavor_id: auto
543 ram: 4096
544 disk: 20
545 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100546 identity1:
547 flavor:
548 ...
549
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300550Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100551
552.. code-block:: yaml
553
554 nova:
555 client:
556 enabled: true
557 server:
558 identity:
559 availability_zones:
560 - availability_zone_01
561 - availability_zone_02
562
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300563Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200564
565.. code-block:: yaml
566
567 nova:
568 client:
569 enabled: true
570 server:
571 identity:
572 aggregates:
573 - aggregate1
574 - aggregate2
575
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300576Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300577
578.. code-block:: yaml
579
580 nova:
581 controller:
582 upgrade_levels:
583 compute: juno
584
585 nova:
586 compute:
587 upgrade_levels:
588 compute: juno
589
Petr Jedinýd855ef22017-03-06 22:24:33 +0100590SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100591------
592
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300593Add ``PciPassthroughFilter`` into scheduler filters and NICs on
594specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100595
596.. code-block:: yaml
597
598 nova:
599 controller:
600 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000601 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100602
603 nova:
604 compute:
605 sriov:
606 nic_one:
607 devname: eth1
608 physical_network: physnet1
609
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000610.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
611 nova.conf file in appropriate format.
612
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100613CPU pinning & Hugepages
614-----------------------
615
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300616CPU pinning of virtual machine instances to dedicated physical
617CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100618
619.. code-block:: yaml
620
621 nova:
622 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000623 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100624
625 nova:
626 compute:
627 vcpu_pin_set: 2,3,4,5
628 hugepages:
629 mount_points:
630 - path: /mnt/hugepages_1GB
631 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100632
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200633Custom Scheduler filters
634------------------------
635
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300636If you have a custom filter, that needs to be included in the
637scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200638
639.. code-block:: yaml
640
641 nova:
642 controller:
643 scheduler_custom_filters:
644 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
645
646 # 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 +0000647 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200648
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400649 # Since Queens version a sequence could be used as well:
650 ~scheduler_default_filters:
651 - DifferentHostFilter
652 - SameHostFilter
653 ...
654 - MyCustomFilter
655
656
Michel Nederlofeb566f62017-04-21 15:37:47 +0200657Hardware Trip/Unmap Support
658---------------------------
659
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300660To enable TRIM support for ephemeral images (thru nova managed
661images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200662
663.. code-block:: yaml
664
665 nova:
666 compute:
667 libvirt:
668 hw_disk_discard: unmap
669
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300670To actually utilize this feature, the following metadata must be
671set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200672
673.. code-block:: bash
674
675 glance image-update --property hw_scsi_model=virtio-scsi <image>
676 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100677
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000678Scheduler Host Manager
679----------------------
680
681Specify a custom host manager.
682
Thom Gerdesec00afd2017-04-07 18:06:59 +0000683libvirt CPU mode
684----------------
685
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300686Allow setting the model of CPU that is exposed to a VM. This
687allows for better support live migration between hypervisors with
688different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200689
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000690.. code-block:: yaml
691
692 nova:
693 controller:
694 scheduler_host_manager: ironic_host_manager
695
Thom Gerdesec00afd2017-04-07 18:06:59 +0000696 compute:
697 cpu_mode: host-model
698
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200699Nova compute cpu model
700----------------------
701
702.. code-block:: yaml
703
704 nova:
705 compute:
706 cpu_mode: custom
707 libvirt:
708 cpu_model: IvyBridge
709
710
Michel Nederloff7eefb22017-07-10 11:14:33 +0200711Nova compute workarounds
712------------------------
713
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300714Live snapshotting is disabled by default in nova. To enable
715this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200716
717From manual:
718
719.. code-block:: yaml
720
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300721 When using libvirt 1.2.2 live snapshots fail intermittently under load
722 (likely related to concurrent libvirt/qemu operations). This config
723 option provides a mechanism to disable live snapshot, in favor of cold
724 snapshot, while this is resolved. Cold snapshot causes an instance
725 outage while the guest is going through the snapshotting process.
726
727 For more information, refer to the bug report:
728
729 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200730
731Configurable pillar data:
732
733.. code-block:: yaml
734
735 nova:
736 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200737 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200738 disable_libvirt_livesnapshot: False
739
Michel Nederlofb51a5142017-06-27 08:31:35 +0200740Config drive options
741--------------------
742
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300743See example below on how to configure the options for the
744config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200745
746.. code-block:: yaml
747
748 nova:
749 compute:
750 config_drive:
751 forced: True # Default: True
752 cdrom: True # Default: False
753 format: iso9660 # Default: vfat
754 inject_password: False # Default: False
755
Michel Nederloff81919b2017-11-20 09:37:07 +0100756Number of concurrent live migrates
757----------------------------------
758
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300759Default is to have no concurrent live migrations (so 1
760live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100761
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300762Excerpt from config options page
763https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100764
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300765Maximum number of live migrations to run concurrently. This limit is
766enforced to avoid outbound live migrations overwhelming the host/network
767and causing failures. It is not recommended that you change this unless
768you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100769
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300770Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100771
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300772- 0 : treated as unlimited.
773- Negative value defaults to 0.
774- Any positive integer representing maximum number of live migrations
775 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100776
777To configure this option:
778
779.. code-block:: yaml
780
781 nova:
782 compute:
783 max_concurrent_live_migrations: 1 # (1 is the default)
784
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300785Live migration with auto converge
786----------------------------------
787
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300788Auto converge throttles down CPU if a progress of on-going live
789migration is slow
790https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300791
792.. code-block:: yaml
793
794 nova:
795 compute:
796 libvirt:
797 live_migration_permit_auto_converge: False # (False is the default)
798
799.. code-block:: yaml
800
801 nova:
802 controller:
803 libvirt:
804 live_migration_permit_auto_converge: False # (False is the default)
805
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400806Enhanced logging with logging.conf
807----------------------------------
808
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300809By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400810
811That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400812
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300813* ``openstack_log_appender``
814 Set to true to enable log_config_append for all OpenStack services
815
816* ``openstack_fluentd_handler_enabled``
817 Set to true to enable FluentHandler for all Openstack services
818
819* ``openstack_ossyslog_handler_enabled``
820 Set to true to enable OSSysLogHandler for all Openstack services
821
822Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
823are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400824
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400825Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400826
827.. code-block:: yaml
828
829 nova:
830 controller:
831 logging:
832 log_appender: true
833 log_handlers:
834 watchedfile:
835 enabled: true
836 fluentd:
837 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200838 ossyslog:
839 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400840
841 compute:
842 logging:
843 log_appender: true
844 log_handlers:
845 watchedfile:
846 enabled: true
847 fluentd:
848 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200849 ossyslog:
850 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000851
Vasyl Saienko7243a952018-05-11 21:26:54 +0300852The log level might be configured per logger by using the
853following pillar structure:
854
855.. code-block:: yaml
856
857 nova:
858 compute:
859 logging:
860 loggers:
861 <logger_name>:
862 level: WARNING
863
864 nova:
865 compute:
866 logging:
867 loggers:
868 <logger_name>:
869 level: WARNING
870
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000871Configure syslog parameters for libvirtd
872----------------------------------------
873
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300874To configure syslog parameters for libvirtd the below pillar
875structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000876by libvirtd. These values might be known from the documentation.
877
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300878.. code-block:: yaml
879
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000880 nova:
881 compute:
882 libvirt:
883 logging:
884 level: 3
885 filters: '3:remote 4:event'
886 outputs: '3:syslog:libvirtd'
887 buffer_size: 64
888
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300889Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000890
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300891Logging level: 4 errors, 3 warnings, 2 information, 1 debug
892basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000893
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300894Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000895
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300896A filter allows to select a different logging level for a given category
897of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000898
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300899The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000900
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300901* ``x:name``
902* ``x:+name``
903 where name is a string which is matched against source file name,
904 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
905 tells libvirt to log stack trace for each message matching name,
906 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000907
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300908* ``1: DEBUG``
909* ``2: INFO``
910* ``3: WARNING``
911* ``4: ERROR``
912
913Multiple filter can be defined in a single @filters, they just
914need to be separated by spaces.
915
916For example, to only get warning or errors from the remote layer
917and only errors from the event layer: ``log_filters="3:remote 4:event``
918
919Logging outputs:
920
921An output is one of the places to save logging information
922The format for an output can be:
923
924* ``x:stderr``
925 Output goes to stderr
926
927* ``x:syslog:name``
928 Use syslog for the output and use the given name as the ident
929
930* ``x:file:file_path``
931 output to a file, with the given filepath
932
933 In all case the x prefix is the minimal level, acting as a filter
934
935* ``1: DEBUG``
936* ``2: INFO``
937* ``3: WARNING``
938* ``4: ERROR``
939
940Multiple output can be defined, they just need to be separated by spaces.
941For example, to log all warnings and errors to syslog under the libvirt
942dident: ``log_outputs="3:syslog:libvirtd``
943
944Log debug buffer size: default 64
945The daemon keeps an internal debug log buffer which will be dumped
946in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
947allows to override the default buffer size in kilobytes.
948If value is ``0`` or less the debug log buffer is deactivated
949``log_buffer_size = 64``
950
951To configure the logging parameters for QEMU, the below pillar
952structure and logging parameters should be used:
953
954.. code-block:: yaml
955
956 nova:
957 compute:
958 qemu:
959 logging:
960 handler: logd
961 virtlog:
962 enabled: true
963 level: 4
964 filters: '3:remote 3:event'
965 outputs: '4:syslog:virtlogd'
966 max_clients: 512
967 max_size: 2097100
968 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000969
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300970Inject password to VM
971---------------------
972
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300973By default nova blocks up any inject to VM because
974``inject_partition`` param is equal to ``-2``.
975If you want to inject password to VM, you will need to
976define ``inject_partition`` greater or equal to ``-1`` and
977define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300978
979For example:
980
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300981.. code-block:: yaml
982
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300983 nova:
984 compute:
985 inject_partition: '-1'
986 inject_password: True
987
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300988Allow the injection of an admin password for instance only at
989``create`` and ``rebuild`` process.
990
991There is no agent needed within the image to do this. If *libguestfs* is
992available on the host, it will be used. Otherwise *nbd* is used. The file
993system of the image will be mounted and the admin password, which is provided
994in the REST API call will be injected as password for the root user. If no
995root user is available, the instance won't be launched and an error is thrown.
996Be aware that the injection is *not* possible when the instance gets launched
997from a volume.
998
999Possible values:
1000
1001* ``True``
1002 Allows the injection
1003
1004* ``False`` (default)
1005 Disallows the injection. Any via the REST API provided
1006 admin password will be silently ignored.
1007
1008Related options:
1009
1010* ``inject_partition``
1011 Decides about the discovery and usage of the file system.
1012 It also can disable the injection at all.
1013 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001014
1015You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001016https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001017
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001018Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001019---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001020
1021By default TLS is disabled.
1022
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001023Enable TLS transport:
1024
1025.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001026
1027 compute:
1028 libvirt:
1029 tls:
1030 enabled: True
1031
1032You able to set custom certificates in pillar:
1033
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001034.. code-block:: yaml
1035
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001036 nova:
1037 compute:
1038 libvirt:
1039 tls:
1040 key: (certificate content)
1041 cert: (certificate content)
1042 cacert: (certificate content)
1043 client:
1044 key: (certificate content)
1045 cert: (certificate content)
1046
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001047Controlling access by `tls_allowed_dn_list`.
1048Enable an access control list of client certificate Distinguished Names (DNs)
1049which can connect to the TLS port on this server. The default is that DNs are
1050not checked. This list may contain wildcards such as
1051"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1052for the format of the wildcards.
1053Note that if this is an empty list, no client can connect.
1054Note also that GnuTLS returns DNs without spaces after commas between
1055the fields (and this is what we check against), but the openssl x509 tool
1056shows spaces.
1057
1058.. code-block:: yaml
1059
1060 nova:
1061 compute:
1062 libvirt:
1063 tls:
1064 tls_allowed_dn_list:
1065 host1:
1066 enabled: true
1067 value: 'C=foo,CN=cmp1'
1068 host2:
1069 enabled: true
1070 value: 'C=foo,CN=cmp2'
1071
1072
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001073You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001074https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001075
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001076Enable transport + authentication for VNC over TLS
1077---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001078# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001079
1080By default communication between nova-novncproxy and qemu service is unsecure.
1081
1082compute:
1083 qemu:
1084 vnc:
1085 tls:
1086 enabled: True
1087
1088controller:
1089 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001090 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001091 tls:
1092 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001093 # This section responsible for communication between nova-novncproxy and qemu service
1094 vencrypt:
1095 tls:
1096 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001097
1098You able to set custom certificates in pillar:
1099
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001100nova:
1101 compute:
1102 qemu:
1103 vnc:
1104 tls:
1105 cacert (certificate content)
1106 cert (certificate content)
1107 key (certificate content)
1108
1109nova:
1110 controller:
1111 novncproxy:
1112 tls:
1113 server:
1114 cert (certificate content)
1115 key (certificate content)
1116 vencrypt:
1117 tls:
1118 cacert (certificate content)
1119 cert (certificate content)
1120 key (certificate content)
1121
1122
1123You can read more about it here:
1124 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1125
1126Enable communication between noVNC proxy and client machine over TLS
1127---------------------
1128
1129By default communication between noVNC proxy and client machine is unsecure.
1130
1131 controller:
1132 novncproxy:
1133 tls:
1134 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001135
1136 nova:
1137 controller:
1138 novncproxy:
1139 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001140 server:
1141 cert (certificate content)
1142 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001143
1144You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001145 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001146
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001147Enable x509 and ssl communication between Nova and Galera cluster.
1148---------------------
1149By default communication between Nova and Galera is unsecure.
1150
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001151nova:
1152 controller:
1153 database:
1154 x509:
1155 enabled: True
1156
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001157You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001158
1159nova:
1160 controller:
1161 database:
1162 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001163 cacert: (certificate content)
1164 cert: (certificate content)
1165 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001166
1167You can read more about it here:
1168 https://docs.openstack.org/security-guide/databases/database-access-control.html
1169
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001170Upgrades
1171========
1172
1173Each openstack formula provide set of phases (logical bloks) that will help to
1174build flexible upgrade orchestration logic for particular components. The list
1175of phases might and theirs descriptions are listed in table below:
1176
1177+-------------------------------+------------------------------------------------------+
1178| State | Description |
1179+===============================+======================================================+
1180| <app>.upgrade.service_running | Ensure that all services for particular application |
1181| | are enabled for autostart and running |
1182+-------------------------------+------------------------------------------------------+
1183| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1184| | disabled for autostart and dead |
1185+-------------------------------+------------------------------------------------------+
1186| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1187| | are installed to latest available version. |
1188| | This will not upgrade data plane packages like qemu |
1189| | and openvswitch as usually minimal required version |
1190| | in openstack services is really old. The data plane |
1191| | packages should be upgraded separately by `apt-get |
1192| | upgrade` or `apt-get dist-upgrade` |
1193| | Applying this state will not autostart service. |
1194+-------------------------------+------------------------------------------------------+
1195| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1196+-------------------------------+------------------------------------------------------+
1197| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1198| | cloud before running upgrade. |
1199| | Only non destructive actions will be applied during |
1200| | this phase. Perform service built in service check |
1201| | like (keystone-manage doctor and nova-status upgrade)|
1202+-------------------------------+------------------------------------------------------+
1203| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1204| | phase resources will be gracefully removed from |
1205| | current node if it is allowed. Services for upgraded |
1206| | application will be set to admin disabled state to |
1207| | make sure node will not participate in resources |
1208| | scheduling. For example on gtw nodes this will set |
1209| | all agents to admin disable state and will move all |
1210| | routers to other agents. |
1211+-------------------------------+------------------------------------------------------+
1212| <app>.upgrade.upgrade | This state will basically upgrade application on |
1213| | particular target. Stop services, render |
1214| | configuration, install new packages, run offline |
1215| | dbsync (for ctl), start services. Data plane should |
1216| | not be affected, only OpenStack python services. |
1217+-------------------------------+------------------------------------------------------+
1218| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1219+-------------------------------+------------------------------------------------------+
1220| <app>.upgrade.post | This phase should be launched only when upgrade of |
1221| | the cloud is completed. Cleanup temporary files, |
1222| | perform other post upgrade tasks. |
1223+-------------------------------+------------------------------------------------------+
1224| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1225| | operations, verify do not have dead network |
1226| | agents/compute services) |
1227+-------------------------------+------------------------------------------------------+
1228
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001229Documentation and Bugs
1230======================
1231
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001232* http://salt-formulas.readthedocs.io/
1233 Learn how to install and update salt-formulas
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001234
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001235* https://github.com/salt-formulas/salt-formula-nova/issues
1236 In the unfortunate event that bugs are discovered, report the issue to the
1237 appropriate issue tracker. Use the Github issue tracker for a specific salt
1238 formula
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001239
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001240* https://launchpad.net/salt-formulas
1241 For feature requests, bug reports, or blueprints affecting the entire
1242 ecosystem, use the Launchpad salt-formulas project
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001243
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001244* https://launchpad.net/~salt-formulas-users
1245 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001246
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001247* https://github.com/salt-formulas/salt-formula-nova
1248 Develop the salt-formulas projects in the master branch and then submit pull
1249 requests against a specific formula
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001250
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001251* #salt-formulas @ irc.freenode.net
1252 Use this IRC channel in case of any questions or feedback which is always
1253 welcome