| {%- from "neutron/map.jinja" import fwaas, server with context %} |
| [DEFAULT] |
| |
| # |
| # From neutron |
| # |
| |
| # Where to store Neutron state files. This directory must be writable by the |
| # agent. (string value) |
| #state_path = /var/lib/neutron |
| state_path = /var/lib/neutron |
| |
| # The host IP to bind to. (unknown value) |
| #bind_host = 0.0.0.0 |
| bind_host = {{ server.bind.address }} |
| |
| # The port to bind to (port value) |
| # Minimum value: 0 |
| # Maximum value: 65535 |
| #bind_port = 9696 |
| bind_port = {{ server.bind.port }} |
| |
| # The path for API extensions. Note that this can be a colon-separated list of |
| # paths. For example: api_extensions_path = |
| # extensions:/path/to/more/exts:/even/more/exts. The __path__ of |
| # neutron.extensions is appended to this, so if your extensions are in there |
| # you don't need to specify them here. (string value) |
| #api_extensions_path = |
| |
| # The type of authentication to use (string value) |
| #auth_strategy = keystone |
| auth_strategy = keystone |
| |
| {%- if server.core_plugin is defined %} |
| core_plugin = {{ server.core_plugin }} |
| {%- if server.service_plugins is defined %} |
| {%- set service_plugins = [] %} |
| {%- for sname,service in server.service_plugins.iteritems() %} |
| {%- if service.enabled%} |
| {%- do service_plugins.append(sname)%} |
| {%- endif %} |
| {%- endfor %} |
| service_plugins = {{ ','.join(service_plugins) }} |
| {%- endif %} |
| {%- else %} |
| |
| {% if server.backend.engine == "contrail" %} |
| |
| api_extensions_path = extensions:/usr/lib/python2.7/dist-packages/neutron_plugin_contrail/extensions:/usr/lib/python2.7/dist-packages/neutron_lbaas/extensions |
| # The core plugin Neutron will use (string value) |
| core_plugin = neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2 |
| |
| service_plugins = neutron_plugin_contrail.plugins.opencontrail.loadbalancer.v2.plugin.LoadBalancerPluginV2 |
| |
| {% elif server.backend.engine in ["ml2", "ovn"] %} |
| |
| core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin |
| |
| {% if server.backend.engine == "ml2" %} |
| {% set l3_plugin = 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin' %} |
| {% elif server.backend.engine == "ovn" %} |
| {% set l3_plugin = 'networking_ovn.l3.l3_ovn.OVNL3RouterPlugin' %} |
| {% endif %} |
| |
| service_plugins = {{ server.backend.get('router', l3_plugin)}},metering |
| {%- if server.get('bgp_vpn', {}).get('enabled', False) -%},bgpvpn{%- endif -%} |
| {%- if fwaas.get('enabled', False) -%},{{ fwaas[fwaas.api_version]['service_plugin'] }}{%- endif -%} |
| {%- if server.get('qos', 'True') -%},neutron.services.qos.qos_plugin.QoSPlugin{%- endif -%} |
| {%- if server.get('vlan_aware_vms', False) -%},trunk{%- endif -%} |
| {%- if server.l2gw is defined and server.l2gw.get('enabled', False) -%},networking_l2gw.services.l2gateway.plugin.L2GatewayPlugin{%- endif -%} |
| {%- if server.get('sfc', {}).get('enabled', False) -%},flow_classifier,sfc{%- endif -%} |
| |
| {% endif %} |
| {%- endif %} |
| |
| # The service plugins Neutron will use (list value) |
| #service_plugins = |
| |
| # The base MAC address Neutron will use for VIFs. The first 3 octets will |
| # remain unchanged. If the 4th octet is not 00, it will also be used. The |
| # others will be randomly generated. (string value) |
| #base_mac = fa:16:3e:00:00:00 |
| {%- if server.base_mac is defined %} |
| base_mac = {{ server.base_mac }} |
| {%- endif %} |
| |
| # Allow the usage of the bulk API (boolean value) |
| #allow_bulk = true |
| |
| # The maximum number of items returned in a single response, value was |
| # 'infinite' or negative integer means no limit (string value) |
| #pagination_max_limit = -1 |
| pagination_max_limit = {{ server.pagination_max_limit|default('-1') }} |
| |
| # Default value of availability zone hints. The availability zone aware |
| # schedulers use this when the resources availability_zone_hints is empty. |
| # Multiple availability zones can be specified by a comma separated string. |
| # This value can be empty. In this case, even if availability_zone_hints for a |
| # resource is empty, availability zone is considered for high availability |
| # while scheduling the resource. (list value) |
| #default_availability_zones = |
| {%- if server.default_availability_zones is defined %} |
| default_availability_zones = {{ server.default_availability_zones }} |
| {%- endif %} |
| |
| # Maximum number of DNS nameservers per subnet (integer value) |
| #max_dns_nameservers = 5 |
| |
| # Maximum number of host routes per subnet (integer value) |
| #max_subnet_host_routes = 20 |
| |
| # Enables IPv6 Prefix Delegation for automatic subnet CIDR allocation. Set to |
| # True to enable IPv6 Prefix Delegation for subnet allocation in a PD-capable |
| # environment. Users making subnet creation requests for IPv6 subnets without |
| # providing a CIDR or subnetpool ID will be given a CIDR via the Prefix |
| # Delegation mechanism. Note that enabling PD will override the behavior of the |
| # default IPv6 subnetpool. (boolean value) |
| #ipv6_pd_enabled = false |
| |
| # DHCP lease duration (in seconds). Use -1 to tell dnsmasq to use infinite |
| # lease times. (integer value) |
| #dhcp_lease_duration = 86400 |
| dhcp_lease_duration = {{ server.dhcp_lease_duration|default('600') }} |
| |
| # Domain to use for building the hostnames (string value) |
| #dns_domain = openstacklocal |
| dns_domain = {{ server.dns_domain }} |
| |
| # Driver for external DNS integration. (string value) |
| #external_dns_driver = <None> |
| {%- if server.backend.get('extension', {}).get('dns', {}).get('enabled', False) %} |
| external_dns_driver={{ server.backend.get('extension', {}).get('dns', {}).get('engine', '') }} |
| {%- endif %} |
| |
| # Allow sending resource operation notification to DHCP agent (boolean value) |
| #dhcp_agent_notification = true |
| |
| # Allow overlapping IP support in Neutron. Attention: the following parameter |
| # MUST be set to False if Neutron is being used in conjunction with Nova |
| # security groups. (boolean value) |
| #allow_overlapping_ips = false |
| allow_overlapping_ips = True |
| |
| # Hostname to be used by the Neutron server, agents and services running on |
| # this machine. All the agents and services running on this machine must use |
| # the same host value. (unknown value) |
| #host = example.domain |
| {%- if server.host is defined %} |
| host={{ server.host }} |
| {%- endif %} |
| |
| # This string is prepended to the normal URL that is returned in links to the |
| # OpenStack Network API. If it is empty (the default), the URLs are returned |
| # unchanged. (string value) |
| #network_link_prefix = <None> |
| |
| # Send notification to nova when port status changes (boolean value) |
| #notify_nova_on_port_status_changes = true |
| notify_nova_on_port_status_changes = true |
| |
| # Send notification to nova when port data (fixed_ips/floatingip) changes so |
| # nova can update its cache. (boolean value) |
| #notify_nova_on_port_data_changes = true |
| notify_nova_on_port_data_changes = true |
| |
| # Number of seconds between sending events to nova if there are any events to |
| # send. (integer value) |
| #send_events_interval = 2 |
| |
| # Neutron IPAM (IP address management) driver to use. By default, the reference |
| # implementation of the Neutron IPAM driver is used. (string value) |
| #ipam_driver = internal |
| |
| # If True, then allow plugins that support it to create VLAN transparent |
| # networks. (boolean value) |
| #vlan_transparent = false |
| |
| # MTU of the underlying physical network. Neutron uses this value to calculate |
| # MTU for all virtual network components. For flat and VLAN networks, neutron |
| # uses this value without modification. For overlay networks such as VXLAN, |
| # neutron automatically subtracts the overlay protocol overhead from this |
| # value. Defaults to 1500, the standard value for Ethernet. (integer value) |
| # Deprecated group/name - [ml2]/segment_mtu |
| #global_physnet_mtu = 1500 |
| global_physnet_mtu = {{ server.get('global_physnet_mtu', '1500') }} |
| |
| # Number of backlog requests to configure the socket with (integer value) |
| #backlog = 4096 |
| |
| # Number of seconds to keep retrying to listen (integer value) |
| #retry_until_window = 30 |
| |
| # Enable SSL on the API server (boolean value) |
| #use_ssl = false |
| |
| # Seconds between running periodic tasks. (integer value) |
| #periodic_interval = 40 |
| |
| # Number of separate API worker processes for service. If not specified, the |
| # default is equal to the number of CPUs available for best performance. |
| # (integer value) |
| #api_workers = <None> |
| {%- if server.api_workers is defined %} |
| api_workers = {{ server.api_workers }} |
| {%- endif %} |
| |
| # Number of RPC worker processes for service. (integer value) |
| #rpc_workers = 1 |
| {%- if server.rpc_workers is defined %} |
| rpc_workers = {{ server.rpc_workers }} |
| {%- else %} |
| rpc_workers = {{ grains.num_cpus }} |
| {%- endif %} |
| |
| |
| # Number of RPC worker processes dedicated to state reports queue. (integer |
| # value) |
| #rpc_state_report_workers = 1 |
| {%- if server.rpc_state_report_workers is defined %} |
| rpc_state_report_workers = {{ server.rpc_state_report_workers }} |
| {%- else %} |
| rpc_state_report_workers = 4 |
| {%- endif %} |
| |
| # Range of seconds to randomly delay when starting the periodic task scheduler |
| # to reduce stampeding. (Disable by setting to 0) (integer value) |
| #periodic_fuzzy_delay = 5 |
| |
| # |
| # From neutron.agent |
| # |
| |
| # The driver used to manage the virtual interface. (string value) |
| #interface_driver = <None> |
| |
| # Location for Metadata Proxy UNIX domain socket. (string value) |
| #metadata_proxy_socket = $state_path/metadata_proxy |
| |
| # User (uid or name) running metadata proxy after its initialization (if empty: |
| # agent effective user). (string value) |
| #metadata_proxy_user = |
| |
| # Group (gid or name) running metadata proxy after its initialization (if |
| # empty: agent effective group). (string value) |
| #metadata_proxy_group = |
| |
| # |
| # From neutron.db |
| # |
| |
| # Seconds to regard the agent is down; should be at least twice |
| # report_interval, to be sure the agent is down for good. (integer value) |
| #agent_down_time = 75 |
| agent_down_time = {{ server.get('agent_down_time', 75) }} |
| |
| # Representing the resource type whose load is being reported by the agent. |
| # This can be "networks", "subnets" or "ports". When specified (Default is |
| # networks), the server will extract particular load sent as part of its agent |
| # configuration object from the agent report state, which is the number of |
| # resources being consumed, at every report_interval.dhcp_load_type can be used |
| # in combination with network_scheduler_driver = |
| # neutron.scheduler.dhcp_agent_scheduler.WeightScheduler When the |
| # network_scheduler_driver is WeightScheduler, dhcp_load_type can be configured |
| # to represent the choice for the resource being balanced. Example: |
| # dhcp_load_type=networks (string value) |
| # Possible values: |
| # networks - <No description provided> |
| # subnets - <No description provided> |
| # ports - <No description provided> |
| #dhcp_load_type = networks |
| dhcp_load_type = {{ server.get('dhcp_load_type', 'networks') }} |
| |
| # Agent starts with admin_state_up=False when enable_new_agents=False. In the |
| # case, user's resources will not be scheduled automatically to the agent until |
| # admin changes admin_state_up to True. (boolean value) |
| #enable_new_agents = true |
| |
| # Maximum number of routes per router (integer value) |
| #max_routes = 30 |
| |
| # Define the default value of enable_snat if not provided in |
| # external_gateway_info. (boolean value) |
| #enable_snat_by_default = true |
| |
| # Driver to use for scheduling network to DHCP agent (string value) |
| #network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.WeightScheduler |
| network_scheduler_driver = {{ server.get('network_scheduler_driver', 'neutron.scheduler.dhcp_agent_scheduler.WeightScheduler') }} |
| |
| # Allow auto scheduling networks to DHCP agent. (boolean value) |
| #network_auto_schedule = true |
| |
| # Automatically remove networks from offline DHCP agents. (boolean value) |
| #allow_automatic_dhcp_failover = true |
| {%- if server.allow_automatic_dhcp_failover is defined %} |
| allow_automatic_dhcp_failover = {{ server.get('allow_automatic_dhcp_failover', True)|lower }} |
| {%- endif %} |
| |
| # Number of DHCP agents scheduled to host a tenant network. If this number is |
| # greater than 1, the scheduler automatically assigns multiple DHCP agents for |
| # a given tenant network, providing high availability for DHCP service. |
| # (integer value) |
| #dhcp_agents_per_network = 1 |
| dhcp_agents_per_network = {{ server.get('dhcp_agents_per_network', 2) }} |
| |
| # Enable services on an agent with admin_state_up False. If this option is |
| # False, when admin_state_up of an agent is turned False, services on it will |
| # be disabled. Agents with admin_state_up False are not selected for automatic |
| # scheduling regardless of this option. But manual scheduling to such agents is |
| # available if this option is True. (boolean value) |
| #enable_services_on_agents_with_admin_state_down = false |
| |
| # The base mac address used for unique DVR instances by Neutron. The first 3 |
| # octets will remain unchanged. If the 4th octet is not 00, it will also be |
| # used. The others will be randomly generated. The 'dvr_base_mac' *must* be |
| # different from 'base_mac' to avoid mixing them up with MAC's allocated for |
| # tenant ports. A 4 octet example would be dvr_base_mac = fa:16:3f:4f:00:00. |
| # The default is 3 octet (string value) |
| #dvr_base_mac = fa:16:3f:00:00:00 |
| {%- if server.dvr_base_mac is defined %} |
| {%- if server.base_mac is defined %} |
| {%- if server.base_mac != server.dvr_base_mac %} |
| dvr_base_mac = {{ server.dvr_base_mac }} |
| {%- endif %} |
| {%- else %} |
| dvr_base_mac = {{ server.dvr_base_mac }} |
| {%- endif %} |
| {%- endif %} |
| |
| # System-wide flag to determine the type of router that tenants can create. |
| # Only admin can override. (boolean value) |
| #router_distributed = false |
| router_distributed = {{ server.get('dvr', 'False') }} |
| |
| # Determine if setup is configured for DVR. If False, DVR API extension will be |
| # disabled. (boolean value) |
| #enable_dvr = true |
| enable_dvr = {{ server.get('dvr', 'False') }} |
| |
| # Driver to use for scheduling router to a default L3 agent (string value) |
| #router_scheduler_driver = neutron.scheduler.l3_agent_scheduler.LeastRoutersScheduler |
| router_scheduler_driver = {{ server.get('router_scheduler_driver', 'neutron.scheduler.l3_agent_scheduler.ChanceScheduler') }} |
| |
| # Allow auto scheduling of routers to L3 agent. (boolean value) |
| #router_auto_schedule = true |
| |
| # Automatically reschedule routers from offline L3 agents to online L3 agents. |
| # (boolean value) |
| #allow_automatic_l3agent_failover = false |
| allow_automatic_l3agent_failover = true |
| |
| # Enable HA mode for virtual routers. (boolean value) |
| #l3_ha = false |
| l3_ha = {{ server.get('l3_ha', 'False') }} |
| |
| # Maximum number of L3 agents which a HA router will be scheduled on. If it is |
| # set to 0 then the router will be scheduled on every agent. (integer value) |
| #max_l3_agents_per_router = 3 |
| max_l3_agents_per_router = {{ server.get('max_l3_agents_per_router', '0') }} |
| |
| # Subnet used for the l3 HA admin network. (string value) |
| #l3_ha_net_cidr = 169.254.192.0/18 |
| l3_ha_net_cidr = {{ server.get('l3_ha_net_cidr', '169.254.192.0/18') }} |
| |
| # The network type to use when creating the HA network for an HA router. By |
| # default or if empty, the first 'tenant_network_types' is used. This is |
| # helpful when the VRRP traffic should use a specific network which is not the |
| # default one. (string value) |
| #l3_ha_network_type = |
| {%- if server.l3_ha_network_type is defined %} |
| l3_ha_network_type = {{ server.l3_ha_network_type }} |
| {%- endif %} |
| |
| # The physical network name with which the HA network can be created. (string |
| # value) |
| #l3_ha_network_physical_name = |
| {%- if server.l3_ha_network_physical_name is defined %} |
| l3_ha_network_physical_name = {{ server.l3_ha_network_physical_name }} |
| {%- endif %} |
| |
| # |
| # From neutron.extensions |
| # |
| |
| # Maximum number of allowed address pairs (integer value) |
| #max_allowed_address_pair = 10 |
| {%- if server.max_allowed_address_pair is defined %} |
| max_allowed_address_pair = {{ server.max_allowed_address_pair }} |
| {%- endif %} |
| |
| {%- if server.logging is defined %} |
| {%- set _data = server.logging %} |
| {%- include "oslo_templates/files/queens/oslo/_log.conf" %} |
| {%- endif %} |
| |
| |
| {%- set _data = server.message_queue %} |
| {%- include "oslo_templates/files/queens/oslo/messaging/_default.conf" %} |
| |
| {%- set _data = {} %} |
| {%- include "oslo_templates/files/queens/oslo/service/_wsgi_default.conf" %} |
| |
| nova_url = http://{{ server.compute.host }}:8774/v2 |
| |
| |
| [agent] |
| |
| # |
| # From neutron.agent |
| # |
| |
| # Root helper application. Use 'sudo neutron-rootwrap |
| # /etc/neutron/rootwrap.conf' to use the real root filter facility. Change to |
| # 'sudo' to skip the filtering and just run the command directly. (string |
| # value) |
| #root_helper_daemon = <None> |
| root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf |
| |
| # Use the root helper when listing the namespaces on a system. This may not be |
| # required depending on the security configuration. If the root helper is not |
| # required, set this to False for a performance improvement. (boolean value) |
| #use_helper_for_ns_read = true |
| |
| # Root helper daemon application to use when possible. For the agent which |
| # needs to execute commands in Dom0 in the hypervisor of XenServer, this item |
| # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session |
| # to pass commands to Dom0. (string value) |
| #root_helper_daemon = <None> |
| {%- if server.root_helper_daemon|default(True) %} |
| root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf |
| {%- endif %} |
| |
| # Seconds between nodes reporting state to server; should be less than |
| # agent_down_time, best if it is half or less than agent_down_time. (floating |
| # point value) |
| #report_interval = 30 |
| report_interval = {{ server.get('report_interval', 30) }} |
| |
| # Log agent heartbeats (boolean value) |
| #log_agent_heartbeats = false |
| |
| # Add comments to iptables rules. Set to false to disallow the addition of |
| # comments to generated iptables rules that describe each rule's purpose. |
| # System must support the iptables comments module for addition of comments. |
| # (boolean value) |
| #comment_iptables_rules = true |
| |
| # Duplicate every iptables difference calculation to ensure the format being |
| # generated matches the format of iptables-save. This option should not be |
| # turned on for production systems because it imposes a performance penalty. |
| # (boolean value) |
| #debug_iptables_rules = false |
| |
| # Action to be executed when a child process dies (string value) |
| # Possible values: |
| # respawn - <No description provided> |
| # exit - <No description provided> |
| #check_child_processes_action = respawn |
| |
| # Interval between checks of child process liveness (seconds), use 0 to disable |
| # (integer value) |
| #check_child_processes_interval = 60 |
| |
| # Availability zone of this node (string value) |
| #availability_zone = nova |
| availability_zone = {{ server.availability_zone|default('nova') }} |
| |
| [cors] |
| {%- if server.cors is defined %} |
| {%- set _data = server.cors %} |
| {%- include "oslo_templates/files/queens/oslo/_cors.conf" %} |
| {%- endif %} |
| |
| |
| [database] |
| {%- set _data = server.database %} |
| {%- if _data.ssl is defined and 'cacert_file' not in _data.get('ssl', {}).keys() %}{% do _data['ssl'].update({'cacert_file': server.cacert_file}) %}{% endif %} |
| {%- include "oslo_templates/files/queens/oslo/_database.conf" %} |
| |
| [keystone_authtoken] |
| {%- set _data = server.identity %} |
| {%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': server.cacert_file}) %}{% endif %} |
| {%- set auth_type = _data.get('auth_type', 'password') %} |
| {%- if server.get('cache',{}).members is defined and 'cache' not in _data.keys() %} |
| {% do _data.update({'cache': server.cache}) %} |
| {%- endif %} |
| {%- include "oslo_templates/files/queens/keystonemiddleware/_auth_token.conf" %} |
| {%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %} |
| |
| |
| [nova] |
| {%- set _data = server.get('compute', server.get('identity', {})) %} |
| {%- if 'protocol' not in _data.keys() %}{% do _data.update({'protocol': server.get('identity', {}).get('protocol', 'http')}) %}{% endif %} |
| {%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': server.cacert_file}) %}{% endif %} |
| {%- set auth_type = _data.get('auth_type', 'password') %} |
| {%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %} |
| |
| |
| [oslo_concurrency] |
| {%- set _data = server.get('concurrency', {}) %} |
| {%- include "oslo_templates/files/queens/oslo/_concurrency.conf" %} |
| |
| |
| {%- if server.message_queue is defined %} |
| {%- set _data = server.message_queue %} |
| {%- if _data.engine == 'rabbitmq' %} |
| {%- set messaging_engine = 'rabbit' %} |
| {%- else %} |
| {%- set messaging_engine = _data.engine %} |
| {%- endif %} |
| [oslo_messaging_{{ messaging_engine }}] |
| {%- if _data.ssl is defined and 'cacert_file' not in _data.get('ssl', {}).keys() %}{% do _data['ssl'].update({'cacert_file': server.cacert_file}) %}{% endif %} |
| {%- include "oslo_templates/files/queens/oslo/messaging/_" + messaging_engine + ".conf" %} |
| {%- endif %} |
| |
| [oslo_messaging_notifications] |
| {%- set _data = server.notification %} |
| {%- include "oslo_templates/files/queens/oslo/messaging/_notifications.conf" %} |
| |
| |
| [oslo_middleware] |
| {%- set _data = server %} |
| {%- include "oslo_templates/files/queens/oslo/_middleware.conf" %} |
| |
| |
| [oslo_policy] |
| {%- if server.oslo_policy is defined %} |
| {%- set _data = server.oslo_policy %} |
| {%- include "oslo_templates/files/queens/oslo/_policy.conf" %} |
| {%- endif %} |
| |
| |
| [quotas] |
| |
| # |
| # From neutron |
| # |
| |
| # Default number of resource allowed per tenant. A negative value means |
| # unlimited. (integer value) |
| #default_quota = -1 |
| {%- if server.get('quotas',{}).default_quota is defined %} |
| default_quota = {{ server.quotas.default_quota }} |
| {%- endif %} |
| |
| # Number of networks allowed per tenant. A negative value means unlimited. |
| # (integer value) |
| #quota_network = 100 |
| {%- if server.get('quotas',{}).quota_network is defined %} |
| quota_network = {{ server.quotas.quota_network }} |
| {%- endif %} |
| |
| # Number of subnets allowed per tenant, A negative value means unlimited. |
| # (integer value) |
| #quota_subnet = 100 |
| {%- if server.get('quotas',{}).quota_subnet is defined %} |
| quota_subnet = {{ server.quotas.quota_subnet }} |
| {%- endif %} |
| |
| # Number of ports allowed per tenant. A negative value means unlimited. |
| # (integer value) |
| #quota_port = 500 |
| {%- if server.get('quotas',{}).quota_port is defined %} |
| quota_port = {{ server.quotas.quota_port }} |
| {%- endif %} |
| |
| # Default driver to use for quota checks. (string value) |
| #quota_driver = neutron.db.quota.driver.DbQuotaDriver |
| {% if server.backend.engine == "contrail" %} |
| quota_driver = neutron_plugin_contrail.plugins.opencontrail.quota.driver.QuotaDriver |
| {% endif %} |
| # Keep in track in the database of current resource quota usage. Plugins which |
| # do not leverage the neutron database should set this flag to False. (boolean |
| # value) |
| #track_quota_usage = true |
| |
| # |
| # From neutron.extensions |
| # |
| |
| # Number of routers allowed per tenant. A negative value means unlimited. |
| # (integer value) |
| #quota_router = 10 |
| {%- if server.get('quotas',{}).quota_router is defined %} |
| quota_router = {{ server.quotas.quota_router }} |
| {%- endif %} |
| |
| # Number of floating IPs allowed per tenant. A negative value means unlimited. |
| # (integer value) |
| #quota_floatingip = 50 |
| {%- if server.get('quotas',{}).quota_floatingip is defined %} |
| quota_floatingip = {{ server.quotas.quota_floatingip }} |
| {%- endif %} |
| |
| # Number of security groups allowed per tenant. A negative value means |
| # unlimited. (integer value) |
| #quota_security_group = 10 |
| {%- if server.get('quotas',{}).quota_security_group is defined %} |
| quota_security_group = {{ server.quotas.quota_security_group }} |
| {%- endif %} |
| |
| # Number of security rules allowed per tenant. A negative value means |
| # unlimited. (integer value) |
| #quota_security_group_rule = 100 |
| {%- if server.get('quotas',{}).quota_security_group_rule is defined %} |
| quota_security_group_rule = {{ server.quotas.quota_security_group_rule }} |
| {%- endif %} |
| |
| |
| [ssl] |
| {%- include "oslo_templates/files/queens/oslo/service/_ssl.conf" %} |
| |
| [ovs] |
| {%- if server.backend.ovsdb_interface is defined %} |
| ovsdb_interface = {{ server.backend.ovsdb_interface }} |
| {%- endif %} |
| {%- if server.backend.ovsdb_connection is defined %} |
| ovsdb_connection = {{ server.backend.ovsdb_connection }} |
| {%- endif %} |
| |
| # Advanced services configs |
| |
| {% if server.lbaas is defined -%} |
| {%- include "neutron/files/queens/lbaas.conf" %} |
| {% endif %} |
| |
| {% if server.bgp_vpn is defined -%} |
| {%- include "neutron/files/queens/bgpvpn.conf" %} |
| {% endif %} |
| |
| {% if server.sfc is defined -%} |
| {%- include "neutron/files/queens/plugins/sfc.conf" %} |
| {% endif %} |
| |
| {% if server.n_g_s is defined -%} |
| {%- include "neutron/files/queens/plugins/_n_g_s.conf" %} |
| {% endif %} |
| |
| {%- if server.get('configmap', {}).neutron_server is defined %} |
| {%- set _data = server.configmap.neutron_server %} |
| {%- include "oslo_templates/files/configmap/configmap.conf" %} |
| {%- endif %} |
| |
| {%- if server.backend.get('extension', {}).get('dns', {}).get('enabled', False) and server.backend.get('extension', {}).get('dns', {}).get('engine', '') == 'designate' %} |
| [designate] |
| {%- if server.backend.get('extension', {}).get('dns', {}).get('url', False) %} |
| url = {{ server.backend.extension.dns.url }} |
| {%- else %} |
| #url = <None> |
| {%- endif %} |
| auth_region={{ server.identity.region }} |
| auth_type = password |
| user_domain_id = {{ server.identity.get('domain', 'default') }} |
| project_domain_id = {{ server.identity.get('domain', 'default') }} |
| project_name = {{ server.identity.tenant }} |
| username = {{ server.identity.user }} |
| password = {{ server.identity.password }} |
| auth_url={{ server.identity.get('protocol', 'http') }}://{{ server.identity.host }}:35357 |
| {%- endif %} |