diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml index 7e46c4326ec018db0b8c5a306c041989ec2fde1e..09bb89fb81335c0ddc62f92193e879ec0921a933 100644 --- a/ansible/roles/neutron/defaults/main.yml +++ b/ansible/roles/neutron/defaults/main.yml @@ -71,7 +71,7 @@ neutron_services: container_name: "neutron_dhcp_agent" image: "{{ neutron_dhcp_agent_image_full }}" privileged: True - enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3'] }}" + enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3'] or neutron_ovn_dhcp_agent | bool }}" group: "neutron-dhcp-agent" host_in_groups: "{{ inventory_hostname in groups['neutron-dhcp-agent'] }}" volumes: "{{ neutron_dhcp_agent_default_volumes + neutron_dhcp_agent_extra_volumes }}" @@ -730,6 +730,11 @@ notification_drivers: [] neutron_notification_drivers: "{{ notification_drivers | selectattr('enabled', 'equalto', true) | list }}" +###################### +# OVN +###################### +neutron_ovn_dhcp_agent: "no" + #################### # Kolla #################### diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2 index f63dbac96fb5ba58d7f4d9822f9d80931519c002..4766a20b74c31eb6f57ce16031fa3411ee346670 100644 --- a/ansible/roles/neutron/templates/neutron.conf.j2 +++ b/ansible/roles/neutron/templates/neutron.conf.j2 @@ -27,7 +27,7 @@ rpc_state_report_workers = {{ openstack_service_rpc_workers }} # in it is because we are sharing this socket in a volume which is it's own dir metadata_proxy_socket = /var/lib/neutron/kolla/metadata_proxy -{% if neutron_plugin_agent == "openvswitch" %} +{% if neutron_plugin_agent == "openvswitch" or (neutron_plugin_agent == "ovn" and neutron_ovn_dhcp_agent | bool) %} interface_driver = openvswitch {% elif neutron_plugin_agent == "linuxbridge" %} interface_driver = linuxbridge diff --git a/doc/source/reference/networking/neutron.rst b/doc/source/reference/networking/neutron.rst index 774795633263c12fecebb2fe138a2b7bcdedc681..b96d39503edc2646fd6016381083e222501973cd 100644 --- a/doc/source/reference/networking/neutron.rst +++ b/doc/source/reference/networking/neutron.rst @@ -80,6 +80,18 @@ To change this behaviour you need to set the following: neutron_ovn_distributed_fip: "yes" +Similarly - in order to have Neutron DHCP agents deployed in OVN networking +scenario, use: + +.. path /etc/kolla/globals.yml +.. code-block:: yaml + + neutron_ovn_dhcp_agent: "yes" + +This might be desired for example when Ironic bare metal nodes are +used as a compute service. Currently OVN is not able to answer DHCP +queries on port type external, this is where Neutron agent helps. + Mellanox Infiniband (ml2/mlnx) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 198cf87e9086b4656fe4242989222ce2a636ee46..cf16376843548f824240020b94572daf3c3552f1 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -556,6 +556,9 @@ # Enable distributed floating ip for OVN deployments #neutron_ovn_distributed_fip: "no" +# Enable DHCP agent(s) to use with OVN +#neutron_ovn_dhcp_agent: "no" + ############################# # Horizon - Dashboard Options ############################# diff --git a/releasenotes/notes/ovn-neutron-dhcp-agent-21aaafe5e1cda501.yaml b/releasenotes/notes/ovn-neutron-dhcp-agent-21aaafe5e1cda501.yaml new file mode 100644 index 0000000000000000000000000000000000000000..976f0c7191ee148e2b7ee639806ff96c80621c8d --- /dev/null +++ b/releasenotes/notes/ovn-neutron-dhcp-agent-21aaafe5e1cda501.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + It is now possible to use Neutron DHCP agent together with OVN + networking. New variable is added to control this feature: + ``neutron_ovn_dhcp_agent``, defaulting to ``no``.