Add support for OVN in MNAIO deploy

This patch adds support for deploying the ML2/Open Virtual Network (OVN)
plugin for Neutron to an MNAIO deployment. A new var,
osa_enable_networking_ovn, can be set to lay down the appropriate bits.

Change-Id: Ib5bd4e0c20be62ddbf0bff13c91d1918907bf230
This commit is contained in:
James Denton 2019-01-11 19:25:14 +00:00 committed by Kevin Carter (cloudnull)
parent a1d6ebe4d3
commit e6f12e2069
10 changed files with 168 additions and 9 deletions

View File

@ -48,6 +48,19 @@ Physical Host Specs known to work well
These specs are covered by the Rackspace OnMetal-IO v1/2 Servers.
Deployments default to the ML2/LinuxBridge network plugin. Available options
at this time include:
* ML2/LinuxBridge
* ML2/Open Virtual Network (OVN)
To deploy an MNAIO with support for OVN, set the following parameter(s) prior
to executing the build:
.. code-block:: bash
export MNAIO_ANSIBLE_PARAMETERS="-e osa_enable_networking_ovn=true"
./build.sh
When your ready, run the build script by executing ``bash ./build.sh``. The
build script current executes a deployment of OpenStack Ansible using the master
branch. If you want to do something other than deploy master you can set the

View File

@ -51,6 +51,16 @@
when:
- pre_config_osa | default(true) | bool
- name: Create OSA group_vars directory
file:
path: "/etc/openstack_deploy/group_vars"
state: directory
owner: "root"
group: "root"
mode: "0755"
when:
- pre_config_osa | default(true) | bool
- name: Copy default config files and directories
shell: >-
rsync
@ -98,6 +108,39 @@
- pre_config_osa | default(true) | bool
- osa_disable_serial | default(false) | bool
- name: Drop OVS group_vars config
template:
src: "osa/ovs_network_hosts_group.yml"
dest: "/etc/openstack_deploy/group_vars/network_hosts"
mode: "0644"
owner: root
group: root
when:
- pre_config_osa | default(true) | bool
- osa_enable_networking_ovn | default(false) | bool
- name: Drop NEUTRON OVN env.d config
template:
src: "osa/neutron-ovn-envd.yml"
dest: "/etc/openstack_deploy/env.d/neutron.yml"
mode: "0644"
owner: root
group: root
when:
- pre_config_osa | default(true) | bool
- osa_enable_networking_ovn | default(false) | bool
- name: Drop NOVA OVN env.d config
template:
src: "osa/nova-ovn-envd.yml"
dest: "/etc/openstack_deploy/env.d/nova.yml"
mode: "0644"
owner: root
group: root
when:
- pre_config_osa | default(true) | bool
- osa_enable_networking_ovn | default(false) | bool
- name: Drop ELK env.d config
template:
src: "osa/elk-envd.yml"

View File

@ -154,6 +154,7 @@ osa_enable_compute: true
osa_enable_orchestration: true
osa_enable_dashboard: true
osa_enable_network: true
osa_enable_networking_ovn: false
osa_enable_meter: false
osa_enable_object_storage: "{{ not (enable_ceph_storage | bool) }}"
osa_enable_legacy_os_infra: "{{ (osa_enable_image | bool) and (osa_enable_orchestration | bool) and (osa_enable_dashboard | bool) and (osa_enable_compute | bool) }}"

View File

@ -50,9 +50,23 @@
provider_network_type: "{{ item.network_type }}"
provider_physical_network: "{{ item.physical_network | default ('') }}"
with_items: "{{ networks }}"
when: not (osa_enable_networking_ovn | bool)
tags:
- create_networks
- name: Create networks (OVN)
os_network:
endpoint_type: internal
cloud: default
state: present
name: "{{ item.name }}"
shared: "{{ item.shared }}"
external: "{{ item.external }}"
provider_network_type: "{{ item.network_type }}"
provider_physical_network: "{{ item.physical_network | default ('') }}"
with_items: "{{ networks_ovn }}"
when: osa_enable_networking_ovn | default(false) | bool
- name: Create subnets on networks
os_subnet:
endpoint_type: internal

