Files
openstack-ansible-os_nova/templates/nova.conf.j2
Stuart Grace 7f431ebcda Use internal endpoint for barbican API
Nova defaults to using public endpoint for Barbican API which would
require internet access from the compute node so change this to
use the internal API endpoint.

Change-Id: Iaa14a9bf80d2e02197e74d67e812afc518fe1b65
2023-10-20 13:25:52 +01:00

350 lines
13 KiB
Django/Jinja

# {{ ansible_managed }}
[DEFAULT]
# Logs / State
debug = {{ debug }}
use_journal = True
state_path = {{ nova_system_home_folder }}
service_down_time = 120
# 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 }}
instances_path = {{ nova_system_home_folder }}/instances
allow_resize_to_same_host = True
{% 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 }}
# 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_conf }}{% if nova_oslomsg_rpc_use_ssl | bool %}?ssl=1&ssl_version={{ nova_oslomsg_rpc_ssl_version }}&ssl_ca_file={{ nova_oslomsg_rpc_ssl_ca_file }}{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
# Network
my_ip = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
# Hypervisor
default_ephemeral_format = ext4
# Ceilometer notification configurations
{% if nova_ceilometer_enabled %}
instance_usage_audit = True
instance_usage_audit_period = hour
{% endif %}
# Notifications
[oslo_messaging_notifications]
{% set notification_topics = [] %}
{% if nova_ceilometer_enabled %}
{% set _ = notification_topics.append('notifications') %}
{% endif %}
{% if nova_designate_enabled %}
{% set _ = notification_topics.append(nova_notifications_designate) %}
{% endif %}
topics = {{ notification_topics | join(',') }}
driver = {{ (notification_topics | length > 0) | ternary('messagingv2', 'noop') }}
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_conf }}{% if nova_oslomsg_notify_use_ssl | bool %}?ssl=1&ssl_version={{ nova_oslomsg_notify_ssl_version }}&ssl_ca_file={{ nova_oslomsg_notify_ssl_ca_file }}{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
# Messaging
[oslo_messaging_rabbit]
heartbeat_in_pthread = {{ nova_oslomsg_heartbeat_in_pthread }}
rabbit_quorum_queue = {{ nova_oslomsg_rabbit_quorum_queues }}
rabbit_quorum_delivery_limit = {{ nova_oslomsg_rabbit_quorum_delivery_limit }}
rabbit_quorum_max_memory_bytes = {{ nova_oslomsg_rabbit_quorum_max_memory_bytes }}
# Image cache
[image_cache]
manager_interval = {{ nova_image_cache_manager_interval }}
# Cache
[cache]
enabled = true
backend = {{ nova_cache_backend }}
{% if nova_cache_backend in nova_cache_backend_map['dogpile'] %}
memcache_servers = {{ nova_cache_servers }}
{% endif %}
# Cinder
[cinder]
catalog_info = volumev3:cinderv3:internalURL
os_region_name = {{ nova_service_region }}
auth_section = keystone_authtoken
[spice]
agent_enabled = {{ nova_spice_console_agent_enabled }}
enabled = {{ (nova_console_type == 'spice') | ternary(True, False) }}
{% if 'spice' in nova_console_proxy_types %}
html5proxy_base_url = {{ nova_spice_html5proxy_base_url }}
html5proxy_host = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
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 %}
{% endif %}
[vnc]
enabled = {{ (nova_console_type == 'novnc') | ternary(True, False) }}
{% if 'novnc' in nova_console_proxy_types %}
novncproxy_base_url = {{ nova_novncproxy_base_url }}
novncproxy_host = {{ nova_novncproxy_host }}
novncproxy_port = {{ nova_novncproxy_port }}
server_listen = {{ nova_novncproxy_vncserver_listen }}
server_proxyclient_address = {{ nova_novncproxy_vncserver_proxyclient_address }}
{% if nova_qemu_vnc_tls == 1 %}
auth_schemes={{ nova_vencrypt_auth_scheme }}
vencrypt_client_key={{ nova_vencrypt_client_key }}
vencrypt_client_cert={{ nova_vencrypt_client_cert }}
vencrypt_ca_certs={{ nova_vencrypt_ca_certs }}
{% endif %}
{% endif %}
[serial_console]
enabled = {{ (nova_console_type == 'serialconsole') | ternary(True, False) }}
{% if 'serialconsole' in nova_console_proxy_types %}
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 }}
serialproxy_host= {{ nova_serialconsoleproxy_serialconsole_proxyserver_proxyclient_address }}
serialproxy_port= {{ nova_serialconsoleproxy_port }}
{% endif %}
# Glance
[glance]
region_name = {{ nova_service_region }}
insecure = {{ keystone_service_internaluri_insecure | bool }}
{% if nova_glance_rbd_inuse | bool %}
enable_rbd_download = True
rbd_user = {{ nova_ceph_client }}
rbd_pool = {{ nova_glance_images_rbd_pool }}
rbd_ceph_conf = /etc/ceph/ceph.conf
{% endif %}
# Neutron
[neutron]
region_name = {{ nova_service_region }}
auth_type = password
default_floating_pool = public
username = {{ nova_service_user_name }}
password = {{ nova_service_password }}
project_name = {{ nova_service_project_name }}
user_domain_id = {{ nova_service_user_domain_id }}
project_domain_id = {{ nova_service_project_domain_id }}
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_ceilometer_enabled %}
[notifications]
notify_on_state_change = vm_and_task_state
notification_format = {% if nova_versioned_notification_enabled %}both{% else %}unversioned{% endif %}
{% endif %}
[placement]
region_name = {{ nova_service_region }}
auth_type = password
username = {{ nova_service_user_name }}
password = {{ nova_service_password }}
project_name = {{ nova_service_project_name }}
user_domain_id = {{ nova_service_user_domain_id }}
project_domain_id = {{ nova_service_project_domain_id }}
auth_url = {{ keystone_service_adminurl }}
insecure = {{ keystone_service_adminuri_insecure | bool }}
[conductor]
workers = {{ nova_conductor_workers | default(nova_api_threads) }}
[service_user]
send_service_user_token = {{ nova_service_token_roles_required | bool }}
region_name = {{ nova_service_region }}
auth_type = password
username = {{ nova_service_user_name }}
password = {{ nova_service_password }}
project_name = {{ nova_service_project_name }}
user_domain_id = {{ nova_service_user_domain_id }}
project_domain_id = {{ nova_service_project_domain_id }}
auth_url = {{ keystone_service_adminurl }}
insecure = {{ keystone_service_adminuri_insecure | bool }}
[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 }}
service_token_roles_required = {{ nova_service_token_roles_required | bool }}
service_token_roles = {{ nova_service_token_roles | join(',') }}
service_type = {{ nova_service_type }}
{% if nova_cache_backend in nova_cache_backend_map['dogpile'] %}
memcached_servers = {{ nova_cache_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 }}
{% endif %}
{% 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_port }}/{{ nova_galera_database }}?charset=utf8{% if nova_galera_use_ssl | bool %}&ssl_verify_cert=true{% if nova_galera_ssl_ca_cert | length > 0 %}&ssl_ca={{ nova_galera_ssl_ca_cert }}{% endif %}{% endif %}
max_overflow = {{ nova_db_max_overflow }}
max_pool_size = {{ nova_db_max_pool_size }}
pool_timeout = {{ nova_db_pool_timeout }}
connection_recycle_time = {{ nova_db_connection_recycle_time }}
[api_database]
connection = mysql+pymysql://{{ nova_api_galera_user }}:{{ nova_api_container_mysql_password }}@{{ nova_api_galera_address }}:{{ nova_api_galera_port }}/{{ nova_api_galera_database }}?charset=utf8{% if nova_galera_use_ssl | bool %}&ssl_verify_cert=true{% if nova_galera_ssl_ca_cert | length > 0 %}&ssl_ca={{ nova_galera_ssl_ca_cert }}{% endif %}{% endif %}
max_overflow = {{ nova_api_db_max_overflow }}
max_pool_size = {{ nova_api_db_max_pool_size }}
pool_timeout = {{ nova_api_db_pool_timeout }}
connection_recycle_time = {{ nova_api_db_connection_recycle_time }}
{% endif %}
[oslo_concurrency]
lock_path = {{ nova_lock_dir }}/{{ nova_system_slice_name }}
{% if nova_virt_type == 'ironic' %}
[ironic]
auth_type = {{ nova_keystone_auth_plugin }}
username = {{ nova_service_user_name }}
password = {{ nova_service_password }}
project_name = {{ nova_service_project_name }}
user_domain_id = {{ nova_service_user_domain_id }}
project_domain_id = {{ nova_service_project_domain_id }}
auth_url = {{ keystone_service_adminurl }}
insecure = {{ keystone_service_adminuri_insecure | bool }}
{% endif %}
{% if nova_virt_type in ['kvm', 'qemu', 'xen', 'lxc', 'uml', 'parallels'] %}
{% if (neutron_plugin_type | default('') == "ml2.ovs") %}
[os_vif_ovs]
isolate_vif = True
{% endif %}
[libvirt]
inject_partition = {{ nova_libvirt_inject_partition }}
inject_password = {{ nova_libvirt_inject_password }}
inject_key = {{ nova_libvirt_inject_key }}
virt_type = {{ nova_virt_type }}
{% if nova_cpu_mode is defined %}
cpu_mode = {{ nova_cpu_mode }}
{% endif %}
{% if nova_rbd_inuse %}
# ceph rbd support
rbd_user = {{ nova_ceph_client }}
rbd_secret_uuid = {{ nova_ceph_client_uuid }}
{% endif %}
{% if nova_libvirt_images_rbd_pool | length > 0 %}
images_type = rbd
images_rbd_pool = {{ nova_libvirt_images_rbd_pool }}
images_rbd_ceph_conf = /etc/ceph/ceph.conf
{% endif %}
{% if nova_virt_type in ['kvm', 'qemu'] %}
{% if nova_libvirtd_listen_tls == 1 %}
live_migration_with_native_tls = true
live_migration_scheme = tls
{% else %}
live_migration_uri = "qemu+ssh://nova@%s/system?no_verify=1&keyfile={{ nova_system_home_folder }}/.ssh/id_rsa"
live_migration_tunnelled = True
{% endif %}
live_migration_inbound_addr = {{ nova_libvirt_live_migration_inbound_addr }}
{% endif %}
hw_disk_discard = {{ nova_libvirt_hw_disk_discard }}
disk_cachemodes = {{ nova_libvirt_disk_cachemodes }}
{% endif %}
{% if nova_barbican_enabled %}
[barbican]
barbican_endpoint_type = internal
auth_endpoint = {{ keystone_service_internaluri }}/v3
send_service_user_token = {{ nova_service_token_roles_required | bool }}
[barbican_service_user]
auth_section = service_user
[key_manager]
backend = barbican
auth_type = "password"
username = {{ nova_service_user_name }}
password = {{ nova_service_password }}
project_name = {{ nova_service_project_name }}
user_domain_id = {{ nova_service_user_domain_id }}
project_domain_id = {{ nova_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
[api]
vendordata_jsonfile_path = /etc/nova/vendor_data.json
dhcp_domain = {{ nova_dhcp_domain }}
[scheduler]
workers = {{ nova_scheduler_workers | default(nova_api_threads) }}
max_attempts = {{ nova_scheduler_max_attempts }}
discover_hosts_in_cells_interval = {{ nova_discover_hosts_in_cells_interval }}
[filter_scheduler]
max_io_ops_per_host = {{ nova_max_io_ops_per_host }}
enabled_filters = {{ _nova_scheduler_filters | join(',') }}
host_subset_size = {{ nova_scheduler_host_subset_size }}
track_instance_changes = {{ nova_scheduler_tracks_instance_changes }}
[upgrade_levels]
compute=auto
{% if nova_enabled_mdev_types | length > 0 or discovered_mdev_types is defined %}
[devices]
enabled_mdev_types = {{ nova_enabled_mdev_types | map(attribute='type') | list | default(discovered_mdev_types, true) | unique | join(',') }}
{% for record in nova_enabled_mdev_types | selectattr('address', 'defined') | list %}
[mdev_{{ record.type }}]
device_addresses = {{ (record.address is string) | ternary(record.address, record.address | join(',')) }}
{% endfor %}
{% endif %}
{% if nova_device_spec or nova_pci_alias %}
[pci]
{% if nova_device_spec %}
# White list of PCI devices available to VMs.
device_spec = {{ nova_device_spec }}
{% endif %}
{% if nova_pci_alias %}
# PCI Alias
{% for item in nova_pci_alias %}
alias = {{item}}
{% endfor %}
{% endif %}
{% endif %}