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