View File

@ -0,0 +1,17 @@
---
component_skel:
neutron_ovn_controller:
belongs_to:
- neutron_all
neutron_ovn_northd:
belongs_to:
- neutron_all
container_skel:
neutron_agents_container:
contains: {}
neutron_ovn_northd_container:
belongs_to:
- network_containers
contains:
- neutron_ovn_northd

View File

@ -0,0 +1,14 @@
---
container_skel:
nova_compute_container:
belongs_to:
- compute_containers
- kvm-compute_containers
- lxd-compute_containers
- qemu-compute_containers
- powervm-compute_containers
contains:
- neutron_ovn_controller
- nova_compute
properties:
is_metal: true

View File

@ -30,6 +30,37 @@ global_overrides:
- hosts
is_container_address: true
is_ssh_address: true
{% if osa_enable_networking_ovn | bool %}
- network:
container_bridge: "br-vxlan"
container_type: "veth"
container_interface: "eth10"
ip_from_q: "tunnel"
type: "geneve"
range: "1:1000"
net_name: "geneve"
group_binds:
- neutron_ovn_controller
- network:
container_bridge: "br-provider"
container_type: "veth"
container_interface: "eth11"
network_interface: "br-vlan"
type: "vlan"
range: "1:1"
net_name: "vlan"
group_binds:
- neutron_ovn_controller
- network:
container_bridge: "br-provider"
container_type: "veth"
container_interface: "eth12"
network_interface: "br-vlan"
type: "flat"
net_name: "flat"
group_binds:
- neutron_ovn_controller
{% else %}
- network:
container_bridge: "br-vxlan"
container_type: "veth"
@ -40,6 +71,15 @@ global_overrides:
net_name: "vxlan"
group_binds:
- neutron_linuxbridge_agent
- network:
container_bridge: "br-vlan"
container_type: "veth"
container_interface: "eth11"
type: "vlan"
range: "1:1"
net_name: "vlan"
group_binds:
- neutron_linuxbridge_agent
- network:
container_bridge: "br-flat"
container_type: "veth"
@ -50,15 +90,7 @@ global_overrides:
group_binds:
- neutron_linuxbridge_agent
- utility_all
- network:
container_bridge: "br-vlan"
container_type: "veth"
container_interface: "eth11"
type: "vlan"
range: "1:1"
net_name: "vlan"
group_binds:
- neutron_linuxbridge_agent
{% endif %}
- network:
container_bridge: "br-storage"
container_type: "veth"

View File

@ -0,0 +1,4 @@
# Ensure the openvswitch kernel module is loaded
openstack_host_specific_kernel_modules:
- name: "openvswitch"
pattern: "CONFIG_OPENVSWITCH"

View File

@ -189,3 +189,12 @@ magnum_api_uwsgi_ini_overrides:
uwsgi:
stats: "/tmp/magnum-api-uwsgi-stats.sock"
{% endif %}
{% if osa_enable_networking_ovn | bool %}
neutron_plugin_type: ml2.ovn
neutron_plugin_base:
- networking_ovn.l3.l3_ovn.OVNL3RouterPlugin
neutron_ml2_drivers_type: "vlan,local,flat,geneve"
{% endif %}

View File

@ -75,6 +75,18 @@ networks:
network_type: vxlan
segmentation_id: 101
networks_ovn:
- name: "{{ provider_net_name }}"
shared: true
external: true
network_type: flat
physical_network: flat
- name: "{{ private_net_name }}"
shared: true
external: true
network_type: geneve
segmentation_id: 101
subnets:
- name: "{{ provider_subnet_name }}"
network_name: "{{ provider_net_name }}"