Fix connectivity between multinode devstack jobs

To have connectivity through public network to the vms which are on
various nodes in the ci job, we need to configure special bridge called
"br-infra" and connect this bridge with br-ex with patch ports.
This can be done using "multi-node-bridge" role from zuul roles and
"multi-node-setup" added to this repository.

Change-Id: I80d7d2bed8291ba21ddc68b48fef5d0aac996b39
This commit is contained in:
Slawek Kaplonski 2020-12-07 14:09:34 +01:00 committed by Federico Ressi
parent f0bb306fec
commit d833b3d2ee
6 changed files with 64 additions and 1 deletions

View File

@ -2,7 +2,7 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.3.0
rev: v3.4.0
hooks:
- id: check-added-large-files
- id: check-byte-order-marker

View File

@ -0,0 +1,3 @@
- hosts: all
roles:
- multi-node-setup

View File

@ -0,0 +1,23 @@
Set up connection between infra bridge and Neutron external bridge
Network topology used in CI multinode jobs is described In `Devstack documention
<https://opendev.org/openstack/devstack-gate/src/branch/master/multinode_setup_info.txt#L81>`_
In case when DVR is used, there is also additional bridge ``br-infra`` added
on each node to provide connectivity to floating IPs from main node.
This bridge needs to be connected with bridge used by Neutron as
external bridge. Typically it is ``br-ex`` and this role adds patch ports
between those bridges.
**Role Variables**
.. zuul:rolevar:: neutron_external_bridge_name
:default: br-ex
Name of the Neutron external bridge.
.. zuul:rolevar:: infra_bridge_name
:default: br-infra
Name of the infra bridge.

View File

@ -0,0 +1,4 @@
---
infra_bridge_name: br-infra
neutron_external_bridge_name: br-ex

View File

@ -0,0 +1,32 @@
---
- name: Configure Neutron bridge for multi node setup
when: "( ansible_play_hosts | length ) > 1"
block:
- name: Ensure the infra bridge exists
become: true
openvswitch_bridge:
bridge: "{{ infra_bridge_name }}"
state: present
fail_mode: standalone
- name: Ensure the Neutron external bridge exists
become: true
openvswitch_bridge:
bridge: "{{ neutron_external_bridge_name }}"
state: present
fail_mode: standalone
- name: Create patch port between bridges
become: true
command: >-
ovs-vsctl
--may-exist add-port {{ infra_bridge_name }}
patch-{{ neutron_external_bridge_name }} --
set interface patch-{{ neutron_external_bridge_name }}
type=patch options:peer=patch-{{ infra_bridge_name }} --
--may-exist add-port {{ neutron_external_bridge_name }}
patch-{{ infra_bridge_name }} --
set interface patch-{{ infra_bridge_name }}
type=patch options:peer=patch-{{ neutron_external_bridge_name }}

View File

@ -228,6 +228,7 @@
abstract: true
description: Base DevStack Tobiko job with multinode.
timeout: 10800
pre-run: playbooks/multinode-setup.yaml
vars:
topology: multinode
devstack_localrc: