# yoga ############################################################################### # [ WARNING ] # Configuration file maintained by Juju. Local changes may be overwritten. {% if restart_trigger -%} # restart trigger: {{ restart_trigger }} {% endif -%} ############################################################################### [DEFAULT] verbose={{ verbose }} debug={{ debug }} dhcpbridge_flagfile=/etc/nova/nova.conf dhcpbridge=/usr/bin/nova-dhcpbridge logdir=/var/log/nova state_path=/var/lib/nova force_dhcp_release=True use_syslog = {{ use_syslog }} ec2_private_dns_show_ip=True enabled_apis=osapi_compute,metadata my_ip = {{ host_ip }} force_raw_images = {{ force_raw_images }} {% if block_device_allocate_retries -%} block_device_allocate_retries = {{ block_device_allocate_retries }} {% endif -%} {% if block_device_allocate_retries_interval -%} block_device_allocate_retries_interval = {{ block_device_allocate_retries_interval }} {% endif -%} {% if use_fqdn_hint and host_fqdn -%} host = {{ host_fqdn }} {% endif -%} {% if debug -%} default_log_levels = "amqp=WARN, amqplib=WARN, boto=WARN, qpid=WARN, sqlalchemy=WARN, suds=INFO, oslo.messaging=INFO, oslo_messaging=DEBUG, iso8601=WARN, requests.packages.urllib3.connectionpool=WARN, urllib3.connectionpool=WARN, websocket=WARN, requests.packages.urllib3.util.retry=WARN, urllib3.util.retry=WARN, keystonemiddleware=WARN, routes.middleware=WARN, stevedore=WARN, taskflow=WARN, keystoneauth=WARN, oslo.cache=INFO, dogpile.core.dogpile=INFO, glanceclient=WARN, oslo.privsep.daemon=INFO" {% endif -%} {% if transport_url %} transport_url = {{ transport_url }} {% endif %} {% if dns_domain -%} # Per LP#1805645, dhcp_domain needs to be configured for nova-metadata-api # It gets this information from neutron. dhcp_domain = {{ dns_domain }} {% endif -%} {% if arch == 'aarch64' -%} libvirt_use_virtio_for_bridges=False libvirt_disk_prefix=vd {% endif -%} {% if neutron_plugin and neutron_plugin in ('ovs', 'midonet') -%} libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver {% if neutron_security_groups -%} security_group_api = neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver {% endif -%} {% endif -%} {% if neutron_plugin and neutron_plugin == 'vsp' -%} network_api_class=nova.network.neutronv2.api.API libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver neutron_ovs_bridge=alubr0 security_group_api=neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver {% endif -%} {% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%} libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver security_group_api = neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver {% endif -%} {% if neutron_plugin and neutron_plugin == 'Calico' -%} security_group_api = neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver {% endif -%} {% if neutron_plugin and neutron_plugin == 'plumgrid' -%} security_group_api=neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver {% endif -%} {% if network_manager != 'neutron' and network_manager_config -%} {% for key, value in network_manager_config.items() -%} {{ key }} = {{ value }} {% endfor -%} {% endif -%} {% if network_manager == 'neutron' -%} network_api_class = nova.network.neutronv2.api.API use_neutron = True {% else -%} network_manager = nova.network.manager.FlatDHCPManager {% endif -%} {% if network_device_mtu -%} network_device_mtu = {{ network_device_mtu }} {% endif -%} {% if volume_service -%} volume_api_class = nova.volume.cinder.API {% endif -%} {% if user_config_flags -%} {% for key, value in user_config_flags.items() -%} {{ key }} = {{ value }} {% endfor -%} {% endif -%} {% if instances_path -%} instances_path = {{ instances_path }} {% endif -%} {% if sections and 'DEFAULT' in sections -%} {% for key, value in sections['DEFAULT'] -%} {{ key }} = {{ value }} {% endfor -%} {% endif -%} {% if vcpu_pin_set -%} vcpu_pin_set = {{ vcpu_pin_set }} {% endif -%} reserved_host_memory_mb = {{ reserved_host_memory }} reserved_host_disk_mb = {{ reserved_host_disk }} {% if reserved_huge_pages -%} {% for value in reserved_huge_pages -%} reserved_huge_pages = {{ value }} {% endfor -%} {% endif -%} {% include "section-zeromq" %} {% if default_availability_zone -%} default_availability_zone = {{ default_availability_zone }} {% endif -%} {% if resume_guests_state_on_host_boot -%} resume_guests_state_on_host_boot = {{ resume_guests_state_on_host_boot }} {% endif -%} metadata_workers = {{ workers }} {% if initial_cpu_allocation_ratio -%} initial_cpu_allocation_ratio = {{ initial_cpu_allocation_ratio }} {% endif -%} {% if initial_ram_allocation_ratio -%} initial_ram_allocation_ratio = {{ initial_ram_allocation_ratio }} {% endif -%} {% if initial_disk_allocation_ratio -%} initial_disk_allocation_ratio = {{ initial_disk_allocation_ratio }} {% endif -%} {% if cpu_allocation_ratio -%} cpu_allocation_ratio = {{ cpu_allocation_ratio }} {% endif -%} {% if ram_allocation_ratio -%} ram_allocation_ratio = {{ ram_allocation_ratio }} {% endif -%} {% if disk_allocation_ratio -%} disk_allocation_ratio = {{ disk_allocation_ratio }} {% endif -%} {% if allow_resize_to_same_host -%} allow_resize_to_same_host = {{ allow_resize_to_same_host }} {% endif -%} [pci] {% if pci_passthrough_whitelist -%} passthrough_whitelist = {{ pci_passthrough_whitelist }} {% endif -%} {% if pci_alias %} alias = {{ pci_alias }} {% endif %} {% for alias in pci_aliases -%} alias = {{ alias }} {% endfor -%} {% if network_manager == 'neutron' and network_manager_config -%} [neutron] url = {{ network_manager_config.neutron_url }} {% if region -%} region_name = {{ region }} {% endif -%} {% if network_manager_config.keystone_host or auth_host -%} {% if neutron_plugin and neutron_plugin == 'vsp' -%} ovs_bridge = alubr0 {% endif -%} {% if auth_host -%} auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} auth_type = password {% if admin_domain_name -%} project_domain_name = {{ admin_domain_name }} user_domain_name = {{ admin_domain_name }} {% else -%} project_domain_name = default user_domain_name = default {% endif -%} project_name = {{ admin_tenant_name }} username = {{ admin_user }} password = {{ admin_password }} signing_dir = {{ signing_dir }} {% endif -%} {% if metadata_shared_secret -%} metadata_proxy_shared_secret = {{ metadata_shared_secret }} service_metadata_proxy=True {% endif -%} {% endif -%} {% if network_manager_config.neutron_physnets -%} physnets = {{ network_manager_config.neutron_physnets.keys()|join(',') }} {% for key, value in network_manager_config.neutron_physnets.items() -%} [neutron_physnets_{{ key }}] numa_nodes = {{ value }} {% endfor -%} {% endif -%} {% if network_manager_config.neutron_tunnel -%} [neutron_tunnel] numa_nodes = {{ network_manager_config.neutron_tunnel }} {% endif -%} {% endif -%} {% include "section-keystone-authtoken-mitaka" %} {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} {% endif -%} [api] auth_strategy=keystone {% if vendor_data or vendor_data_url -%} vendordata_providers = {{ vendordata_providers }} {% if vendor_data -%} vendordata_jsonfile_path = /etc/nova/vendor_data.json {% endif -%} {% if vendor_data_url -%} vendordata_dynamic_targets = {{ vendor_data_url }} {% endif -%} {% endif -%} {% if console_access_protocol == 'spice' -%} [spice] agent_enabled = {{ spice_agent_enabled }} enabled = True html5proxy_base_url = {{ spice_proxy_address }} keymap = {{ console_keymap }} server_listen = {{ console_listen_addr }} server_proxyclient_address = {{ console_listen_addr }} {% endif -%} [libvirt] inject_key = false inject_password = {{ inject_password }} inject_partition = {{ inject_partition }} {% if cpu_mode -%} cpu_mode = {{ cpu_mode }} {% endif -%} {% if cpu_model -%} cpu_model = {{ cpu_model }} {% endif -%} {% if cpu_model_extra_flags %} cpu_model_extra_flags = {{ cpu_model_extra_flags }} {% endif %} {% if libvirt_images_type -%} images_type = {{ libvirt_images_type }} {% endif -%} {% if libvirt_images_type and rbd_pool -%} images_rbd_pool = {{ rbd_pool }} images_rbd_ceph_conf = {{ libvirt_rbd_images_ceph_conf }} {% endif -%} rbd_user = {{ rbd_user }} rbd_secret_uuid = {{ rbd_secret_uuid }} {% if live_migration_scheme -%} live_migration_scheme = {{ live_migration_scheme }} {% endif -%} {% if live_migration_inbound_addr -%} live_migration_inbound_addr = {{ live_migration_inbound_addr }} {% endif -%} {% if live_migration_completion_timeout -%} live_migration_completion_timeout = {{ live_migration_completion_timeout }} {% endif -%} {% if live_migration_downtime -%} live_migration_downtime = {{ live_migration_downtime }} {% endif -%} {% if live_migration_downtime_steps -%} live_migration_downtime_steps = {{ live_migration_downtime_steps }} {% endif -%} {% if live_migration_downtime_delay -%} live_migration_downtime_delay = {{ live_migration_downtime_delay }} {% endif -%} {% if live_migration_permit_post_copy -%} live_migration_permit_post_copy = {{ live_migration_permit_post_copy }} live_migration_timeout_action = force_complete {% endif -%} {% if live_migration_permit_auto_converge -%} live_migration_permit_auto_converge = {{ live_migration_permit_auto_converge }} {% endif -%} {% if disk_cachemodes -%} disk_cachemodes = {{ disk_cachemodes }} {% endif %} # Disable tunnelled migration so that selective # live block migration can be supported. live_migration_tunnelled = False {% if use_multipath -%} volume_use_multipath = {{ use_multipath }} {% endif %} {% if default_ephemeral_format -%} default_ephemeral_format = {{ default_ephemeral_format }} {% endif %} hw_disk_discard = unmap {% if virtio_net_tx_queue_size -%} tx_queue_size = {{ virtio_net_tx_queue_size }} {% endif %} {% if virtio_net_rx_queue_size -%} rx_queue_size = {{ virtio_net_rx_queue_size }} {% endif %} {% if num_pcie_ports -%} num_pcie_ports = {{ num_pcie_ports }} {% endif %} {% if virt_type == 'lxd' -%} [lxd] {% if enable_live_migration -%} allow_live_migration = True {% endif -%} {% if storage_pool -%} pool = {{ storage_pool }} {% endif -%} {% endif -%} {% include "parts/section-database" %} {% include "section-oslo-messaging-rabbit" %} {% include "section-oslo-notifications" %} {% include "parts/section-cinder" %} [oslo_concurrency] lock_path=/var/lock/nova [workarounds] disable_libvirt_livesnapshot = False {% include "parts/section-ephemeral" %} {% include "parts/section-serial-console" %} {% include "parts/section-placement" %} {% include "parts/section-ironic" %} [compute] {% if cpu_shared_set -%} cpu_shared_set = {{ cpu_shared_set }} {% endif -%} {% if cpu_dedicated_set -%} cpu_dedicated_set = {{ cpu_dedicated_set }} {% endif -%} [vnc] {% if console_vnc_type -%} vnc_enabled = True novnc_enabled = True vnc_keymap = {{ console_keymap }} server_listen = {{ console_listen_addr }} server_proxyclient_address = {{ console_listen_addr }} {% if console_access_protocol == 'novnc' or console_access_protocol == 'vnc' -%} novncproxy_base_url = {{ novnc_proxy_address }} {% endif -%} {% if console_access_protocol == 'xvpvnc' or console_access_protocol == 'vnc' -%} xvpvncproxy_port = {{ xvpvnc_proxy_port }} xvpvncproxy_host = {{ xvpvnc_proxy_host }} xvpvncproxy_base_url = {{ xvpvnc_proxy_address }} {% endif -%} {% else -%} vnc_enabled = False novnc_enabled = False {% endif -%} [wsgi] api_paste_config=/etc/nova/api-paste.ini