From 6053eb196488a086449f5f2e4fe807825a16bd51 Mon Sep 17 00:00:00 2001 From: Daniel Alvarez Date: Fri, 17 Aug 2018 15:57:18 +0200 Subject: [PATCH] Switch default neutron ML2 mechanism driver to OVN This patch switches the default mechanism driver for neutron from openvswitch to OVN. It will also flip scenario007 job to run with ML2/OVS. Depends-On: I74ffb6b7f912e1fce6ce428cd23a7283c91b8b96 Depends-On: I99ba2fd6a85b4895b577719a7541b7cbf1fdb85c Depends-On: Ib60de9b0df451273d1d81ba049b46b5214e09080 Depends-On: Iaed7304adf40a87a0f14b7a95339f8416140e947 Change-Id: Iab52cdf5d0f7a392c4f17c884493b5c5beb1d89f Co-Authored-By: Kamil Sambor --- README.rst | 2 +- ci/environments/multinode-containers.yaml | 8 +- .../network-environment.yaml | 2 +- .../nic-configs/compute-dvr.yaml | 189 ++++++++++++++++++ .../multiple-nics/network-environment.yaml | 2 +- .../nic-configs/compute-dvr.yaml | 188 +++++++++++++++++ ci/environments/ovb-ha.yaml | 12 +- .../scenario001-multinode-containers.yaml | 7 +- .../scenario002-multinode-containers.yaml | 7 +- .../scenario003-multinode-containers.yaml | 7 +- .../scenario004-multinode-containers.yaml | 7 +- .../scenario006-multinode-containers.yaml | 7 +- .../scenario007-multinode-containers.yaml | 44 ++-- .../scenario008-multinode-containers.yaml | 4 + .../scenario010-multinode-containers.yaml | 7 +- .../scenario012-multinode-containers.yaml | 9 +- ...er-image-prepare-baremetal-ansible.j2.yaml | 2 +- .../kernel/kernel-baremetal-puppet.yaml | 2 +- .../neutron/neutron-api-container-puppet.yaml | 13 +- .../neutron-ovs-agent-container-puppet.yaml | 11 +- environments/neutron-ovs-dvr.yaml | 25 ++- environments/services/neutron-ovs-dvr.yaml | 29 ++- environments/services/neutron-ovs.yaml | 35 ++++ .../standalone/standalone-tripleo.yaml | 1 + environments/undercloud.yaml | 9 + .../update-from-ml2-ovs-from-rocky.yaml | 8 + overcloud-resource-registry-puppet.j2.yaml | 24 ++- puppet/services/neutron-base.yaml | 2 +- puppet/services/neutron-plugin-ml2-ovn.yaml | 16 +- puppet/services/neutron-plugin-ml2.yaml | 8 +- ...o-default-ovn-driver-ab4ae9d348158d61.yaml | 16 ++ sample-env-generator/standalone.yaml | 3 + 32 files changed, 612 insertions(+), 94 deletions(-) create mode 100644 ci/environments/network/multiple-nics-ipv6/nic-configs/compute-dvr.yaml create mode 100644 ci/environments/network/multiple-nics/nic-configs/compute-dvr.yaml create mode 100644 environments/services/neutron-ovs.yaml create mode 100644 environments/updates/update-from-ml2-ovs-from-rocky.yaml create mode 100644 releasenotes/notes/switch-to-default-ovn-driver-ab4ae9d348158d61.yaml diff --git a/README.rst b/README.rst index 279a9ea93f..215778dcd6 100644 --- a/README.rst +++ b/README.rst @@ -82,7 +82,7 @@ and should be executed according to the following table: +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ | mysql | X | X | X | X | X | X | X | | X | X | X | +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ -| neutron | | ovs | ovs | ovs | ovs | ovs | ovn | | ovs | ovs | ovs | +| neutron | | ovn | ovn | ovn | ovn | ovn | ovs | | ovn | ovn | ovn | +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ | neutron-bgpvpn | | | | | wip | | | | | | | +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ diff --git a/ci/environments/multinode-containers.yaml b/ci/environments/multinode-containers.yaml index f888d961a9..1881d08b38 100644 --- a/ci/environments/multinode-containers.yaml +++ b/ci/environments/multinode-containers.yaml @@ -4,6 +4,7 @@ resource_registry: # Some infra instances don't pass the ping test but are otherwise working. # Since the OVB jobs also test this functionality we can shut it off here. OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml + OS::TripleO::Services::OVNDBs: ../../docker/services/ovn-dbs.yaml parameter_defaults: ControllerServices: @@ -16,12 +17,11 @@ parameter_defaults: - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/network/multiple-nics-ipv6/network-environment.yaml b/ci/environments/network/multiple-nics-ipv6/network-environment.yaml index b429bf5000..1a648880b7 100644 --- a/ci/environments/network/multiple-nics-ipv6/network-environment.yaml +++ b/ci/environments/network/multiple-nics-ipv6/network-environment.yaml @@ -1,7 +1,7 @@ resource_registry: OS::TripleO::BlockStorage::Net::SoftwareConfig: nic-configs/cinder-storage.yaml - OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml + OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute-dvr.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::ObjectStorage::Net::SoftwareConfig: nic-configs/swift-storage.yaml OS::TripleO::CephStorage::Net::SoftwareConfig: nic-configs/ceph-storage.yaml diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/compute-dvr.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/compute-dvr.yaml new file mode 100644 index 0000000000..ab428e0d26 --- /dev/null +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/compute-dvr.yaml @@ -0,0 +1,189 @@ +heat_template_version: rocky + +parameters: + ControlPlaneIp: + default: '' + description: IP address/subnet on the ctlplane network + type: string + InternalApiIpSubnet: + default: '' + description: IP address/subnet on the internal_api network + type: string + InternalApiInterfaceRoutes: + default: [] + description: > + Routes for the internal_api network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number + StorageIpSubnet: + default: '' + description: IP address/subnet on the storage network + type: string + StorageInterfaceRoutes: + default: [] + description: > + Routes for the storage network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number + TenantIpSubnet: + default: '' + description: IP address/subnet on the tenant network + type: string + TenantInterfaceRoutes: + default: [] + description: > + Routes for the tenant network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number + BondInterfaceOvsOptions: + default: 'bond_mode=active-backup' + description: The ovs_options string for the bond interface. Set things like + lacp=active and/or bond_mode=balance-slb using this option. + type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number + ControlPlaneSubnetCidr: + default: '' + description: > + The subnet CIDR of the control plane network. (The parameter is + automatically resolved from the ctlplane subnet's cidr attribute.) + type: string + ControlPlaneDefaultRoute: + default: '' + description: The default route of the control plane network. (The parameter + is automatically resolved from the ctlplane subnet's gateway_ip attribute.) + type: string + ControlPlaneStaticRoutes: + default: [] + description: > + Routes for the ctlplane network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number + DnsServers: # Override this via parameter_defaults + default: [] + description: > + DNS servers to use for the Overcloud (2 max for some implementations). + If not set the nameservers configured in the ctlplane subnet's + dns_nameservers attribute will be used. + type: comma_delimited_list + EC2MetadataIp: + default: '' + description: The IP address of the EC2 metadata server. (The parameter + is automatically resolved from the ctlplane subnet's host_routes attribute.) + type: string + ExternalInterfaceDefaultRoute: + default: '10.0.0.1' + description: default route for the external network + type: string + + +resources: + OsNetConfigImpl: + properties: + config: + str_replace: + params: + $network_config: + network_config: + - type: interface + name: nic1 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: + list_join: + - / + - - {get_param: ControlPlaneIp} + - {get_param: ControlPlaneSubnetCidr} + routes: + - default: true + ip_netmask: 0.0.0.0/0 + next_hop: {get_param: ControlPlaneDefaultRoute} + - ip_netmask: 169.254.169.254/32 + next_hop: {get_param: EC2MetadataIp} + - type: interface + name: nic3 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: {get_param: InternalApiIpSubnet} + - type: interface + name: nic4 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: {get_param: StorageIpSubnet} + - type: ovs_bridge + name: br-tenant + dns_servers: {get_param: DnsServers} + use_dhcp: false + addresses: + - ip_netmask: {get_param: TenantIpSubnet} + members: + - type: interface + name: nic6 + mtu: 1350 + primary: true + - type: ovs_bridge + name: br-ex + dns_servers: {get_param: DnsServers} + use_dhcp: false + routes: + - ip_netmask: 0.0.0.0/0 + next_hop: {get_param: ExternalInterfaceDefaultRoute} + members: + - type: interface + name: nic2 + mtu: 1350 + primary: true + template: + get_file: ../../../../../network/scripts/run-os-net-config.sh + group: script + type: OS::Heat::SoftwareConfig + +outputs: + OS::stack_id: + description: The OsNetConfigImpl resource. + value: {get_resource: OsNetConfigImpl} diff --git a/ci/environments/network/multiple-nics/network-environment.yaml b/ci/environments/network/multiple-nics/network-environment.yaml index 4ecaf3a3eb..457b452593 100644 --- a/ci/environments/network/multiple-nics/network-environment.yaml +++ b/ci/environments/network/multiple-nics/network-environment.yaml @@ -1,7 +1,7 @@ resource_registry: OS::TripleO::BlockStorage::Net::SoftwareConfig: nic-configs/cinder-storage.yaml - OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml + OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute-dvr.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::ObjectStorage::Net::SoftwareConfig: nic-configs/swift-storage.yaml OS::TripleO::CephStorage::Net::SoftwareConfig: nic-configs/ceph-storage.yaml diff --git a/ci/environments/network/multiple-nics/nic-configs/compute-dvr.yaml b/ci/environments/network/multiple-nics/nic-configs/compute-dvr.yaml new file mode 100644 index 0000000000..162ad0c02a --- /dev/null +++ b/ci/environments/network/multiple-nics/nic-configs/compute-dvr.yaml @@ -0,0 +1,188 @@ +heat_template_version: rocky + +parameters: + ControlPlaneIp: + default: '' + description: IP address/subnet on the ctlplane network + type: string + InternalApiIpSubnet: + default: '' + description: IP address/subnet on the internal_api network + type: string + InternalApiInterfaceRoutes: + default: [] + description: > + Routes for the internal_api network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number + StorageIpSubnet: + default: '' + description: IP address/subnet on the storage network + type: string + StorageInterfaceRoutes: + default: [] + description: > + Routes for the storage network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number + TenantIpSubnet: + default: '' + description: IP address/subnet on the tenant network + type: string + TenantInterfaceRoutes: + default: [] + description: > + Routes for the tenant network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number + BondInterfaceOvsOptions: + default: 'bond_mode=active-backup' + description: The ovs_options string for the bond interface. Set things like + lacp=active and/or bond_mode=balance-slb using this option. + type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number + ControlPlaneSubnetCidr: + default: '' + description: > + The subnet CIDR of the control plane network. (The parameter is + automatically resolved from the ctlplane subnet's cidr attribute.) + type: string + ControlPlaneDefaultRoute: + default: '' + description: The default route of the control plane network. (The parameter + is automatically resolved from the ctlplane subnet's gateway_ip attribute.) + type: string + ControlPlaneStaticRoutes: + default: [] + description: > + Routes for the ctlplane network traffic. + JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] + Unless the default is changed, the parameter is automatically resolved + from the subnet host_routes attribute. + type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number + DnsServers: # Override this via parameter_defaults + default: [] + description: > + DNS servers to use for the Overcloud (2 max for some implementations). + If not set the nameservers configured in the ctlplane subnet's + dns_nameservers attribute will be used. + type: comma_delimited_list + EC2MetadataIp: + default: '' + description: The IP address of the EC2 metadata server. (The parameter + is automatically resolved from the ctlplane subnet's host_routes attribute.) + type: string + ExternalInterfaceDefaultRoute: + default: '10.0.0.1' + description: default route for the external network + type: string + + +resources: + OsNetConfigImpl: + type: OS::Heat::SoftwareConfig + properties: + group: script + config: + str_replace: + template: + get_file: ../../../../../network/scripts/run-os-net-config.sh + params: + $network_config: + network_config: + - type: interface + name: nic1 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: + list_join: + - / + - - {get_param: ControlPlaneIp} + - {get_param: ControlPlaneSubnetCidr} + routes: + - ip_netmask: 169.254.169.254/32 + next_hop: {get_param: EC2MetadataIp} + - default: true + next_hop: {get_param: ControlPlaneDefaultRoute} + - type: ovs_bridge + name: br-ex + dns_servers: {get_param: DnsServers} + use_dhcp: false + routes: + - ip_netmask: 0.0.0.0/0 + next_hop: {get_param: ExternalInterfaceDefaultRoute} + members: + - type: interface + name: nic2 + mtu: 1350 + primary: true + - type: interface + name: nic3 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: {get_param: InternalApiIpSubnet} + - type: interface + name: nic4 + mtu: 1350 + use_dhcp: false + addresses: + - ip_netmask: {get_param: StorageIpSubnet} + - type: ovs_bridge + name: br-tenant + dns_servers: {get_param: DnsServers} + use_dhcp: false + addresses: + - ip_netmask: {get_param: TenantIpSubnet} + members: + - type: interface + name: nic6 + mtu: 1350 + primary: true + +outputs: + OS::stack_id: + description: The OsNetConfigImpl resource. + value: {get_resource: OsNetConfigImpl} diff --git a/ci/environments/ovb-ha.yaml b/ci/environments/ovb-ha.yaml index e7465541e7..25db451503 100644 --- a/ci/environments/ovb-ha.yaml +++ b/ci/environments/ovb-ha.yaml @@ -16,10 +16,6 @@ parameter_defaults: - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronCorePlugin - OS::TripleO::Services::NeutronApi - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - - OS::TripleO::Services::NeutronOvsAgent - OS::TripleO::Services::NovaApi - OS::TripleO::Services::NovaConductor - OS::TripleO::Services::NovaMetadata @@ -37,10 +33,11 @@ parameter_defaults: - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNDBs + ComputeServices: - OS::TripleO::Services::CACerts - - OS::TripleO::Services::ComputeNeutronCorePlugin - - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid @@ -54,6 +51,9 @@ parameter_defaults: - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent + ControllerExtraConfig: nova::compute::libvirt::services::libvirt_virt_type: qemu nova::compute::libvirt::libvirt_virt_type: qemu diff --git a/ci/environments/scenario001-multinode-containers.yaml b/ci/environments/scenario001-multinode-containers.yaml index 62596987c4..ea2e3dae51 100644 --- a/ci/environments/scenario001-multinode-containers.yaml +++ b/ci/environments/scenario001-multinode-containers.yaml @@ -44,12 +44,11 @@ parameter_defaults: - OS::TripleO::Services::HeatEngine - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/scenario002-multinode-containers.yaml b/ci/environments/scenario002-multinode-containers.yaml index f365958a57..9395295f68 100644 --- a/ci/environments/scenario002-multinode-containers.yaml +++ b/ci/environments/scenario002-multinode-containers.yaml @@ -36,12 +36,11 @@ parameter_defaults: - OS::TripleO::Services::HeatEngine - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/scenario003-multinode-containers.yaml b/ci/environments/scenario003-multinode-containers.yaml index 62ba29a0b6..13fb721cd0 100644 --- a/ci/environments/scenario003-multinode-containers.yaml +++ b/ci/environments/scenario003-multinode-containers.yaml @@ -35,12 +35,11 @@ parameter_defaults: - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/scenario004-multinode-containers.yaml b/ci/environments/scenario004-multinode-containers.yaml index c4a6d92a33..5ccbf0ac85 100644 --- a/ci/environments/scenario004-multinode-containers.yaml +++ b/ci/environments/scenario004-multinode-containers.yaml @@ -51,12 +51,11 @@ parameter_defaults: - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/scenario006-multinode-containers.yaml b/ci/environments/scenario006-multinode-containers.yaml index 6ee5cd5220..e367df7e0c 100644 --- a/ci/environments/scenario006-multinode-containers.yaml +++ b/ci/environments/scenario006-multinode-containers.yaml @@ -19,12 +19,11 @@ parameter_defaults: - OS::TripleO::Services::IronicPxe - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy diff --git a/ci/environments/scenario007-multinode-containers.yaml b/ci/environments/scenario007-multinode-containers.yaml index 3e57c0ab02..e38ff8f667 100644 --- a/ci/environments/scenario007-multinode-containers.yaml +++ b/ci/environments/scenario007-multinode-containers.yaml @@ -1,10 +1,16 @@ resource_registry: OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode-os-net-config.yaml OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode-os-net-config.yaml - OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-ovn.yaml - OS::TripleO::Services::OVNController: ../../docker/services/ovn-controller.yaml - OS::TripleO::Services::OVNDBs: ../../docker/services/ovn-dbs.yaml - OS::TripleO::Services::OVNMetadataAgent: ../../docker/services/ovn-metadata.yaml + OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::NeutronServer: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronApi: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronCorePlugin: ../../docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::NeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + # Some infra instances don't pass the ping test but are otherwise working. # Since the OVB jobs also test this functionality we can shut it off here. OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml @@ -12,6 +18,10 @@ resource_registry: OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftStorage: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None + # Disable OVN services + OS::TripleO::Services::OVNController: OS::Heat::None + OS::TripleO::Services::OVNDBs: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None # TODO(mandre) fix the tacker service - https://bugs.launchpad.net/tripleo/+bug/1714270 # OS::TripleO::Services::Tacker: ../../docker/services/tacker.yaml # TODO tacker still wip https://bugs.launchpad.net/tripleo/+bug/1714270 @@ -41,9 +51,10 @@ parameter_defaults: - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::OVNDBs - - OS::TripleO::Services::OVNController - - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::NeutronDhcpAgent + - OS::TripleO::Services::NeutronL3Agent + - OS::TripleO::Services::NeutronMetadataAgent + - OS::TripleO::Services::NeutronOvsAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy @@ -72,17 +83,14 @@ parameter_defaults: nova::compute::libvirt::libvirt_virt_type: qemu # Required for Centos 7.3 and Qemu 2.6.0 nova::compute::libvirt::libvirt_cpu_mode: 'none' - # For OVN. - NeutronMechanismDrivers: ovn - OVNVifType: ovs - OVNNeutronSyncMode: log - OVNQosDriver: ovn-qos - OVNTunnelEncapType: geneve - NeutronTypeDrivers: 'geneve,vlan,flat,vxlan' - NeutronNetworkType: 'geneve' - NeutronServicePlugins: 'qos,networking_ovn.l3.l3_ovn.OVNL3RouterPlugin' - NeutronVniRanges: ['1:65536', ] - OVNBridgeMappings: 'datacentre:br-ex' + # For ML2/OVS + NeutronMechanismDrivers: 'openvswitch' + NeutronTypeDrivers: 'vxlan,vlan,flat,gre' + NeutronNetworkType: 'vxlan' + NeutronServicePlugins: 'router,qos,segments,trunk' + NeutronVniRanges: ['1:4094', ] + NeutronEnableDVR: false + KernelIpNonLocalBind: 0 Debug: true DockerPuppetDebug: True BannerText: | diff --git a/ci/environments/scenario008-multinode-containers.yaml b/ci/environments/scenario008-multinode-containers.yaml index 016518fa99..37c51efa61 100644 --- a/ci/environments/scenario008-multinode-containers.yaml +++ b/ci/environments/scenario008-multinode-containers.yaml @@ -4,6 +4,10 @@ resource_registry: OS::TripleO::Services::OpenDaylightApi: ../../docker/services/opendaylight-api.yaml OS::TripleO::Services::OpenDaylightOvs: ../../puppet/services/opendaylight-ovs.yaml OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-odl.yaml + # Disable OVN services + OS::TripleO::Services::OVNController: OS::Heat::None + OS::TripleO::Services::OVNDBs: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None parameter_defaults: ControllerServices: diff --git a/ci/environments/scenario010-multinode-containers.yaml b/ci/environments/scenario010-multinode-containers.yaml index 0c49ddf599..292997a022 100644 --- a/ci/environments/scenario010-multinode-containers.yaml +++ b/ci/environments/scenario010-multinode-containers.yaml @@ -39,12 +39,11 @@ parameter_defaults: - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OctaviaApi - OS::TripleO::Services::OctaviaDeploymentConfig - OS::TripleO::Services::OctaviaHealthManager diff --git a/ci/environments/scenario012-multinode-containers.yaml b/ci/environments/scenario012-multinode-containers.yaml index 8a7d6b77fe..e4e20a7902 100644 --- a/ci/environments/scenario012-multinode-containers.yaml +++ b/ci/environments/scenario012-multinode-containers.yaml @@ -32,12 +32,11 @@ parameter_defaults: - OS::TripleO::Services::IronicPxe - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - - OS::TripleO::Services::NeutronDhcpAgent - - OS::TripleO::Services::NeutronL3Agent - - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronServer - OS::TripleO::Services::NeutronCorePlugin - - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::HAproxy @@ -72,7 +71,7 @@ parameter_defaults: SwiftCeilometerPipelineEnabled: false IronicCleaningDiskErase: 'metadata' NovaSchedulerDiscoverHostsInCellsInterval: 15 - NeutronMechanismDrivers: openvswitch,ansible + NeutronMechanismDrivers: ovn,ansible NeutronNetworkType: vlan NeutronTypeDrivers: local,vxlan,vlan,flat IronicDefaultNetworkInterface: neutron diff --git a/deployment/container-image-prepare/container-image-prepare-baremetal-ansible.j2.yaml b/deployment/container-image-prepare/container-image-prepare-baremetal-ansible.j2.yaml index c1edbffe42..74b76f016a 100644 --- a/deployment/container-image-prepare/container-image-prepare-baremetal-ansible.j2.yaml +++ b/deployment/container-image-prepare/container-image-prepare-baremetal-ansible.j2.yaml @@ -48,7 +48,7 @@ parameters: default: [] NeutronMechanismDrivers: - default: 'openvswitch' + default: 'ovn' description: | The mechanism drivers for the Neutron tenant network. type: comma_delimited_list diff --git a/deployment/kernel/kernel-baremetal-puppet.yaml b/deployment/kernel/kernel-baremetal-puppet.yaml index bee3f19a66..a082e6393d 100644 --- a/deployment/kernel/kernel-baremetal-puppet.yaml +++ b/deployment/kernel/kernel-baremetal-puppet.yaml @@ -43,7 +43,7 @@ parameters: description: Configures net.ipv4.ip_forward key type: number KernelIpNonLocalBind: - default: 0 + default: 1 description: Configures net.ipv{4,6}.ip_nonlocal_bind key type: number NeighbourGcThreshold1: diff --git a/deployment/neutron/neutron-api-container-puppet.yaml b/deployment/neutron/neutron-api-container-puppet.yaml index f69287a48c..015711cd9c 100644 --- a/deployment/neutron/neutron-api-container-puppet.yaml +++ b/deployment/neutron/neutron-api-container-puppet.yaml @@ -90,8 +90,8 @@ parameters: hidden: true NeutronEnableDVR: description: Enable Neutron DVR. - default: false - type: boolean + default: '' + type: string KeystoneRegion: type: string default: 'regionOne' @@ -150,6 +150,7 @@ conditions: neutron_rpc_workers_unset: {equals : [{get_param: NeutronRpcWorkers}, '']} neutron_ovs_int_br_unset: {equals : [{get_param: NeutronOvsIntegrationBridge}, '']} internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]} + neutron_dvr_unset: {equals : [{get_param: NeutronEnableDVR}, '']} resources: @@ -228,8 +229,6 @@ outputs: dport: - 9696 - 13696 - neutron::server::router_distributed: {get_param: NeutronEnableDVR} - neutron::server::enable_dvr: {get_param: NeutronEnableDVR} # NOTE: bind IP is found in hiera replacing the network name with the local node IP # for the given network; replacement examples (eg. for internal_api): # internal_api -> IP @@ -261,6 +260,12 @@ outputs: params: $NETWORK: {get_param: [ServiceNetMap, NeutronApiNetwork]} tripleo::profile::base::neutron::server::l3_ha_override: {get_param: NeutronL3HA} + - + if: + - neutron_dvr_unset + - {} + - neutron::server::router_distributed: {get_param: NeutronEnableDVR} + neutron::server::enable_dvr: {get_param: NeutronEnableDVR} - if: - neutron_workers_unset diff --git a/deployment/neutron/neutron-ovs-agent-container-puppet.yaml b/deployment/neutron/neutron-ovs-agent-container-puppet.yaml index 2b9988c6d2..27bcefe3cc 100644 --- a/deployment/neutron/neutron-ovs-agent-container-puppet.yaml +++ b/deployment/neutron/neutron-ovs-agent-container-puppet.yaml @@ -83,9 +83,9 @@ parameters: Comma-separated list of extensions enabled for the Neutron agents. type: comma_delimited_list NeutronEnableDVR: - default: False + default: '' description: Enable Neutron DVR. - type: boolean + type: string NeutronEnableARPResponder: default: false description: | @@ -123,6 +123,7 @@ parameters: conditions: no_firewall_driver: {equals : [{get_param: NeutronOVSFirewallDriver}, '']} docker_puppet_mount_host: {equals: [{get_param: DockerPuppetMountHostPuppet}, true]} + neutron_dvr_unset: {equals : [{get_param: NeutronEnableDVR}, '']} resources: @@ -172,7 +173,6 @@ outputs: - get_attr: [RoleParametersValue, value] - get_attr: [NeutronLogging, config_settings] - neutron::agents::ml2::ovs::l2_population: {get_param: NeutronEnableL2Pop} - neutron::agents::ml2::ovs::enable_distributed_routing: {get_param: NeutronEnableDVR} neutron::agents::ml2::ovs::arp_responder: {get_param: NeutronEnableARPResponder} neutron::agents::ml2::ovs::tunnel_types: {get_param: NeutronTunnelTypes} neutron::agents::ml2::ovs::extensions: {get_param: NeutronAgentExtensions} @@ -195,6 +195,11 @@ outputs: dport: 4789 '136 neutron gre networks': proto: 'gre' + - + if: + - neutron_dvr_unset + - {} + - neutron::agents::ml2::ovs::enable_distributed_routing: {get_param: NeutronEnableDVR} - if: - no_firewall_driver diff --git a/environments/neutron-ovs-dvr.yaml b/environments/neutron-ovs-dvr.yaml index 0850de70eb..788e8c3db7 100644 --- a/environments/neutron-ovs-dvr.yaml +++ b/environments/neutron-ovs-dvr.yaml @@ -2,6 +2,19 @@ # This works by configuring L3 and Metadata agents on the # compute nodes. resource_registry: + # Default Neutron ML2 puppet plugin to use when NeutronCorePlugin is set to ML2 + # FIXME(bogdando): can not be switched yet due to puppet-base issues + # see https://review.openstack.org/#/c/563443 + OS::TripleO::Docker::NeutronMl2PluginBase: ../puppet/services/neutron-plugin-ml2.yaml + + OS::TripleO::Services::NeutronServer: ../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronApi: ../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronCorePlugin: ../docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::NeutronMetadataAgent: ../deployment/neutron/neutron-metadata-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: ../deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: ../deployment/neutron/neutron-l3-container-puppet.yaml OS::TripleO::Services::ComputeNeutronL3Agent: ../deployment/neutron/neutron-l3-container-puppet.yaml OS::TripleO::Services::ComputeNeutronMetadataAgent: ../deployment/neutron/neutron-metadata-container-puppet.yaml @@ -9,12 +22,22 @@ resource_registry: # bridge to be connected to a physical network. OS::TripleO::Compute::Net::SoftwareConfig: ../net-config-bridge.yaml -parameter_defaults: + # Disable OVN services + OS::TripleO::Services::OVNController: OS::Heat::None + OS::TripleO::Services::OVNDBs: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None +parameter_defaults: # DVR requires that the L2 population feature is enabled NeutronMechanismDrivers: ['openvswitch', 'l2population'] NeutronEnableL2Pop: 'True' + NeutronTypeDrivers: 'vxlan,vlan,flat,gre' + NeutronNetworkType: 'vxlan' + NeutronServicePlugins: 'router,qos,segments,trunk' + NeutronVniRanges: ['1:4094', ] + KernelIpNonLocalBind: 0 + # Setting NeutronEnableDVR enables distributed routing support in the # ML2 plugin and agents that support this feature NeutronEnableDVR: true diff --git a/environments/services/neutron-ovs-dvr.yaml b/environments/services/neutron-ovs-dvr.yaml index cd34a53dad..aa99cbea8d 100644 --- a/environments/services/neutron-ovs-dvr.yaml +++ b/environments/services/neutron-ovs-dvr.yaml @@ -1,18 +1,39 @@ -# A Heat environment file that enables DVR in the overcloud. Used with Compute -# DVR role. Note that the network configuration is consistent with the default -# tripleo network templates so some customization is likely required for -# production deployments. +# A Heat environment file that deploys ML2/OVS in the overcloud. resource_registry: + # Default Neutron ML2 puppet plugin to use when NeutronCorePlugin is set to ML2 + # FIXME(bogdando): can not be switched yet due to puppet-base issues + # see https://review.openstack.org/#/c/563443 + OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2.yaml + + OS::TripleO::Services::NeutronServer: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronApi: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronCorePlugin: ../../docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::NeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml OS::TripleO::Services::ComputeNeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml OS::TripleO::Services::ComputeNeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml OS::TripleO::ComputeDVR::Net::SoftwareConfig: ../../net-config-bridge.yaml + # Disable OVN services + OS::TripleO::Services::OVNController: OS::Heat::None + OS::TripleO::Services::OVNDBs: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None + parameter_defaults: # DVR requires that the L2 population feature is enabled NeutronMechanismDrivers: ['openvswitch', 'l2population'] NeutronEnableL2Pop: 'True' + NeutronTypeDrivers: 'vxlan,vlan,flat,gre' + NeutronNetworkType: 'vxlan' + NeutronServicePlugins: 'router,qos,segments,trunk' + NeutronVniRanges: ['1:4094', ] + KernelIpNonLocalBind: 0 + # Setting NeutronEnableDVR enables distributed routing support in the # ML2 plugin and agents that support this feature NeutronEnableDVR: true diff --git a/environments/services/neutron-ovs.yaml b/environments/services/neutron-ovs.yaml new file mode 100644 index 0000000000..c715706d8f --- /dev/null +++ b/environments/services/neutron-ovs.yaml @@ -0,0 +1,35 @@ +# A Heat environment file that enables DVR in the overcloud. Used with Compute +# DVR role. Note that the network configuration is consistent with the default +# tripleo network templates so some customization is likely required for +# production deployments. +resource_registry: + # Default Neutron ML2 puppet plugin to use when NeutronCorePlugin is set to ML2 + # FIXME(bogdando): can not be switched yet due to puppet-base issues + # see https://review.openstack.org/#/c/563443 + OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2.yaml + + OS::TripleO::Services::NeutronServer: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronApi: ../../deployment/neutron/neutron-api-container-puppet.yaml + OS::TripleO::Services::NeutronCorePlugin: ../../docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::NeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml + + # Disable OVN services + OS::TripleO::Services::OVNController: OS::Heat::None + OS::TripleO::Services::OVNDBs: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None + +parameter_defaults: + + NeutronMechanismDrivers: ['openvswitch'] + + NeutronTypeDrivers: 'vxlan,vlan,flat,gre' + NeutronNetworkType: 'vxlan' + NeutronServicePlugins: 'router,qos,segments,trunk' + NeutronVniRanges: ['1:4094', ] + KernelIpNonLocalBind: 0 + + NeutronEnableDVR: false diff --git a/environments/standalone/standalone-tripleo.yaml b/environments/standalone/standalone-tripleo.yaml index 9a169455be..6a7111dbe1 100644 --- a/environments/standalone/standalone-tripleo.yaml +++ b/environments/standalone/standalone-tripleo.yaml @@ -111,6 +111,7 @@ resource_registry: OS::TripleO::Services::MistralEngine: OS::Heat::None OS::TripleO::Services::MistralEventEngine: OS::Heat::None OS::TripleO::Services::MistralExecutor: OS::Heat::None + OS::TripleO::Services::OVNDBs: ../../docker/services/ovn-dbs.yaml OS::TripleO::Services::OpenStackClients: ../../puppet/services/openstack-clients.yaml OS::TripleO::Services::PankoApi: OS::Heat::None OS::TripleO::Services::Podman: ../../deployment/podman/podman-baremetal-ansible.yaml diff --git a/environments/undercloud.yaml b/environments/undercloud.yaml index c4b5ad1340..ce1630bf6f 100644 --- a/environments/undercloud.yaml +++ b/environments/undercloud.yaml @@ -8,6 +8,14 @@ resource_registry: # Allows us to control the external VIP for Undercloud SSL OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external_from_pool.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronMetadataAgent: ../deployment/neutron/neutron-metadata-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: ../deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: ../deployment/neutron/neutron-l3-container-puppet.yaml + OS::TripleO::Services::NeutronCorePlugin: ../docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Docker::NeutronMl2PluginBase: ../puppet/services/neutron-plugin-ml2.yaml + # We managed this in instack-undercloud, so we need to manage it here. OS::TripleO::Services::SELinux: ../deployment/selinux/selinux-baremetal-puppet.yaml OS::TripleO::Services::OpenStackClients: ../puppet/services/openstack-clients.yaml @@ -124,6 +132,7 @@ parameter_defaults: NeutronTunnelIdRanges: '20:100' NeutronTypeDrivers: ['local','flat','vlan','gre','vxlan'] NeutronVniRanges: '10:100' + NeutronEnableDVR: false NeutronPortQuota: '-1' SwiftCorsAllowedOrigin: '*' SwiftReplicas: 1 diff --git a/environments/updates/update-from-ml2-ovs-from-rocky.yaml b/environments/updates/update-from-ml2-ovs-from-rocky.yaml new file mode 100644 index 0000000000..70c182bd35 --- /dev/null +++ b/environments/updates/update-from-ml2-ovs-from-rocky.yaml @@ -0,0 +1,8 @@ +# This environment file provides default previous values for ml2/ovs + +parameter_defaults: + OVNQosDriver: NULL + NeutronMechanismDrivers: 'openvswitch' + NeutronTypeDrivers: "vxlan,vlan,flat,gre" + NeutronVniRanges: ["1:65536", ] + NeutronNetworkType: 'vxlan' diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index f8e91b4d31..3dd8b15ec6 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -134,14 +134,14 @@ resource_registry: OS::TripleO::Services::NeutronBgpVpnApi: OS::Heat::None OS::TripleO::Services::NeutronBgpVpnBagpipe: OS::Heat::None OS::TripleO::Services::NeutronSfcApi: OS::Heat::None - OS::TripleO::Services::NeutronDhcpAgent: deployment/neutron/neutron-dhcp-container-puppet.yaml + OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None OS::TripleO::Services::NeutronL2gwApi: OS::Heat::None - OS::TripleO::Services::NeutronL3Agent: deployment/neutron/neutron-l3-container-puppet.yaml + OS::TripleO::Services::NeutronL3Agent: OS::Heat::None OS::TripleO::Services::NeutronL2gwAgent: OS::Heat::None OS::TripleO::Services::NeutronLbaasv2Agent: OS::Heat::None OS::TripleO::Services::NeutronLbaasv2Api: OS::Heat::None - OS::TripleO::Services::NeutronMetadataAgent: deployment/neutron/neutron-metadata-container-puppet.yaml - OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None + OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None + OS::TripleO::Services::OVNMetadataAgent: docker/services/ovn-metadata.yaml # FIXME(shardy) the duplicate NeutronServer line can be removed when we've updated # the multinode job ControllerServices after this patch merges OS::TripleO::Services::NeutronServer: deployment/neutron/neutron-api-container-puppet.yaml @@ -149,25 +149,26 @@ resource_registry: OS::TripleO::Services::NeutronCorePlugin: docker/services/neutron-plugin-ml2.yaml # can be the same as NeutronCorePlugin but some vendors install different # things where VMs run - OS::TripleO::Services::ComputeNeutronCorePlugin: docker/services/neutron-plugin-ml2.yaml + OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None OS::TripleO::Services::ComputeNeutronCorePluginNuage: puppet/services/neutron-compute-plugin-nuage.yaml # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin) OS::TripleO::Services::NeutronCorePluginML2OVN: puppet/services/neutron-plugin-ml2-ovn.yaml OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml OS::TripleO::Services::NeutronCorePluginML2Nuage: puppet/services/neutron-plugin-ml2-nuage.yaml - OS::TripleO::Services::NeutronCorePluginNSX: docker/services/neutron-plugin-nsx.yaml - OS::TripleO::Services::OVNDBs: OS::Heat::None - OS::TripleO::Services::OVNController: OS::Heat::None + + OS::TripleO::Services::NeutronCorePluginNSX: puppet/services/neutron-plugin-nsx.yaml + OS::TripleO::Services::OVNDBs: docker/services/pacemaker/ovn-dbs.yaml + OS::TripleO::Services::OVNController: docker/services/ovn-controller.yaml OS::TripleO::Services::NeutronCorePluginMLNXSDN: puppet/services/neutron-plugin-ml2-mlnx-sdn-assist.yaml OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml OS::TripleO::Services::NeutronCorePluginVTS: docker/services/neutron-plugin-ml2-cisco-vts.yaml OS::TripleO::Services::NeutronCorePluginML2Ansible: docker/services/neutron-plugin-ml2-ansible.yaml OS::TripleO::Services::NeutronNuageVrs: puppet/services/neutron-controller-plugin-nuage.yaml - OS::TripleO::Services::NeutronOvsAgent: deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None OS::TripleO::Services::NeutronLinuxbridgeAgent: OS::Heat::None - OS::TripleO::Services::ComputeNeutronOvsAgent: deployment/neutron/neutron-ovs-agent-container-puppet.yaml + OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None OS::TripleO::Services::ComputeNeutronOvsDpdk: OS::Heat::None OS::TripleO::Services::Pacemaker: OS::Heat::None OS::TripleO::Services::PacemakerRemote: OS::Heat::None @@ -332,7 +333,7 @@ resource_registry: # Default Neutron ML2 puppet plugin to use when NeutronCorePlugin is set to ML2 # FIXME(bogdando): can not be switched yet due to puppet-base issues # see https://review.openstack.org/#/c/563443 - OS::TripleO::Docker::NeutronMl2PluginBase: puppet/services/neutron-plugin-ml2.yaml + OS::TripleO::Docker::NeutronMl2PluginBase: puppet/services/neutron-plugin-ml2-ovn.yaml OS::TripleO::Services::Multipathd: deployment/multipathd/multipathd-container.yaml # Logging @@ -359,6 +360,7 @@ resource_registry: OS::TripleO::Services::BootParams: extraconfig/pre_network/boot-params-service.yaml parameter_defaults: + NeutronMechanismDrivers: ovn EnablePackageInstall: false SoftwareConfigTransport: POLL_TEMP_URL diff --git a/puppet/services/neutron-base.yaml b/puppet/services/neutron-base.yaml index 4384b9a0f1..7394fe14fe 100644 --- a/puppet/services/neutron-base.yaml +++ b/puppet/services/neutron-base.yaml @@ -27,7 +27,7 @@ parameters: from neutron.core_plugins namespace. type: string NeutronServicePlugins: - default: "router,qos,segments,trunk" + default: "qos,ovn-router,trunk" description: | Comma-separated list of service plugin entrypoints to be loaded from the neutron.service_plugins namespace. diff --git a/puppet/services/neutron-plugin-ml2-ovn.yaml b/puppet/services/neutron-plugin-ml2-ovn.yaml index 8d4cb03a65..ea11fab6cd 100644 --- a/puppet/services/neutron-plugin-ml2-ovn.yaml +++ b/puppet/services/neutron-plugin-ml2-ovn.yaml @@ -58,15 +58,15 @@ parameters: OVNQosDriver: description: OVN notification driver for Neutron QOS service plugin type: string - default: NULL + default: ovn-qos NeutronGeneveMaxHeaderSize: description: Geneve encapsulation header size type: number default: 38 NeutronEnableDVR: description: Enable Neutron DVR. - default: false - type: boolean + default: '' + type: string OVNMetadataEnabled: description: Whether Metadata Service has to be enabled type: boolean @@ -80,11 +80,15 @@ parameters: - allowed_values: - geneve - vlan + OVNDnsServers: default: [] description: List of servers to use as as dns forwarders type: comma_delimited_list +conditions: + neutron_dvr_unset: {equals : [{get_param: NeutronEnableDVR}, '']} + resources: NeutronMl2Base: @@ -113,9 +117,13 @@ outputs: neutron::plugins::ml2::ovn::ovn_metadata_enabled: {get_param: OVNMetadataEnabled} neutron::server::qos_notification_drivers: {get_param: OVNQosDriver} neutron::plugins::ml2::max_header_size: {get_param: NeutronGeneveMaxHeaderSize} - neutron::plugins::ml2::ovn::dvr_enabled: {get_param: NeutronEnableDVR} neutron::plugins::ml2::ovn::dns_servers: {get_param: OVNDnsServers} neutron::plugins::ml2::tenant_network_types: {get_param: NeutronNetworkType} + - + if: + - neutron_dvr_unset + - neutron::plugins::ml2::ovn::dvr_enabled: true + - neutron::plugins::ml2::ovn::dvr_enabled: {get_param: NeutronEnableDVR} step_config: | include ::tripleo::profile::base::neutron::plugins::ml2 metadata_settings: diff --git a/puppet/services/neutron-plugin-ml2.yaml b/puppet/services/neutron-plugin-ml2.yaml index bba19915d4..4d8d1b2fc6 100644 --- a/puppet/services/neutron-plugin-ml2.yaml +++ b/puppet/services/neutron-plugin-ml2.yaml @@ -31,12 +31,12 @@ parameters: via parameter_defaults in the resource registry. type: json NeutronMechanismDrivers: - default: 'openvswitch' + default: 'ovn' description: | The mechanism drivers for the Neutron tenant network. type: comma_delimited_list NeutronTypeDrivers: - default: "vxlan,vlan,flat,gre" + default: "geneve,vlan,flat" description: | Comma-separated list of network type driver entrypoints to be loaded. type: comma_delimited_list @@ -66,10 +66,10 @@ parameters: description: | Comma-separated list of : tuples enumerating ranges of VXLAN VNI IDs that are available for tenant network allocation - default: ["1:4094", ] + default: ["1:65536", ] type: comma_delimited_list NeutronNetworkType: - default: 'vxlan' + default: 'geneve' description: The tenant network type for Neutron. type: comma_delimited_list NeutronFirewallDriver: diff --git a/releasenotes/notes/switch-to-default-ovn-driver-ab4ae9d348158d61.yaml b/releasenotes/notes/switch-to-default-ovn-driver-ab4ae9d348158d61.yaml new file mode 100644 index 0000000000..e70f5cf68d --- /dev/null +++ b/releasenotes/notes/switch-to-default-ovn-driver-ab4ae9d348158d61.yaml @@ -0,0 +1,16 @@ +--- +features: + - | + This patch switches the default mechanism driver for neutron from + openvswitch to OVN. DVR is now enabled by default which in the case + of OVN means that we're distributing FIP N/S traffic + as E/W is anyways distributed +upgrade: + - | + During upgrade from ml2/ovs please remember to provide similar + environment file to environments/updates/update-from-ml2-ovs-from-rocky.yaml. + This is good also to remember to provide this file as a first + to avoid overwriting custom modification by upgrade environment + file. If you will not provide such file during upgrade from + ml2/ovs you will see error and notification about problems witch + mutually exclusive network drivers. diff --git a/sample-env-generator/standalone.yaml b/sample-env-generator/standalone.yaml index 0609e7c3de..8612fccd16 100644 --- a/sample-env-generator/standalone.yaml +++ b/sample-env-generator/standalone.yaml @@ -62,6 +62,9 @@ environments: OS::TripleO::Standalone::Net::SoftwareConfig: ../../net-config-standalone.yaml OS::TripleO::NodeExtraConfigPost: ../../extraconfig/post_deploy/standalone_post.yaml + # OVN + OS::TripleO::Services::OVNDBs: ../../docker/services/ovn-dbs.yaml + # Manage SELinux OS::TripleO::Services::SELinux: ../../deployment/selinux/selinux-baremetal-puppet.yaml