blob: f3c22f6be262a1ed1cc00cb933d99a90d6a45004 [file] [log] [blame]
Filip Pytloun4a72d792015-10-06 16:28:32 +02001
Aleš Komárek72152852017-04-11 13:48:48 +02002============
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03003Usage
Aleš Komárek72152852017-04-11 13:48:48 +02004============
Filip Pytloun4a72d792015-10-06 16:28:32 +02005
Jakub Pavlikfcf34f82016-05-20 09:35:51 +02006OpenStack Nova provides a cloud computing fabric controller, supporting a wide
7variety of virtualization technologies, including KVM, Xen, LXC, VMware, and
8more. In addition to its native API, it includes compatibility with the
9commonly encountered Amazon EC2 and S3 APIs.
Filip Pytloun4a72d792015-10-06 16:28:32 +020010
Aleš Komárek72152852017-04-11 13:48:48 +020011Sample Pillars
Filip Pytloun4a72d792015-10-06 16:28:32 +020012==============
13
14Controller nodes
15----------------
16
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030017Nova services on the controller node:
Filip Pytloun4a72d792015-10-06 16:28:32 +020018
19.. code-block:: yaml
20
21 nova:
22 controller:
23 version: juno
24 enabled: true
25 security_group: true
Lachlan Evensonb72de502016-01-20 15:34:04 -080026 cpu_allocation_ratio: 8.0
27 ram_allocation_ratio: 1.0
Jiri Konecny9344a372016-03-21 19:25:48 +010028 disk_allocation_ratio: 1.0
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +030029 cross_az_attach: false
Jiri Konecnyb5a80e42016-03-22 11:51:01 +010030 workers: 8
Jakub Pavlik617a8962016-09-04 18:50:06 +020031 report_interval: 60
Michel Nederlof8ff99332017-10-23 14:29:15 +020032 dhcp_domain: novalocal
sgarbuzcc02c7f2018-10-25 14:29:30 +030033 consoleauth:
34 token_ttl: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020035 bind:
36 public_address: 10.0.0.122
37 public_name: openstack.domain.com
38 novncproxy_port: 6080
39 database:
40 engine: mysql
41 host: 127.0.0.1
42 port: 3306
43 name: nova
44 user: nova
45 password: pwd
46 identity:
47 engine: keystone
48 host: 127.0.0.1
49 port: 35357
50 user: nova
51 password: pwd
52 tenant: service
53 message_queue:
54 engine: rabbitmq
55 host: 127.0.0.1
56 port: 5672
57 user: openstack
58 password: pwd
59 virtual_host: '/openstack'
Oleh Hryhorovf5093b82018-10-17 11:16:08 +000060 pci:
61 alias:
62 alias1:
63 device_type: "type-PF"
64 name: "a1"
65 product_id: "154d"
66 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +020067 network:
68 engine: neutron
69 host: 127.0.0.1
70 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020071 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020072 identity:
73 engine: keystone
74 host: 127.0.0.1
75 port: 35357
76 user: neutron
77 password: pwd
78 tenant: service
79 metadata:
80 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010081 audit:
82 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010083 osapi_max_limit: 500
Oleg Iurchenko370c10d2017-10-19 14:03:37 +030084 barbican:
85 enabled: true
Filip Pytloun4a72d792015-10-06 16:28:32 +020086
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030087Nova services from custom package repository:
Filip Pytloun4a72d792015-10-06 16:28:32 +020088
89.. code-block:: yaml
90
91 nova:
92 controller:
93 version: juno
94 source:
95 engine: pkg
96 address: http://...
97 ....
98
OlgaGusarenko9dd01c92018-07-31 00:49:30 +030099Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200100
101.. code-block:: yaml
102
103 nova:
104 controller:
105 ....
106 message_queue:
107 engine: rabbitmq
108 members:
109 - host: 10.0.16.1
110 - host: 10.0.16.2
111 - host: 10.0.16.3
112 user: openstack
113 password: pwd
114 virtual_host: '/openstack'
115 ....
116
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300117Enable auditing filter, i.e: CADF:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100118
119.. code-block:: yaml
120
121 nova:
122 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100123 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100124 enabled: true
125 ....
126 filter_factory: 'keystonemiddleware.audit:filter_factory'
127 map_file: '/etc/pycadf/nova_api_audit_map.conf'
128 ....
129
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300130Enable CORS parameters:
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200131
132.. code-block:: yaml
133
134 nova:
135 controller:
136 cors:
137 allowed_origin: https:localhost.local,http:localhost.local
138 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
139 allow_methods: GET,PUT,POST,DELETE,PATCH
140 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
141 allow_credentials: True
142 max_age: 86400
143
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300144Configuration of the ``policy.json`` file:
Dmitry Ukov3562a082017-05-04 00:00:48 +0400145
146.. code-block:: yaml
147
148 nova:
149 controller:
150 ....
151 policy:
152 context_is_admin: 'role:admin or role:administrator'
153 'compute:create': 'rule:admin_or_owner'
154 # Add key without value to remove line from policy.json
155 'compute:create:attach_network':
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200156
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300157Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300158
159.. code-block:: yaml
160
161 nova:
162 controller:
163 ....
164 barbican:
165 enabled: true
166
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000167Define aliases for PCI devices:
168.. code-block:: yaml
169
170 nova:
171 controller:
172 ...
173 pci:
174 alias:
175 alias1:
176 device_type: "type-PF"
177 name: "a1"
178 product_id: "154d"
179 vendor_id: "8086"
180
Jiri Broulik789179a2018-02-13 16:16:46 +0100181Enable cells update:
182
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300183.. note:: Useful when upgrading Openstack. To update cells to test
184 sync db agains duplicated production database.
Jiri Broulik789179a2018-02-13 16:16:46 +0100185
186.. code-block:: yaml
187
188 nova:
189 controller:
190 update_cells: true
191
Kirill Bespalov64617172017-07-11 14:43:14 +0300192
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300193Configuring TLS communications
194------------------------------
Kirill Bespalov64617172017-07-11 14:43:14 +0300195
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300196.. note:: By default system wide installed CA certs are used,
197 so ``cacert_file`` param is optional, as well as ``cacert``.
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300198
199- **RabbitMQ TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300200
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300201 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300202
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300203 nova:
204 compute:
205 message_queue:
206 port: 5671
207 ssl:
208 enabled: True
209 (optional) cacert: cert body if the cacert_file does not exists
210 (optional) cacert_file: /etc/openstack/rabbitmq-ca.pem
211 (optional) version: TLSv1_2
Kirill Bespalov64617172017-07-11 14:43:14 +0300212
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300213- **MySQL TLS**
Kirill Bespalov64617172017-07-11 14:43:14 +0300214
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300215 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300216
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300217 nova:
218 controller:
219 database:
220 ssl:
221 enabled: True
222 (optional) cacert: cert body if the cacert_file does not exists
223 (optional) cacert_file: /etc/openstack/mysql-ca.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300224
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300225- **Openstack HTTPS API**
226
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300227 Set the ``https`` as protocol at ``nova:compute`` and
228 ``nova:controller`` sections :
Kirill Bespalova0eaca72017-11-20 13:40:42 +0300229
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300230 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300231
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300232 nova:
233 controller :
234 identity:
235 protocol: https
236 (optional) cacert_file: /etc/openstack/proxy.pem
237 network:
238 protocol: https
239 (optional) cacert_file: /etc/openstack/proxy.pem
240 glance:
241 protocol: https
242 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300243
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300244 .. code-block:: yaml
Kirill Bespalov64617172017-07-11 14:43:14 +0300245
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300246 nova:
247 compute:
248 identity:
249 protocol: https
250 (optional) cacert_file: /etc/openstack/proxy.pem
251 network:
252 protocol: https
253 (optional) cacert_file: /etc/openstack/proxy.pem
254 image:
255 protocol: https
256 (optional) cacert_file: /etc/openstack/proxy.pem
257 ironic:
258 protocol: https
259 (optional) cacert_file: /etc/openstack/proxy.pem
Kirill Bespalov64617172017-07-11 14:43:14 +0300260
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300261.. note:: Barbican, Cinder, and placement url endpoints are discovering
262 using service catalog.
Kirill Bespalov64617172017-07-11 14:43:14 +0300263
Filip Pytloun4a72d792015-10-06 16:28:32 +0200264Compute nodes
265-------------
266
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300267Nova controller services on compute node:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200268
269.. code-block:: yaml
270
271 nova:
272 compute:
273 version: juno
274 enabled: true
Dmitry Stremkovskiy2bcba8d2017-07-30 21:43:59 +0300275 cross_az_attach: false
Dmitry Stremkovskiy35e53b72017-07-29 12:50:39 +0300276 disk_cachemodes: network=writeback,block=none
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100277 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200278 aggregates:
279 - hosts_with_fc
280 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200281 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200282 resume_guests_state_on_host_boot: False
Michael Polenchuk159c2542018-06-09 15:31:51 +0400283 preallocate_images: space # Default is 'none'
Dmitry Stremkovskiy8a0ff512017-07-25 20:54:13 +0300284 my_ip: 10.1.0.16
Filip Pytloun4a72d792015-10-06 16:28:32 +0200285 bind:
286 vnc_address: 172.20.0.100
287 vnc_port: 6080
288 vnc_name: openstack.domain.com
289 vnc_protocol: http
290 database:
291 engine: mysql
292 host: 127.0.0.1
293 port: 3306
294 name: nova
295 user: nova
296 password: pwd
297 identity:
298 engine: keystone
299 host: 127.0.0.1
300 port: 35357
301 user: nova
302 password: pwd
303 tenant: service
304 message_queue:
305 engine: rabbitmq
306 host: 127.0.0.1
307 port: 5672
308 user: openstack
309 password: pwd
310 virtual_host: '/openstack'
311 image:
312 engine: glance
313 host: 127.0.0.1
314 port: 9292
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000315 pci:
316 alias:
317 alias1:
318 device_type: "type-PF"
319 name: "a1"
320 product_id: "154d"
321 vendor_id: "8086"
Filip Pytloun4a72d792015-10-06 16:28:32 +0200322 network:
323 engine: neutron
324 host: 127.0.0.1
325 port: 9696
326 identity:
327 engine: keystone
328 host: 127.0.0.1
329 port: 35357
330 user: neutron
331 password: pwd
332 tenant: service
333 qemu:
334 max_files: 4096
335 max_processes: 4096
Dmitry Stremkovskiy96281f52017-07-26 00:39:22 +0300336 host: node-12.domain.tld
Filip Pytloun4a72d792015-10-06 16:28:32 +0200337
Vasyl Saienkocab3a902018-07-12 13:17:17 +0300338Compute with vmware driver. Each vmware cluster requires a separate process of nova-compute.
339Each process should have uniq host identifier. However multiple computes might be running on
340single host. It is not recommended to have multiple computes running on different hosts that
341manage the same vmware cluster. To achive this pacemaker/corosync or keepalived might be used.
342
343.. code-block:: yaml
344
345 nova:
346 compute:
347 compute_driver: vmwareapi.VMwareVCDriver
348 vmware:
349 host_username: vmware
350 host_password: vmware
351 cluster_name: vmware_cluster01
352 host_ip: 1.2.3.4
353
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300354Group and user to be used for QEMU processes run by the system instance:
kkalynovskyif50f0c02017-12-12 17:52:57 +0200355
356.. code-block:: yaml
357
358 nova:
359 compute:
360 enabled: true
361 ...
362 qemu:
363 user: nova
364 group: cinder
365 dynamic_ownership: 1
366
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300367Group membership for user nova (upgrade related):
Dmitry Stremkovskiy3cd6ba82017-07-25 17:15:36 +0300368
369.. code-block:: yaml
370
371 nova:
372 compute:
373 enabled: true
374 ...
375 user:
376 groups:
377 - libvirt
Filip Pytloun4a72d792015-10-06 16:28:32 +0200378
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300379Nova services on compute node with OpenContrail:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200380
381.. code-block:: yaml
382
383 nova:
384 compute:
385 enabled: true
386 ...
387 networking: contrail
388
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000389Nova services on compute node with memcached caching and security strategy:
Filip Pytloun4a72d792015-10-06 16:28:32 +0200390
391.. code-block:: yaml
392
393 nova:
394 compute:
395 enabled: true
396 ...
397 cache:
398 engine: memcached
399 members:
400 - host: 127.0.0.1
401 port: 11211
402 - host: 127.0.0.1
403 port: 11211
Oleksandr Bryndziibb8abfe2018-09-28 22:21:43 +0000404 security:
405 enabled: true
406 strategy: ENCRYPT
407 secret_key: secret
Filip Pytloun4a72d792015-10-06 16:28:32 +0200408
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300409Client-side RabbitMQ HA setup:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200410
411.. code-block:: yaml
412
413 nova:
Kirill Bespalov64617172017-07-11 14:43:14 +0300414 compute:
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200415 ....
416 message_queue:
417 engine: rabbitmq
418 members:
419 - host: 10.0.16.1
420 - host: 10.0.16.2
421 - host: 10.0.16.3
422 user: openstack
423 password: pwd
424 virtual_host: '/openstack'
425 ....
426
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300427Nova with ephemeral configured with Ceph:
maxstack39e6aca2016-05-04 13:50:13 +0000428
429.. code-block:: yaml
430
431 nova:
432 compute:
433 enabled: true
434 ...
435 ceph:
436 ephemeral: yes
437 rbd_pool: nova
438 rbd_user: nova
439 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
Kalynovskyi0bc79692017-07-21 16:22:09 +0300440 ....
maxstack39e6aca2016-05-04 13:50:13 +0000441
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300442Nova with ephemeral configured with LVM:
Kalynovskyi0bc79692017-07-21 16:22:09 +0300443
444.. code-block:: yaml
445
446 nova:
447 compute:
448 enabled: true
449 ...
450 lvm:
451 ephemeral: yes
452 images_volume_group: nova_vg
453
454 linux:
455 storage:
456 lvm:
457 nova_vg:
458 name: nova_vg
459 devices:
460 - /dev/sdf
461 - /dev/sdd
462 - /dev/sdg
463 - /dev/sde
464 - /dev/sdc
465 - /dev/sdj
466 - /dev/sdh
maxstack39e6aca2016-05-04 13:50:13 +0000467
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300468Enable Barbican integration:
Oleg Iurchenko370c10d2017-10-19 14:03:37 +0300469
470.. code-block:: yaml
471
472 nova:
473 compute:
474 ....
475 barbican:
476 enabled: true
477
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000478Define aliases for PCI devices:
479.. code-block:: yaml
480
481 nova:
482 compute:
483 ...
484 pci:
485 alias:
486 alias1:
487 device_type: "type-PF"
488 name: "a1"
489 product_id: "154d"
490 vendor_id: "8086"
491
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300492Nova metadata custom bindings:
Vasyl Saienko2d591282018-02-05 14:19:02 +0200493
494.. code-block:: yaml
495
496 nova:
497 controller:
498 enabled: true
499 ...
500 metadata:
501 bind:
502 address: 1.2.3.4
503 port: 8776
504
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100505Client role
506-----------
507
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300508Nova configured with NFS:
Dmitry Stremkovskiy665c7282017-07-05 17:36:27 +0300509
510.. code-block:: yaml
511
512 nova:
513 compute:
514 instances_path: /mnt/nova/instances
515
516 linux:
517 storage:
518 enabled: true
519 mount:
520 nfs_nova:
521 enabled: true
522 path: ${nova:compute:instances_path}
523 device: 172.31.35.145:/data
524 file_system: nfs
525 opts: rw,vers=3
526
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300527Nova flavors:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100528
529.. code-block:: yaml
530
531 nova:
532 client:
533 enabled: true
534 server:
535 identity:
536 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100537 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100538 flavor_id: 10
539 ram: 4096
540 disk: 10
541 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100542 flavor2:
543 flavor_id: auto
544 ram: 4096
545 disk: 20
546 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100547 identity1:
548 flavor:
549 ...
550
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300551Availability zones:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100552
553.. code-block:: yaml
554
555 nova:
556 client:
557 enabled: true
558 server:
559 identity:
560 availability_zones:
561 - availability_zone_01
562 - availability_zone_02
563
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300564Aggregates:
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200565
566.. code-block:: yaml
567
568 nova:
569 client:
570 enabled: true
571 server:
572 identity:
573 aggregates:
574 - aggregate1
575 - aggregate2
576
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300577Upgrade levels:
Dmitry Stremkovskiy91f45852017-07-18 16:22:31 +0300578
579.. code-block:: yaml
580
581 nova:
582 controller:
583 upgrade_levels:
584 compute: juno
585
586 nova:
587 compute:
588 upgrade_levels:
589 compute: juno
590
Petr Jedinýd855ef22017-03-06 22:24:33 +0100591SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100592------
593
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300594Add ``PciPassthroughFilter`` into scheduler filters and NICs on
595specific compute nodes:
Jakub Pavlik39a05942017-02-13 23:03:08 +0100596
597.. code-block:: yaml
598
599 nova:
600 controller:
601 sriov: true
sandriichenko4fe321d2018-01-22 17:34:06 +0000602 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
Jakub Pavlik39a05942017-02-13 23:03:08 +0100603
604 nova:
605 compute:
606 sriov:
607 nic_one:
608 devname: eth1
609 physical_network: physnet1
610
Oleh Hryhorovf5093b82018-10-17 11:16:08 +0000611.. note:: Parameters located under nova:compute:sriov:<nic_name> are copied to passthrough_whitelist parameter into
612 nova.conf file in appropriate format.
613
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100614CPU pinning & Hugepages
615-----------------------
616
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300617CPU pinning of virtual machine instances to dedicated physical
618CPU cores. Hugepages mount point for libvirt.
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100619
620.. code-block:: yaml
621
622 nova:
623 controller:
sandriichenko4fe321d2018-01-22 17:34:06 +0000624 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100625
626 nova:
627 compute:
628 vcpu_pin_set: 2,3,4,5
629 hugepages:
630 mount_points:
631 - path: /mnt/hugepages_1GB
632 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100633
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200634Custom Scheduler filters
635------------------------
636
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300637If you have a custom filter, that needs to be included in the
638scheduler, then you can include it like so:
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200639
640.. code-block:: yaml
641
642 nova:
643 controller:
644 scheduler_custom_filters:
645 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
646
647 # 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 +0000648 scheduler_default_filters: "DifferentHostFilter,SameHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200649
Michael Polenchuk2bce2cb2018-09-17 16:05:43 +0400650 # Since Queens version a sequence could be used as well:
651 ~scheduler_default_filters:
652 - DifferentHostFilter
653 - SameHostFilter
654 ...
655 - MyCustomFilter
656
657
Michel Nederlofeb566f62017-04-21 15:37:47 +0200658Hardware Trip/Unmap Support
659---------------------------
660
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300661To enable TRIM support for ephemeral images (thru nova managed
662images), libvirt has this option:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200663
664.. code-block:: yaml
665
666 nova:
667 compute:
668 libvirt:
669 hw_disk_discard: unmap
670
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300671To actually utilize this feature, the following metadata must be
672set on the image as well, so the SCSI unmap is supported:
Michel Nederlofeb566f62017-04-21 15:37:47 +0200673
674.. code-block:: bash
675
676 glance image-update --property hw_scsi_model=virtio-scsi <image>
677 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100678
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000679Scheduler Host Manager
680----------------------
681
682Specify a custom host manager.
683
Thom Gerdesec00afd2017-04-07 18:06:59 +0000684libvirt CPU mode
685----------------
686
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300687Allow setting the model of CPU that is exposed to a VM. This
688allows for better support live migration between hypervisors with
689different hardware, among other things. Defaults to host-passthrough.
Jakub Pavlik7046b9c2017-09-19 12:04:19 +0200690
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000691.. code-block:: yaml
692
693 nova:
694 controller:
695 scheduler_host_manager: ironic_host_manager
696
Thom Gerdesec00afd2017-04-07 18:06:59 +0000697 compute:
698 cpu_mode: host-model
699
Dzmitry Stremkouski7da9bf12018-04-25 22:30:37 +0200700Nova compute cpu model
701----------------------
702
703.. code-block:: yaml
704
705 nova:
706 compute:
707 cpu_mode: custom
708 libvirt:
709 cpu_model: IvyBridge
710
711
Michel Nederloff7eefb22017-07-10 11:14:33 +0200712Nova compute workarounds
713------------------------
714
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300715Live snapshotting is disabled by default in nova. To enable
716this, it needs a manual switch.
Michel Nederloff7eefb22017-07-10 11:14:33 +0200717
718From manual:
719
720.. code-block:: yaml
721
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300722 When using libvirt 1.2.2 live snapshots fail intermittently under load
723 (likely related to concurrent libvirt/qemu operations). This config
724 option provides a mechanism to disable live snapshot, in favor of cold
725 snapshot, while this is resolved. Cold snapshot causes an instance
726 outage while the guest is going through the snapshotting process.
727
728 For more information, refer to the bug report:
729
730 https://bugs.launchpad.net/nova/+bug/1334398
Michel Nederloff7eefb22017-07-10 11:14:33 +0200731
732Configurable pillar data:
733
734.. code-block:: yaml
735
736 nova:
737 compute:
Michel Nederlofe322ebb2017-07-10 12:29:21 +0200738 workaround:
Michel Nederloff7eefb22017-07-10 11:14:33 +0200739 disable_libvirt_livesnapshot: False
740
Michel Nederlofb51a5142017-06-27 08:31:35 +0200741Config drive options
742--------------------
743
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300744See example below on how to configure the options for the
745config drive:
Michel Nederlofb51a5142017-06-27 08:31:35 +0200746
747.. code-block:: yaml
748
749 nova:
750 compute:
751 config_drive:
752 forced: True # Default: True
753 cdrom: True # Default: False
754 format: iso9660 # Default: vfat
755 inject_password: False # Default: False
756
Michel Nederloff81919b2017-11-20 09:37:07 +0100757Number of concurrent live migrates
758----------------------------------
759
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300760Default is to have no concurrent live migrations (so 1
761live-migration at a time).
Michel Nederloff81919b2017-11-20 09:37:07 +0100762
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300763Excerpt from config options page
764https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Michel Nederloff81919b2017-11-20 09:37:07 +0100765
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300766Maximum number of live migrations to run concurrently. This limit is
767enforced to avoid outbound live migrations overwhelming the host/network
768and causing failures. It is not recommended that you change this unless
769you are very sure that doing so is safe and stable in your environment.
Michel Nederloff81919b2017-11-20 09:37:07 +0100770
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300771Possible values:
Michel Nederloff81919b2017-11-20 09:37:07 +0100772
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300773- 0 : treated as unlimited.
774- Negative value defaults to 0.
775- Any positive integer representing maximum number of live migrations
776 to run concurrently.
Michel Nederloff81919b2017-11-20 09:37:07 +0100777
778To configure this option:
779
780.. code-block:: yaml
781
782 nova:
783 compute:
784 max_concurrent_live_migrations: 1 # (1 is the default)
785
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300786Live migration with auto converge
787----------------------------------
788
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300789Auto converge throttles down CPU if a progress of on-going live
790migration is slow
791https://docs.openstack.org/ocata/config-reference/compute/config-options.html:
Sergio Lystopad9d31cba2018-05-15 11:29:11 +0300792
793.. code-block:: yaml
794
795 nova:
796 compute:
797 libvirt:
798 live_migration_permit_auto_converge: False # (False is the default)
799
800.. code-block:: yaml
801
802 nova:
803 controller:
804 libvirt:
805 live_migration_permit_auto_converge: False # (False is the default)
806
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400807Enhanced logging with logging.conf
808----------------------------------
809
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300810By default ``logging.conf`` is disabled.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400811
812That is possible to enable per-binary logging.conf with new variables:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400813
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300814* ``openstack_log_appender``
815 Set to true to enable log_config_append for all OpenStack services
816
817* ``openstack_fluentd_handler_enabled``
818 Set to true to enable FluentHandler for all Openstack services
819
820* ``openstack_ossyslog_handler_enabled``
821 Set to true to enable OSSysLogHandler for all Openstack services
822
823Only ``WatchedFileHandler``, ``OSSysLogHandler``, and ``FluentHandler``
824are available.
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400825
Dmitry Kalashnik8da249c2018-01-16 17:58:00 +0400826Also it is possible to configure this with pillar:
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400827
828.. code-block:: yaml
829
830 nova:
831 controller:
832 logging:
833 log_appender: true
834 log_handlers:
835 watchedfile:
836 enabled: true
837 fluentd:
838 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200839 ossyslog:
840 enabled: true
Dmitry Kalashnike58fe082017-12-01 16:31:14 +0400841
842 compute:
843 logging:
844 log_appender: true
845 log_handlers:
846 watchedfile:
847 enabled: true
848 fluentd:
849 enabled: true
Oleksii Chupryn99e35032018-02-06 01:59:40 +0200850 ossyslog:
851 enabled: true
Thom Gerdesf582f1e2017-05-02 18:05:50 +0000852
Vasyl Saienko7243a952018-05-11 21:26:54 +0300853The log level might be configured per logger by using the
854following pillar structure:
855
856.. code-block:: yaml
857
858 nova:
859 compute:
860 logging:
861 loggers:
862 <logger_name>:
863 level: WARNING
864
865 nova:
866 compute:
867 logging:
868 loggers:
869 <logger_name>:
870 level: WARNING
871
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000872Configure syslog parameters for libvirtd
873----------------------------------------
874
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300875To configure syslog parameters for libvirtd the below pillar
876structure should be used with values which are supported
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000877by libvirtd. These values might be known from the documentation.
878
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300879.. code-block:: yaml
880
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000881 nova:
882 compute:
883 libvirt:
884 logging:
885 level: 3
886 filters: '3:remote 4:event'
887 outputs: '3:syslog:libvirtd'
888 buffer_size: 64
889
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300890Logging controls:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000891
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300892Logging level: 4 errors, 3 warnings, 2 information, 1 debug
893basically 1 will log everything possible ``log_level = 3``
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000894
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300895Logging filters:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000896
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300897A filter allows to select a different logging level for a given category
898of logs.
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000899
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300900The format for a filter is one of:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000901
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300902* ``x:name``
903* ``x:+name``
904 where name is a string which is matched against source file name,
905 e.g., ``remote``, ``qemu``, or ``util/json``, the optional ``+`` prefix
906 tells libvirt to log stack trace for each message matching name,
907 and x is the minimal level where matching messages should be logged:
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000908
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300909* ``1: DEBUG``
910* ``2: INFO``
911* ``3: WARNING``
912* ``4: ERROR``
913
914Multiple filter can be defined in a single @filters, they just
915need to be separated by spaces.
916
917For example, to only get warning or errors from the remote layer
918and only errors from the event layer: ``log_filters="3:remote 4:event``
919
920Logging outputs:
921
922An output is one of the places to save logging information
923The format for an output can be:
924
925* ``x:stderr``
926 Output goes to stderr
927
928* ``x:syslog:name``
929 Use syslog for the output and use the given name as the ident
930
931* ``x:file:file_path``
932 output to a file, with the given filepath
933
934 In all case the x prefix is the minimal level, acting as a filter
935
936* ``1: DEBUG``
937* ``2: INFO``
938* ``3: WARNING``
939* ``4: ERROR``
940
941Multiple output can be defined, they just need to be separated by spaces.
942For example, to log all warnings and errors to syslog under the libvirt
943dident: ``log_outputs="3:syslog:libvirtd``
944
945Log debug buffer size: default 64
946The daemon keeps an internal debug log buffer which will be dumped
947in case of crash or upon receiving a ``SIGUSR2`` signal. This setting
948allows to override the default buffer size in kilobytes.
949If value is ``0`` or less the debug log buffer is deactivated
950``log_buffer_size = 64``
951
952To configure the logging parameters for QEMU, the below pillar
953structure and logging parameters should be used:
954
955.. code-block:: yaml
956
957 nova:
958 compute:
959 qemu:
960 logging:
961 handler: logd
962 virtlog:
963 enabled: true
964 level: 4
965 filters: '3:remote 3:event'
966 outputs: '4:syslog:virtlogd'
967 max_clients: 512
968 max_size: 2097100
969 max_backups: 2
Oleh Hryhorove38525d2018-05-15 08:58:59 +0000970
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300971Inject password to VM
972---------------------
973
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300974By default nova blocks up any inject to VM because
975``inject_partition`` param is equal to ``-2``.
976If you want to inject password to VM, you will need to
977define ``inject_partition`` greater or equal to ``-1`` and
978define ``inject_password`` to ``True``
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300979
980For example:
981
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300982.. code-block:: yaml
983
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +0300984 nova:
985 compute:
986 inject_partition: '-1'
987 inject_password: True
988
OlgaGusarenko9dd01c92018-07-31 00:49:30 +0300989Allow the injection of an admin password for instance only at
990``create`` and ``rebuild`` process.
991
992There is no agent needed within the image to do this. If *libguestfs* is
993available on the host, it will be used. Otherwise *nbd* is used. The file
994system of the image will be mounted and the admin password, which is provided
995in the REST API call will be injected as password for the root user. If no
996root user is available, the instance won't be launched and an error is thrown.
997Be aware that the injection is *not* possible when the instance gets launched
998from a volume.
999
1000Possible values:
1001
1002* ``True``
1003 Allows the injection
1004
1005* ``False`` (default)
1006 Disallows the injection. Any via the REST API provided
1007 admin password will be silently ignored.
1008
1009Related options:
1010
1011* ``inject_partition``
1012 Decides about the discovery and usage of the file system.
1013 It also can disable the injection at all.
1014 (boolean value)
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001015
1016You can read more about injecting the administrator password here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001017https://docs.openstack.org/nova/queens/admin/admin-password-injection.html
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001018
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001019Enable libvirt control channel over TLS
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001020---------------------------------------
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001021
1022By default TLS is disabled.
1023
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001024Enable TLS transport:
1025
1026.. code-block:: yaml
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001027
1028 compute:
1029 libvirt:
1030 tls:
1031 enabled: True
1032
1033You able to set custom certificates in pillar:
1034
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001035.. code-block:: yaml
1036
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001037 nova:
1038 compute:
1039 libvirt:
1040 tls:
1041 key: (certificate content)
1042 cert: (certificate content)
1043 cacert: (certificate content)
1044 client:
1045 key: (certificate content)
1046 cert: (certificate content)
1047
Vasyl Saienko11ac9732018-10-02 17:04:33 +00001048Controlling access by `tls_allowed_dn_list`.
1049Enable an access control list of client certificate Distinguished Names (DNs)
1050which can connect to the TLS port on this server. The default is that DNs are
1051not checked. This list may contain wildcards such as
1052"C=GB,ST=London,L=London,O=Libvirt Project,CN=*" See the POSIX fnmatch function
1053for the format of the wildcards.
1054Note that if this is an empty list, no client can connect.
1055Note also that GnuTLS returns DNs without spaces after commas between
1056the fields (and this is what we check against), but the openssl x509 tool
1057shows spaces.
1058
1059.. code-block:: yaml
1060
1061 nova:
1062 compute:
1063 libvirt:
1064 tls:
1065 tls_allowed_dn_list:
1066 host1:
1067 enabled: true
1068 value: 'C=foo,CN=cmp1'
1069 host2:
1070 enabled: true
1071 value: 'C=foo,CN=cmp2'
1072
1073
Oleksandr Shyshko1c020d12018-05-24 12:47:08 +03001074You can read more about live migration over TLS here:
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001075https://wiki.libvirt.org/page/TLSCreateServerCerts
Oleksandr Shyshko981b4fa2018-05-02 15:39:30 +03001076
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001077Enable transport + authentication for VNC over TLS
1078---------------------
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001079# Only for Queens. Communication between noVNC proxy service and QEMU
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001080
1081By default communication between nova-novncproxy and qemu service is unsecure.
1082
1083compute:
1084 qemu:
1085 vnc:
1086 tls:
1087 enabled: True
1088
1089controller:
1090 novncproxy:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001091 # This section responsible for communication between noVNC proxy and client machine
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001092 tls:
1093 enabled: True
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001094 # This section responsible for communication between nova-novncproxy and qemu service
1095 vencrypt:
1096 tls:
1097 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001098
1099You able to set custom certificates in pillar:
1100
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001101nova:
1102 compute:
1103 qemu:
1104 vnc:
1105 tls:
1106 cacert (certificate content)
1107 cert (certificate content)
1108 key (certificate content)
1109
1110nova:
1111 controller:
1112 novncproxy:
1113 tls:
1114 server:
1115 cert (certificate content)
1116 key (certificate content)
1117 vencrypt:
1118 tls:
1119 cacert (certificate content)
1120 cert (certificate content)
1121 key (certificate content)
1122
1123
1124You can read more about it here:
1125 https://docs.openstack.org/nova/queens/admin/remote-console-access.html
1126
1127Enable communication between noVNC proxy and client machine over TLS
1128---------------------
1129
1130By default communication between noVNC proxy and client machine is unsecure.
1131
1132 controller:
1133 novncproxy:
1134 tls:
1135 enabled: True
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001136
1137 nova:
1138 controller:
1139 novncproxy:
1140 tls:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001141 server:
1142 cert (certificate content)
1143 key (certificate content)
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001144
1145You can read more about it here:
Oleksandr Shyshkod8337cf2018-07-11 17:55:58 +03001146 https://docs.openstack.org/mitaka/config-reference/dashboard/configure.html
Oleksandr Shyshko1195fca2018-07-09 18:22:59 +03001147
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001148Enable x509 and ssl communication between Nova and Galera cluster.
1149---------------------
1150By default communication between Nova and Galera is unsecure.
1151
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001152nova:
1153 controller:
1154 database:
1155 x509:
1156 enabled: True
1157
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001158You able to set custom certificates in pillar:
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001159
1160nova:
1161 controller:
1162 database:
1163 x509:
Oleksandr Shyshkocbe87352018-09-07 13:42:57 +03001164 cacert: (certificate content)
1165 cert: (certificate content)
1166 key: (certificate content)
Oleksandr Shyshko55eeac72018-08-03 18:23:28 +03001167
1168You can read more about it here:
1169 https://docs.openstack.org/security-guide/databases/database-access-control.html
1170
Oleh Hryhorov63ee8452018-08-14 09:16:02 +00001171Upgrades
1172========
1173
1174Each openstack formula provide set of phases (logical bloks) that will help to
1175build flexible upgrade orchestration logic for particular components. The list
1176of phases might and theirs descriptions are listed in table below:
1177
1178+-------------------------------+------------------------------------------------------+
1179| State | Description |
1180+===============================+======================================================+
1181| <app>.upgrade.service_running | Ensure that all services for particular application |
1182| | are enabled for autostart and running |
1183+-------------------------------+------------------------------------------------------+
1184| <app>.upgrade.service_stopped | Ensure that all services for particular application |
1185| | disabled for autostart and dead |
1186+-------------------------------+------------------------------------------------------+
1187| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
1188| | are installed to latest available version. |
1189| | This will not upgrade data plane packages like qemu |
1190| | and openvswitch as usually minimal required version |
1191| | in openstack services is really old. The data plane |
1192| | packages should be upgraded separately by `apt-get |
1193| | upgrade` or `apt-get dist-upgrade` |
1194| | Applying this state will not autostart service. |
1195+-------------------------------+------------------------------------------------------+
1196| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
1197+-------------------------------+------------------------------------------------------+
1198| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
1199| | cloud before running upgrade. |
1200| | Only non destructive actions will be applied during |
1201| | this phase. Perform service built in service check |
1202| | like (keystone-manage doctor and nova-status upgrade)|
1203+-------------------------------+------------------------------------------------------+
1204| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
1205| | phase resources will be gracefully removed from |
1206| | current node if it is allowed. Services for upgraded |
1207| | application will be set to admin disabled state to |
1208| | make sure node will not participate in resources |
1209| | scheduling. For example on gtw nodes this will set |
1210| | all agents to admin disable state and will move all |
1211| | routers to other agents. |
1212+-------------------------------+------------------------------------------------------+
1213| <app>.upgrade.upgrade | This state will basically upgrade application on |
1214| | particular target. Stop services, render |
1215| | configuration, install new packages, run offline |
1216| | dbsync (for ctl), start services. Data plane should |
1217| | not be affected, only OpenStack python services. |
1218+-------------------------------+------------------------------------------------------+
1219| <app>.upgrade.upgrade.post | Add services back to scheduling. |
1220+-------------------------------+------------------------------------------------------+
1221| <app>.upgrade.post | This phase should be launched only when upgrade of |
1222| | the cloud is completed. Cleanup temporary files, |
1223| | perform other post upgrade tasks. |
1224+-------------------------------+------------------------------------------------------+
1225| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
1226| | operations, verify do not have dead network |
1227| | agents/compute services) |
1228+-------------------------------+------------------------------------------------------+
1229
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001230Documentation and Bugs
1231======================
1232
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001233* http://salt-formulas.readthedocs.io/
1234 Learn how to install and update salt-formulas
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001235
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001236* https://github.com/salt-formulas/salt-formula-nova/issues
1237 In the unfortunate event that bugs are discovered, report the issue to the
1238 appropriate issue tracker. Use the Github issue tracker for a specific salt
1239 formula
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001240
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001241* https://launchpad.net/salt-formulas
1242 For feature requests, bug reports, or blueprints affecting the entire
1243 ecosystem, use the Launchpad salt-formulas project
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001244
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001245* https://launchpad.net/~salt-formulas-users
1246 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001247
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001248* https://github.com/salt-formulas/salt-formula-nova
1249 Develop the salt-formulas projects in the master branch and then submit pull
1250 requests against a specific formula
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +01001251
OlgaGusarenko9dd01c92018-07-31 00:49:30 +03001252* #salt-formulas @ irc.freenode.net
1253 Use this IRC channel in case of any questions or feedback which is always
1254 welcome