diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 4be4bfaae9..9657cc1804 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -353,6 +353,7 @@ enable_neutron_fwaas: "no" enable_neutron_qos: "no" enable_neutron_agent_ha: "no" enable_neutron_bgp_dragent: "no" +enable_neutron_provider_networks: "no" enable_nova_serialconsole_proxy: "no" enable_octavia: "no" enable_openvswitch: "{{ neutron_plugin_agent != 'linuxbridge' | bool }}" @@ -498,6 +499,8 @@ designate_ns_record: "sample.openstack.org" neutron_bgp_router_id: "1.1.1.1" neutron_bridge_name: "br-ex" +computes_need_external_bridge: "{{ enable_neutron_dvr | bool or enable_neutron_provider_networks | bool }}" + ####################### # Nova options ####################### diff --git a/ansible/roles/neutron/templates/ml2_conf.ini.j2 b/ansible/roles/neutron/templates/ml2_conf.ini.j2 index b18e822a6e..6f905248c7 100644 --- a/ansible/roles/neutron/templates/ml2_conf.ini.j2 +++ b/ansible/roles/neutron/templates/ml2_conf.ini.j2 @@ -59,7 +59,7 @@ extensions = qos {% endif %} [ovs] -{% if inventory_hostname in groups["network"] or (inventory_hostname in groups["compute"] and enable_neutron_dvr | bool) %} +{% if inventory_hostname in groups["network"] or (inventory_hostname in groups["compute"] and computes_need_external_bridge ) %} bridge_mappings = {% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %} {% endif %} diff --git a/ansible/roles/openvswitch/handlers/main.yml b/ansible/roles/openvswitch/handlers/main.yml index 7e4a720b87..155536d836 100644 --- a/ansible/roles/openvswitch/handlers/main.yml +++ b/ansible/roles/openvswitch/handlers/main.yml @@ -36,7 +36,7 @@ changed_when: status.stdout.find('changed') != -1 when: - inventory_hostname in groups["network"] - or (inventory_hostname in groups["compute"] and enable_neutron_dvr | bool) + or (inventory_hostname in groups["compute"] and computes_need_external_bridge) with_together: - "{{ neutron_bridge_name.split(',') }}" - "{{ neutron_external_interface.split(',') }}" diff --git a/doc/networking-guide.rst b/doc/networking-guide.rst index e9542725f3..e4db822f5c 100644 --- a/doc/networking-guide.rst +++ b/doc/networking-guide.rst @@ -1,5 +1,21 @@ .. _networking-guide: +============================ +Enabling Provider Networks +============================ +Provider networks allow to connect compute instances directly to physical networks avoiding tunnels. +This is necessary for example for some performance critical applications. Only administrators of +OpenStack can create such networks. For provider networks compute hosts must have external bridge +created and configured by Ansible tasks like it is already done for tenant DVR mode networking. +Normal tenant non-DVR networking does not need external bridge on compute hosts and therefore +operators don't need additional dedicated network interface. + +To enable provider networks modify the configuration file ``/etc/kolla/globals.yml``: + +:: + + enable_neutron_provider_networks: "yes" + ============================ Enabling Neutron Extensions ============================ diff --git a/releasenotes/notes/add-flag-for-provider-networks-3fb5de28ba89b128.yaml b/releasenotes/notes/add-flag-for-provider-networks-3fb5de28ba89b128.yaml new file mode 100644 index 0000000000..61b4c44553 --- /dev/null +++ b/releasenotes/notes/add-flag-for-provider-networks-3fb5de28ba89b128.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + Add a new flag to explicitly enable provider networks, i.e. networks where + instances directly connect to the physical networks (flat,VLAN). In such + cases external bridges must be configured on compute nodes, like it is done + for self-service (tenant manageable) networks in DVR mode. Otherwise this flag + allows to avoid unnecessary interface and bridge setup on compute nodes + in case of tenant networks in non-DVR mode. +upgrade: + - | + By default this flag is disabled. If provider networks were used in previous + releases please set 'enable_neutron_provider_networks' property to 'yes'.