Remove lxb driver support from the role

With neutron removing the lxb driver from their codebase [1],
we have no other choice but remove driver-related logic from our
codebase as well.

[1] 25d0273588

Change-Id: I348ff209a2f2dfe912dc8dd235dc440eca8f2a86
This commit is contained in:
Dmitriy Rabotyagov 2025-04-02 14:50:09 +02:00
parent 2a7e834ad0
commit 4b05664e9c
13 changed files with 23 additions and 286 deletions

View File

@ -153,8 +153,6 @@ neutron_ironic_neutron_agent_ini_overrides: {}
neutron_ironic_neutron_agent_init_overrides: {}
neutron_l3_agent_ini_overrides: {}
neutron_l3_agent_init_overrides: {}
neutron_linuxbridge_agent_ini_overrides: {}
neutron_linuxbridge_agent_init_overrides: {}
neutron_metadata_agent_ini_overrides: {}
neutron_metadata_agent_init_overrides: {}
neutron_metering_agent_ini_overrides: {}

View File

@ -1,202 +0,0 @@
=============================
Scenario - Using Linux Bridge
=============================
Overview
~~~~~~~~
Operators can choose to utilize Linux Bridges instead of Open vSwitch for the
neutron ML2 agent. This document outlines how to set it up in your environment.
.. warning::
LinuxBridge driver is considered as experimental in Neutron and is
discouraged for usage as of today.
Prerequisites
~~~~~~~~~~~~~
All compute nodes must have bridges configured:
- ``br-mgmt`` - Bridge is used to wire LXC containers. Can be regular interface
for bare metal deployments
- ``br-vlan`` (optional - used for vlan networks). Can be regular interface.
- ``br-vxlan`` (optional - used for vxlan tenant networks). Can be regular
interface.
- ``br-storage`` (optional - used for certain storage devices). It's also
used to wire LXC containers. Can be regular interface for bare metal nodes.
For more information see:
`<https://docs.openstack.org/project-deploy-guide/openstack-ansible/newton/targethosts-networkconfig.html>`_
Configuring bridges (Linux Bridge)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following is an example of how to configure a bridge (example: ``br-mgmt``)
with a Linux Bridge on Ubuntu 16.04 LTS:
``/etc/network/interfaces``
.. code-block:: shell-session
auto lo
iface lo inet loopback
# Management network
auto eth0
iface eth0 inet manual
# VLAN network
auto eth1
iface eth1 inet manual
source /etc/network/interfaces.d/*.cfg
``/etc/network/interfaces.d/br-mgmt.cfg``
.. code-block:: shell-session
# OpenStack Management network bridge
auto br-mgmt
iface br-mgmt inet static
bridge_stp off
bridge_waitport 0
bridge_fd 0
bridge_ports eth0
address MANAGEMENT_NETWORK_IP
netmask 255.255.255.0
One ``br-<type>.cfg`` is required for each bridge. VLAN interfaces can be used
to back the ``br-<type>`` bridges if there are limited physical adapters on the
system.
OpenStack-Ansible user variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Specify provider network definitions in your
``/etc/openstack_deploy/openstack_user_config.yml`` that define
one or more Neutron provider bridges and related configuration:
.. code-block:: yaml
- network:
container_bridge: "br-provider"
container_type: "veth"
type: "vlan"
range: "101:200,301:400"
net_name: "physnet1"
network_interface: "bond1"
group_binds:
- neutron_linuxbridge_agent
- network:
container_bridge: "br-provider2"
container_type: "veth"
type: "vlan"
range: "203:203,467:500"
net_name: "physnet2"
network_interface: "bond2"
group_binds:
- neutron_linuxbridge_agent
When using ``flat`` provider networks, modify the network type accordingly:
.. code-block:: yaml
- network:
container_bridge: "br-publicnet"
container_type: "veth"
type: "flat"
net_name: "flat"
group_binds:
- neutron_linuxbridge_agent
Specify an overlay network definition in your
``/etc/openstack_deploy/openstack_user_config.yml`` that defines
overlay network-related configuration:
.. note::
The bridge name should correspond to a pre-created Linux bridge.
.. code-block:: yaml
- network:
container_bridge: "br-vxlan"
container_type: "veth"
container_interface: "eth10"
ip_from_q: "tunnel"
type: "vxlan"
range: "1:1000"
net_name: "vxlan"
group_binds:
- neutron_linuxbridge_agent
Set the following user variables in your
``/etc/openstack_deploy/user_variables.yml``:
.. code-block:: yaml
neutron_plugin_type: ml2.lxb
neutron_ml2_drivers_type: "flat,vlan,vxlan"
neutron_plugin_base:
- router
- metering
The overrides are instructing Ansible to deploy the LXB mechanism driver and
associated LXB components. This is done by setting ``neutron_plugin_type``
to ``ml2.lxb``.
The ``neutron_ml2_drivers_type`` override provides support for all common type
drivers supported by LXB.
The ``neutron_plugin_base`` is used to defined list of plugins that will be
enabled.
If provider network overrides are needed on a global or per-host basis,
the following format can be used in ``user_variables.yml`` or per-host
in ``openstack_user_config.yml``.
.. note::
These overrides are not normally required when defining global provider
networks in the ``openstack_user_config.yml`` file.
.. code-block:: yaml
# When configuring Neutron to support vxlan tenant networks and
# vlan provider networks the configuration may resemble the following:
neutron_provider_networks:
network_types: "vxlan"
network_vxlan_ranges: "1:1000"
network_vlan_ranges: "physnet1:102:199"
network_mappings: "physnet1:br-provider"
network_interface_mappings: "br-provider:bond1"
# When configuring Neutron to support only vlan tenant networks and
# vlan provider networks the configuration may resemble the following:
neutron_provider_networks:
network_types: "vlan"
network_vlan_ranges: "physnet1:102:199"
network_mappings: "physnet1:br-provider"
network_interface_mappings: "br-provider:bond1"
# When configuring Neutron to support multiple vlan provider networks
# the configuration may resemble the following:
neutron_provider_networks:
network_types: "vlan"
network_vlan_ranges: "physnet1:102:199,physnet2:2000:2999"
network_mappings: "physnet1:br-provider,physnet2:br-provider2"
network_interface_mappings: "br-provider:bond1,br-provider2:bond2"
# When configuring Neutron to support multiple vlan and flat provider
# networks the configuration may resemble the following:
neutron_provider_networks:
network_flat_networks: "*"
network_types: "vlan"
network_vlan_ranges: "physnet1:102:199,physnet2:2000:2999"
network_mappings: "physnet1:br-provider,physnet2:br-provider2"
network_interface_mappings: "br-provider:bond1,br-provider2:bond2"

View File

@ -342,7 +342,7 @@ configuration to enable Neutron SR-IOV support.
net_name: "physnet1"
sriov_host_interfaces: "p1p1,p4p1"
group_binds:
- neutron_linuxbridge_agent
- neutron_openvswitch_agent
- neutron_sriov_nic_agent
#. Configure Nova
@ -395,9 +395,7 @@ configuration to enable Neutron SR-IOV support.
The `conf override`_ ``neutron_plugin_types`` variable can contain a list
of additional ML2 plugins to load. Make sure that only compatible
ML2 plugins are loaded at all times.
The SR-IOV ML2 plugin is known to work with the linuxbridge (``ml2.lxb``)
and openvswitch (``ml2.ovs``) ML2 plugins.
``ml2.lxb`` is the standard activated core ML2 plugin.
The SR-IOV ML2 plugin is known to work with openvswitch (``ml2.ovs``) ML2 plugin.
.. code-block:: yaml

View File

@ -6,7 +6,6 @@ Neutron role for OpenStack-Ansible
:maxdepth: 2
configure-network-services.rst
app-linuxbridge.rst
app-openvswitch.rst
app-openvswitch-asap.rst
app-openvswitch-dvr.rst

View File

@ -0,0 +1,20 @@
---
upgrade:
- |
A ``ml2.lxb`` (linuxbridge) plugin has been removed from Neutron for this release and
can not be used anymore. Please, ensure migrating to supported Neutron driver
before proceeding with the upgrade to this OpenStack version.
Unfortunatelly, there is no currently existing automation for such migration.
You can reffer to the blog post `Migrating from LinuxBridge to OVN <https://www.jimmdenton.com/migrating-lxb-to-ovn/>`_
to learn more on how such migrations were achieved previously.
deprecations:
- |
Previously marked as experimental by Neutron linuxbridge (``ml2.lxb``) plugin
has been removed from the codebase.
Please make sure that you are using supported driver before upgrade.
critical:
- |
Previously marked as experimental by Neutron linuxbridge (``ml2.lxb``) plugin
has been removed from the codebase.
Please make sure that you are using supported driver before upgrade.

View File

@ -70,7 +70,7 @@ agent_down_time = {{ neutron_agent_down_time }}
{% set num_l3_agent = (neutron_l3_agents_max | int) if neutron_l3_agents_max is defined else groups[neutron_services['neutron-l3-agent']['group']] | length %}
{% if neutron_plugin_type.split('.')[0] == 'ml2' and num_l3_agent >= 2 %}
{% if neutron_services['neutron-linuxbridge-agent']['service_en'] | bool or neutron_services['neutron-openvswitch-agent']['service_en'] | bool %}
{% if neutron_services['neutron-openvswitch-agent']['service_en'] | bool %}
{% set max_l3_router = num_l3_agent if num_l3_agent > 2 else 2 %}
@ -120,11 +120,6 @@ send_events_interval = 2
# End of [DEFAULT] section
{% if neutron_plugin_type == 'ml2.lxb' %}
[experimental]
linuxbridge = True
{% endif %}
{% if neutron_designate_enabled %}
[designate]

View File

@ -89,18 +89,12 @@ neutron_service_distro_packages:
neutron_optional_ovs_distro_packages:
- neutron-openvswitch-agent
neutron_optional_lxb_distro_packages:
- neutron-linuxbridge-agent
neutron_optional_fwaas_distro_packages:
- python3-neutron-fwaas
neutron_optional_vpnaas_distro_packages:
- neutron-vpnaas-agent
neutron_lxb_distro_packages:
- bridge-utils
neutron_vpnaas_distro_packages:
- strongswan
- libstrongswan-standard-plugins

View File

@ -32,10 +32,6 @@ neutron_package_list: |-
{% set _ = packages.extend(neutron_ovs_distro_packages) %}
{% endif %}
{% endif %}
{% if neutron_services['neutron-linuxbridge-agent']['group'] in group_names and neutron_services['neutron-linuxbridge-agent'].service_en | bool %}
{% set _ = packages.extend(neutron_lxb_distro_packages) %}
{% set _ = packages.extend(neutron_optional_lxb_distro_packages) %}
{% endif %}
{% if neutron_services['neutron-l3-agent']['group'] in group_names and neutron_fwaas_v2 | bool %}
{% set _ = packages.extend(neutron_optional_fwaas_distro_packages) %}
{% endif %}

View File

@ -155,16 +155,6 @@ neutron_metering: "{% if 'metering' in neutron_plugin_base %}True{% else %}False
neutron_plugin_core: "{{ neutron_plugins[neutron_plugin_type].plugin_core }}"
neutron_plugins:
ml2.lxb:
driver_firewall: iptables
driver_interface: linuxbridge
drivers_type: "{{ neutron_ml2_drivers_type }}"
l2_population: "{{ neutron_l2_population }}"
mechanisms: "linuxbridge"
l3_agent_mode: "legacy"
plugin_conf_ini_overrides: "{{ neutron_ml2_conf_ini_overrides }}"
plugin_core: ml2
plugin_ini: plugins/ml2/ml2_conf.ini
ml2.ovs:
driver_firewall: "{{ neutron_firewall_driver | default('iptables_hybrid') }}"
driver_interface: openvswitch
@ -406,20 +396,6 @@ neutron_services:
config_type: "ini"
init_config_overrides: "{{ neutron_openvswitch_agent_init_overrides }}"
start_order: 2
neutron-linuxbridge-agent:
group: neutron_linuxbridge_agent
service_name: neutron-linuxbridge-agent
service_en: "{{ neutron_plugin_type == 'ml2.lxb' }}"
service_conf_path: "{{ neutron_conf_version_dir }}"
service_conf: plugins/ml2/linuxbridge_agent.ini
service_rootwrap: rootwrap.d/linuxbridge-plugin.filters
execstarts: >-
{{ neutron_bin }}/neutron-linuxbridge-agent --config-file {{ neutron_conf_dir }}/neutron.conf
--config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/plugins/ml2/linuxbridge_agent.ini
config_overrides: "{{ neutron_linuxbridge_agent_ini_overrides }}"
config_type: "ini"
init_config_overrides: "{{ neutron_linuxbridge_agent_init_overrides }}"
start_order: 2
neutron-metadata-agent:
group: neutron_metadata_agent
service_name: neutron-metadata-agent

View File

@ -80,18 +80,12 @@ neutron_service_distro_packages:
neutron_optional_ovs_distro_packages:
- openstack-neutron-openvswitch
neutron_optional_lxb_distro_packages:
- openstack-neutron-linuxbridge
neutron_optional_fwaas_distro_packages:
- openstack-neutron-fwaas
neutron_optional_vpnaas_distro_packages:
- openstack-neutron-vpnaas
neutron_lxb_distro_packages:
- bridge-utils
neutron_vpnaas_distro_packages:
- libreswan

View File

@ -31,9 +31,6 @@ neutron_package_list: |-
{% set _ = packages.extend(neutron_ovs_distro_packages) %}
{% endif %}
{% endif %}
{% if neutron_services['neutron-linuxbridge-agent']['group'] in group_names and neutron_services['neutron-linuxbridge-agent'].service_en | bool %}
{% set _ = packages.extend(neutron_lxb_distro_packages) %}
{% endif %}
{% if (neutron_services['neutron-l3-agent']['group'] in group_names or
neutron_services['neutron-ovn-vpn-agent']['group'] in group_names) and neutron_vpnaas | bool %}
{% set _ = packages.extend(neutron_vpnaas_distro_packages) %}

View File

@ -14,16 +14,6 @@
# limitations under the License.
# Ubuntu Focal
- job:
name: openstack-ansible-deploy-aio_lxb_lxc-ubuntu-jammy
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-jammy
- job:
name: openstack-ansible-deploy-aio_lxb_metal-ubuntu-jammy
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-jammy
- job:
name: openstack-ansible-deploy-aio_ovs_lxc-ubuntu-jammy
parent: openstack-ansible-deploy-aio
@ -40,18 +30,8 @@
parent: openstack-ansible-deploy-aio
nodeset: centos-9-stream
- job:
name: openstack-ansible-deploy-aio_lxb_lxc-centos-9-stream
parent: openstack-ansible-deploy-aio
nodeset: centos-9-stream
# Rocky 9
- job:
name: openstack-ansible-deploy-aio_metal_ovs-rockylinux-9
parent: openstack-ansible-deploy-aio
nodeset: rockylinux-9
- job:
name: openstack-ansible-deploy-aio_lxb_metal-rockylinux-9
parent: openstack-ansible-deploy-aio
nodeset: rockylinux-9

View File

@ -28,16 +28,8 @@
- openstack-ansible-deploy-aio_ovs_lxc-centos-9-stream:
voting: false
- openstack-ansible-deploy-aio_metal_ovs-rockylinux-9
- openstack-ansible-deploy-aio_lxb_lxc-centos-9-stream:
voting: false
- openstack-ansible-deploy-aio_lxb_metal-rockylinux-9
- openstack-ansible-deploy-aio_lxb_lxc-ubuntu-jammy
- openstack-ansible-deploy-aio_lxb_metal-ubuntu-jammy
gate:
jobs:
- openstack-ansible-deploy-aio_ovs_lxc-ubuntu-jammy
- openstack-ansible-deploy-aio_metal_ovs-ubuntu-jammy
- openstack-ansible-deploy-aio_metal_ovs-rockylinux-9
- openstack-ansible-deploy-aio_lxb_metal-rockylinux-9
- openstack-ansible-deploy-aio_lxb_lxc-ubuntu-jammy
- openstack-ansible-deploy-aio_lxb_metal-ubuntu-jammy