368 lines
13 KiB
Django/Jinja
368 lines
13 KiB
Django/Jinja
# {{ ansible_managed }}
|
|
|
|
[DEFAULT]
|
|
# Disable stderr logging
|
|
use_stderr = False
|
|
# Logs / State
|
|
debug = {{ debug }}
|
|
fatal_deprecations = {{ nova_fatal_deprecations }}
|
|
log_dir = {{ nova_log_dir }}
|
|
state_path = {{ nova_system_home_folder }}
|
|
rootwrap_config = /etc/nova/rootwrap.conf
|
|
service_down_time = 120
|
|
{% if nova_default_schedule_zone is defined %}
|
|
default_schedule_zone = {{ nova_default_schedule_zone }}
|
|
{% endif %}
|
|
|
|
# Scheduler
|
|
cpu_allocation_ratio = {{ nova_cpu_allocation_ratio }}
|
|
disk_allocation_ratio = {{ nova_disk_allocation_ratio }}
|
|
ram_allocation_ratio = {{ nova_ram_allocation_ratio }}
|
|
reserved_host_disk_mb = {{ nova_reserved_host_disk_mb }}
|
|
reserved_host_memory_mb = {{ nova_reserved_host_memory_mb }}
|
|
|
|
# Compute
|
|
compute_driver = {{ nova_compute_driver }}
|
|
instance_name_template = instance-%08x
|
|
instances_path = {{ nova_system_home_folder }}/instances
|
|
allow_resize_to_same_host = True
|
|
image_cache_manager_interval = {{ nova_image_cache_manager_interval }}
|
|
resume_guests_state_on_host_boot = {{ nova_resume_guests_state_on_host_boot }}
|
|
|
|
{% if nova_console_user_ssl_cert is defined and nova_console_user_ssl_key is defined and ( nova_services['nova-novncproxy']['group'] in group_names or nova_services['nova-spicehtml5proxy']['group'] in group_names or nova_services['nova-serialconsole-proxy']['group'] in group_names ) %}
|
|
# Console SSL keys
|
|
ssl_only = true
|
|
cert = {{ nova_console_ssl_cert }}
|
|
key = {{ nova_console_ssl_key }}
|
|
{% endif %}
|
|
|
|
# Api's
|
|
enabled_apis = {{ nova_enabled_apis }}
|
|
osapi_compute_workers = {{ nova_osapi_compute_workers | default(nova_api_threads) }}
|
|
|
|
# Rpc all
|
|
transport_url = {{ nova_oslomsg_rpc_transport }}://{% for host in nova_oslomsg_rpc_servers.split(',') %}{{ nova_oslomsg_rpc_userid }}:{{ nova_oslomsg_rpc_password }}@{{ host }}:{{ nova_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ nova_oslomsg_rpc_vhost }}{% if nova_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
|
|
|
|
executor_thread_pool_size = {{ nova_rpc_thread_pool_size }}
|
|
rpc_response_timeout = {{ nova_rpc_response_timeout }}
|
|
|
|
# Metadata
|
|
metadata_workers = {{ nova_metadata_workers | default(nova_api_threads) }}
|
|
|
|
# Network
|
|
my_ip = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
|
|
|
## Vif
|
|
{% if nova_virt_type in ['kvm', 'lxd', 'qemu', 'xen'] %}
|
|
libvirt_vif_type = ethernet
|
|
{% endif %}
|
|
|
|
# Hypervisor
|
|
default_ephemeral_format = ext4
|
|
|
|
{% if nova_virt_type == 'powervm' %}
|
|
injected_network_template = /etc/nova/nova-interfaces-template
|
|
{% endif %}
|
|
|
|
# Configdrive
|
|
force_config_drive = {{ nova_force_config_drive }}
|
|
|
|
# Ceilometer notification configurations
|
|
{% if nova_ceilometer_enabled %}
|
|
instance_usage_audit = True
|
|
instance_usage_audit_period = hour
|
|
{% endif %}
|
|
|
|
# Notifications
|
|
[oslo_messaging_notifications]
|
|
{% set notification_topics = ['notifications'] %}
|
|
{% if nova_designate_enabled %}
|
|
{% set _ = notification_topics.append(nova_notifications_designate) %}
|
|
{% endif %}
|
|
topics = {{ notification_topics | join(',') }}
|
|
driver = messagingv2
|
|
transport_url = {{ nova_oslomsg_notify_transport }}://{% for host in nova_oslomsg_notify_servers.split(',') %}{{ nova_oslomsg_notify_userid }}:{{ nova_oslomsg_notify_password }}@{{ host }}:{{ nova_oslomsg_notify_port }}{% if not loop.last %},{% else %}/{{ nova_oslomsg_notify_vhost }}{% if nova_oslomsg_notify_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
|
|
|
|
|
|
# Cache
|
|
[cache]
|
|
enabled = true
|
|
backend = oslo_cache.memcache_pool
|
|
memcache_servers = {{ memcached_servers }}
|
|
|
|
|
|
# Cinder
|
|
[cinder]
|
|
catalog_info = volumev3:cinderv3:internalURL
|
|
cross_az_attach = {{ nova_cross_az_attach }}
|
|
os_region_name = {{ nova_service_region }}
|
|
|
|
{% if nova_console_type == 'spice' %}
|
|
[spice]
|
|
agent_enabled = {{ nova_console_agent_enabled }}
|
|
enabled = {{ nova_console_agent_enabled }}
|
|
# Console Url and binds
|
|
html5proxy_base_url = {{ nova_spice_html5proxy_base_url }}
|
|
server_listen = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
|
|
|
server_proxyclient_address = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
|
|
|
|
|
[vnc]
|
|
enabled = False
|
|
|
|
{% elif nova_console_type == 'novnc' %}
|
|
[vnc]
|
|
enabled = {{ nova_novncproxy_agent_enabled }}
|
|
novncproxy_base_url = {{ nova_novncproxy_base_url }}
|
|
server_listen = {{ nova_novncproxy_vncserver_listen }}
|
|
server_proxyclient_address = {{ nova_novncproxy_vncserver_proxyclient_address }}
|
|
|
|
{% elif nova_console_type == 'serialconsole' %}
|
|
[serial_console]
|
|
enabled = {{ nova_serialconsoleproxy_enabled }}
|
|
# Console Url and binds
|
|
base_url= {{ nova_serialconsoleproxy_base_url }}
|
|
proxyclient_address = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
|
port_range = {{ nova_serialconsoleproxy_port_range }}
|
|
{% if nova_services['nova-serialconsole-proxy']['group'] %}
|
|
serialproxy_host= {{ nova_serialconsoleproxy_serialconsole_proxyserver_proxyclient_address }}
|
|
serialproxy_port= {{ nova_serialconsoleproxy_port }}
|
|
{% endif %}
|
|
|
|
[vnc]
|
|
enabled = False
|
|
|
|
{% endif %}
|
|
|
|
# Glance
|
|
[glance]
|
|
api_servers = {{ nova_glance_api_servers }}
|
|
insecure = {{ keystone_service_internaluri_insecure | bool }}
|
|
|
|
# Neutron
|
|
[neutron]
|
|
region_name = {{ neutron_service_region }}
|
|
auth_type = password
|
|
default_floating_pool = public
|
|
# Keystone client plugin password option
|
|
password = {{ neutron_service_password }}
|
|
# Keystone client plugin username option
|
|
username = {{ neutron_service_user_name }}
|
|
project_name = {{ neutron_service_project_name }}
|
|
user_domain_name = {{ neutron_service_domain_name |default("Default") }}
|
|
project_domain_name = {{ neutron_service_domain_name |default("Default") }}
|
|
# Keystone client plugin authentication URL option
|
|
auth_url = {{ keystone_service_adminurl }}
|
|
insecure = {{ keystone_service_adminuri_insecure | bool }}
|
|
metadata_proxy_shared_secret = {{ nova_metadata_proxy_secret }}
|
|
service_metadata_proxy = {{ nova_metadata_proxy_enabled }}
|
|
{% if nova_network_services[nova_network_type]['ovs_bridge'] is defined %}
|
|
ovs_bridge = {{ nova_network_services[nova_network_type]['ovs_bridge'] }}
|
|
{% endif %}
|
|
|
|
{% if nova_ceilometer_enabled %}
|
|
[notifications]
|
|
notify_on_state_change = vm_and_task_state
|
|
notification_format = {% if nova_versioned_notification_enabled %}both{% else %}unversioned{% endif %}
|
|
{% endif %}
|
|
|
|
|
|
{% if nova_placement_service_enabled | bool %}
|
|
# Placement
|
|
[placement]
|
|
region_name = {{ nova_placement_service_region }}
|
|
valid_interfaces = {{ nova_placement_service_interface }}
|
|
auth_type = "password"
|
|
password = {{ nova_placement_service_password }}
|
|
username = {{ nova_placement_service_username }}
|
|
project_name = {{ nova_placement_service_project_name }}
|
|
user_domain_name = {{ nova_placement_service_user_domain_id }}
|
|
project_domain_name = {{ nova_placement_service_project_domain_id }}
|
|
auth_url = {{ keystone_service_adminurl }}
|
|
insecure = {{ keystone_service_adminuri_insecure | bool }}
|
|
{% endif %}
|
|
|
|
[conductor]
|
|
workers = {{ nova_conductor_workers | default(nova_api_threads) }}
|
|
|
|
|
|
[keystone_authtoken]
|
|
insecure = {{ keystone_service_internaluri_insecure | bool }}
|
|
auth_type = {{ nova_keystone_auth_plugin }}
|
|
auth_url = {{ keystone_service_adminuri }}
|
|
www_authenticate_uri = {{ keystone_service_internaluri }}
|
|
project_domain_id = {{ nova_service_project_domain_id }}
|
|
user_domain_id = {{ nova_service_user_domain_id }}
|
|
project_name = {{ nova_service_project_name }}
|
|
username = {{ nova_service_user_name }}
|
|
password = {{ nova_service_password }}
|
|
region_name = {{ keystone_service_region }}
|
|
|
|
memcached_servers = {{ memcached_servers }}
|
|
|
|
token_cache_time = 300
|
|
|
|
# if your memcached server is shared, use these settings to avoid cache poisoning
|
|
memcache_security_strategy = ENCRYPT
|
|
memcache_secret_key = {{ memcached_encryption_key }}
|
|
|
|
{% if group_names | intersect(nova_services.keys() | difference('nova-compute') | map('extract', nova_services, 'group') | list) | count > 0 %}
|
|
[database]
|
|
connection = mysql+pymysql://{{ nova_galera_user }}:{{ nova_container_mysql_password }}@{{ nova_galera_address }}/{{ nova_galera_database }}?charset=utf8{% if nova_galera_use_ssl | bool %}&ssl_ca={{ nova_galera_ssl_ca_cert }}{% endif %}
|
|
|
|
max_overflow = {{ nova_db_max_overflow }}
|
|
max_pool_size = {{ nova_db_max_pool_size }}
|
|
pool_timeout = {{ nova_db_pool_timeout }}
|
|
|
|
|
|
[api_database]
|
|
connection = mysql+pymysql://{{ nova_api_galera_user }}:{{ nova_api_container_mysql_password }}@{{ nova_api_galera_address }}/{{ nova_api_galera_database }}?charset=utf8{% if nova_galera_use_ssl | bool %}&ssl_ca={{ nova_galera_ssl_ca_cert }}{% endif %}
|
|
|
|
max_overflow = {{ nova_api_db_max_overflow }}
|
|
max_pool_size = {{ nova_api_db_max_pool_size }}
|
|
pool_timeout = {{ nova_api_db_pool_timeout }}
|
|
|
|
{% endif %}
|
|
|
|
[oslo_concurrency]
|
|
lock_path = {{ nova_lock_path }}
|
|
|
|
|
|
[oslo_messaging_rabbit]
|
|
ssl = {{ nova_oslomsg_rpc_use_ssl }}
|
|
rpc_conn_pool_size = {{ nova_rpc_conn_pool_size }}
|
|
|
|
|
|
{% if nova_virt_type == 'ironic' %}
|
|
[ironic]
|
|
username = {{ ironic_service_user_name }}
|
|
password = {{ ironic_service_password }}
|
|
project_name = {{ ironic_service_project_name }}
|
|
user_domain_name = {{ ironic_service_domain_name | default("Default") }}
|
|
project_domain_name = {{ ironic_service_domain_name | default("Default") }}
|
|
auth_url = {{ keystone_service_adminurl }}
|
|
insecure = {{ keystone_service_adminuri_insecure | bool }}
|
|
api_endpoint = {{ ironic_service_adminurl }}
|
|
auth_type = {{ ironic_keystone_auth_plugin }}
|
|
|
|
{% endif %}
|
|
|
|
{% if nova_virt_type in ['kvm', 'qemu', 'xen'] %}
|
|
[libvirt]
|
|
inject_partition = {{ nova_libvirt_inject_partition }}
|
|
inject_password = {{ nova_libvirt_inject_password }}
|
|
inject_key = {{ nova_libvirt_inject_key }}
|
|
use_virtio_for_bridges = True
|
|
virt_type = {{ nova_virt_type }}
|
|
remove_unused_resized_minimum_age_seconds = {{ nova_remove_unused_resized_minimum_age_seconds }}
|
|
{% if nova_cpu_mode is defined %}
|
|
cpu_mode = {{ nova_cpu_mode }}
|
|
{% if nova_cpu_mode == 'custom' %}
|
|
cpu_model = {{ nova_cpu_model }}
|
|
{% endif %}
|
|
{% if nova_cpu_model_extra_flags is defined %}
|
|
cpu_model_extra_flags = {{ nova_cpu_model_extra_flags | join(',') }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if nova_libvirt_images_rbd_pool is defined %}
|
|
# ceph rbd support
|
|
rbd_user = {{ nova_ceph_client }}
|
|
rbd_secret_uuid = {{ nova_ceph_client_uuid }}
|
|
images_type = rbd
|
|
images_rbd_pool = {{ nova_libvirt_images_rbd_pool }}
|
|
images_rbd_ceph_conf = /etc/ceph/ceph.conf
|
|
{% endif %}
|
|
live_migration_uri = "qemu+ssh://nova@%s/system?no_verify=1&keyfile={{ nova_system_home_folder }}/.ssh/id_rsa"
|
|
live_migration_tunnelled = True
|
|
hw_disk_discard = {{ nova_libvirt_hw_disk_discard }}
|
|
disk_cachemodes = {{ nova_libvirt_disk_cachemodes }}
|
|
{% endif %}
|
|
|
|
{% if nova_virt_type == 'lxd' %}
|
|
[lxd]
|
|
pool= {{ lxd_storage_pool }}
|
|
{% endif %}
|
|
|
|
{% if nova_barbican_enabled %}
|
|
[barbican]
|
|
auth_endpoint = {{ keystone_service_internaluri }}/v3
|
|
|
|
[key_manager]
|
|
backend = barbican
|
|
region_name = {{ nova_placement_service_region }}
|
|
auth_type = "password"
|
|
password = {{ nova_placement_service_password }}
|
|
username = {{ nova_placement_service_username }}
|
|
project_name = {{ nova_placement_service_project_name }}
|
|
user_domain_name = {{ nova_placement_service_user_domain_id }}
|
|
project_domain_name = {{ nova_placement_service_project_domain_id }}
|
|
auth_url = {{ keystone_service_adminurl }}
|
|
insecure = {{ keystone_service_adminuri_insecure | bool }}
|
|
{% endif %}
|
|
|
|
[wsgi]
|
|
api_paste_config = /etc/nova/api-paste.ini
|
|
{% if nova_external_ssl | bool %}
|
|
secure_proxy_ssl_header = {{ nova_secure_proxy_ssl_header }}
|
|
{% endif %}
|
|
|
|
[api]
|
|
auth_strategy = keystone
|
|
enable_instance_password = {{ nova_enable_instance_password }}
|
|
use_forwarded_for = {{ nova_network_services[nova_network_type]['use_forwarded_for'] | bool }}
|
|
vendordata_jsonfile_path = /etc/nova/vendor_data.json
|
|
|
|
[scheduler]
|
|
workers = {{ nova_scheduler_workers | default(nova_api_threads) }}
|
|
max_attempts = {{ nova_scheduler_max_attempts }}
|
|
scheduler_driver = {{ nova_scheduler_driver }}
|
|
periodic_task_interval = {{ nova_scheduler_driver_task_period }}
|
|
discover_hosts_in_cells_interval = {{ nova_discover_hosts_in_cells_interval }}
|
|
|
|
[filter_scheduler]
|
|
max_instances_per_host = {{ nova_max_instances_per_host }}
|
|
max_io_ops_per_host = {{ nova_max_io_ops_per_host }}
|
|
ram_weight_multiplier = {{ nova_ram_weight_multiplier }}
|
|
available_filters = {{ nova_scheduler_available_filters }}
|
|
enabled_filters = {{ nova_scheduler_default_filters }}
|
|
host_subset_size = {{ nova_scheduler_host_subset_size }}
|
|
weight_classes = {{ nova_scheduler_weight_classes }}
|
|
tracks_instance_changes = {{ nova_scheduler_tracks_instance_changes }}
|
|
|
|
[quota]
|
|
cores = {{ nova_quota_cores }}
|
|
injected_file_content_bytes = {{ nova_quota_injected_file_content_bytes }}
|
|
injected_file_path_length = {{ nova_quota_injected_file_path_length }}
|
|
injected_files = {{ nova_quota_injected_files }}
|
|
instances = {{ nova_quota_instances }}
|
|
key_pairs = {{ nova_quota_key_pairs }}
|
|
max_age = {{ nova_max_age }}
|
|
metadata_items = {{ nova_quota_metadata_items }}
|
|
ram = {{ nova_quota_ram }}
|
|
server_group_members = {{ nova_quota_server_group_members }}
|
|
server_groups = {{ nova_quota_server_groups }}
|
|
|
|
[upgrade_levels]
|
|
compute=auto
|
|
|
|
{% if enabled_vgpu_types is defined %}
|
|
[devices]
|
|
enabled_vgpu_types = {{ enabled_vgpu_types | join(',') }}
|
|
{% endif %}
|
|
|
|
{% if nova_pci_passthrough_whitelist or nova_pci_alias %}
|
|
[pci]
|
|
{% if nova_pci_passthrough_whitelist %}
|
|
# White list of PCI devices available to VMs.
|
|
passthrough_whitelist = {{ nova_pci_passthrough_whitelist }}
|
|
{% endif %}
|
|
{% if nova_pci_alias %}
|
|
# PCI Alias
|
|
{% for item in nova_pci_alias %}
|
|
alias = {{item}}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endif %}
|