From 208209933240d8ab26bc3eb696447e830fd292b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Jens=C3=A5s?= Date: Sat, 30 May 2020 00:37:44 +0200 Subject: [PATCH] Create OVNMacAddrNet network on Undercloud A network used to allocate MAC addresses for OVN chassis. Ports without and IP allocation will be created on this network, the MAC addresses of the ports will by used to configure the ovn-chassis-mac-mappings. NOTE, we may want to change the 'base_mac' option of the undercloud, so that we don't have collissions with the overcloud 'base_mac'. Related-Bug: #1881593 Change-Id: If495b5d5c1e6beff02b48507051cccfb70fd995c --- .../standalone/standalone-overcloud.yaml | 2 + .../standalone/standalone-tripleo.yaml | 2 + environments/undercloud.yaml | 4 ++ .../undercloud/undercloud-minion.yaml | 2 + network/networks.j2.yaml | 3 ++ network/ovn_mac_addr_net.yaml | 37 +++++++++++++++++++ network/ports/ovn_mac_addr_port.yaml | 27 ++++++++++++++ overcloud-resource-registry-puppet.j2.yaml | 4 ++ sample-env-generator/standalone.yaml | 7 ++++ sample-env-generator/undercloud-minion.yaml | 6 ++- 10 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 network/ovn_mac_addr_net.yaml create mode 100644 network/ports/ovn_mac_addr_port.yaml diff --git a/environments/standalone/standalone-overcloud.yaml b/environments/standalone/standalone-overcloud.yaml index f3d1f998d9..1487c926d5 100644 --- a/environments/standalone/standalone-overcloud.yaml +++ b/environments/standalone/standalone-overcloud.yaml @@ -47,6 +47,8 @@ parameter_defaults: SwiftReplicas: 1 resource_registry: + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None OS::TripleO::Services::AodhListener: OS::Heat::None diff --git a/environments/standalone/standalone-tripleo.yaml b/environments/standalone/standalone-tripleo.yaml index d8e52d5729..6fe3250034 100644 --- a/environments/standalone/standalone-tripleo.yaml +++ b/environments/standalone/standalone-tripleo.yaml @@ -56,6 +56,8 @@ resource_registry: OS::TripleO::Network::Ports::ControlPlaneVipPort: ../../deployed-server/deployed-neutron-port.yaml OS::TripleO::Network::Ports::OVNDBsVipPort: ../../network/ports/noop.yaml OS::TripleO::Network::Ports::RedisVipPort: ../../network/ports/noop.yaml + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None OS::TripleO::Services::AodhListener: OS::Heat::None diff --git a/environments/undercloud.yaml b/environments/undercloud.yaml index d56d90638c..1f3e43b177 100644 --- a/environments/undercloud.yaml +++ b/environments/undercloud.yaml @@ -65,6 +65,10 @@ resource_registry: # Undercloud HA services OS::TripleO::Services::HAproxy: OS::Heat::None + # Don't create OVN Chassis MAC address nets/ports on the undercloud + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None + parameter_defaults: # ensure we enable ip_forward before docker gets run KernelIpForward: 1 diff --git a/environments/undercloud/undercloud-minion.yaml b/environments/undercloud/undercloud-minion.yaml index 9f8a3dcd70..358712fb49 100644 --- a/environments/undercloud/undercloud-minion.yaml +++ b/environments/undercloud/undercloud-minion.yaml @@ -30,6 +30,8 @@ parameter_defaults: resource_registry: OS::TripleO::Network::Ports::ControlPlaneVipPort: OS::Heat::None + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None OS::TripleO::Services::AodhListener: OS::Heat::None diff --git a/network/networks.j2.yaml b/network/networks.j2.yaml index a868b11bc0..c689c7c817 100644 --- a/network/networks.j2.yaml +++ b/network/networks.j2.yaml @@ -14,6 +14,9 @@ resources: type: OS::TripleO::Network::{{network.name}} {%- endfor %} + OVNMacAddressNetwork: + type: OS::TripleO::OVNMacAddressNetwork + NetworkExtraConfig: type: OS::TripleO::Network::ExtraConfig diff --git a/network/ovn_mac_addr_net.yaml b/network/ovn_mac_addr_net.yaml new file mode 100644 index 0000000000..6ae7ca2b01 --- /dev/null +++ b/network/ovn_mac_addr_net.yaml @@ -0,0 +1,37 @@ +heat_template_version: rocky + +description: Network used to allocate MAC addresses for OVN chassis. + +parameters: + OVNMacAddressNetworkName: + default: ovn_mac_addr_net + description: The name of the OVNMacAddr network. + type: string + ManageNetworks: + default: true + type: boolean + description: > + Manage the network and related resources (subnets and segments) with + either create, update, or delete operations (depending on the stack + operation). Does not apply to ports which will always be managed as + needed. Defaults to true. For multi-stack use cases where the network + related resources have already been managed by a separate stack, this + parameter can be set to false. + +conditions: + manage_networks: {get_param: ManageNetworks} + +resources: + OVNMacAddressNetwork: + type: OS::Neutron::Net + condition: manage_networks + properties: + name: {get_param: OVNMacAddressNetworkName} + value_specs: + description: Network used to allocate MAC addresses for OVN chassis. + +outputs: + OS::stack_id: + description: > + Network used to allocate MAC addresses for OVN chassis. + value: {get_resource: OVNMacAddressNetwork} diff --git a/network/ports/ovn_mac_addr_port.yaml b/network/ports/ovn_mac_addr_port.yaml new file mode 100644 index 0000000000..455161df1a --- /dev/null +++ b/network/ports/ovn_mac_addr_port.yaml @@ -0,0 +1,27 @@ +heat_template_version: rocky + +description: > + Port without IP address, used to allocate MAC addresses for OVN chassis. + +parameters: + PortName: + description: Name of the port + default: '' + type: string + OVNMacAddressNetworkName: + default: ovn_mac_addr_net + description: The name of the OVNMacAddr network. + type: string + +resources: + OVNMacAddressPort: + type: OS::Neutron::Port + properties: + name: {get_param: PortName} + network: {get_param: OVNMacAddressNetworkName} + fixed_ips: [] + +outputs: + mac_address: + description: MAC address of the port + value: {get_attr: [OVNMacAddressPort, mac_address]} diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 6d52655640..9d001c289a 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -67,6 +67,10 @@ resource_registry: # TripleO overcloud networks OS::TripleO::Network: network/networks.yaml + # Special network to allocate unique OVN chassis mac addresses, for distributed vlan traffic. + OS::TripleO::OVNMacAddressNetwork: network/ovn_mac_addr_net.yaml + OS::TripleO::OVNMacAddressPort: network/ports/ovn_mac_addr_port.yaml + {%- for network in networks if network.enabled|default(true) %} OS::TripleO::Network::{{network.name}}: OS::Heat::None {%- endfor %} diff --git a/sample-env-generator/standalone.yaml b/sample-env-generator/standalone.yaml index 60d5ed8db6..bbae8c8006 100644 --- a/sample-env-generator/standalone.yaml +++ b/sample-env-generator/standalone.yaml @@ -140,6 +140,9 @@ environments: OS::TripleO::Services::SaharaEngine: OS::Heat::None # Zaqar OS::TripleO::Services::Zaqar: OS::Heat::None + # Don't create OVN Chassis MAC address nets/ports on the standalone + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None - name: standalone/standalone-overcloud @@ -186,6 +189,10 @@ environments: OS::TripleO::Services::OpenStackClients: ../../deployment/clients/openstack-clients-baremetal-ansible.yaml + # Don't create OVN Chassis MAC address nets/ports on the standalone + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None + # Aodh OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None diff --git a/sample-env-generator/undercloud-minion.yaml b/sample-env-generator/undercloud-minion.yaml index c0e0d53fdf..07484dd6d8 100644 --- a/sample-env-generator/undercloud-minion.yaml +++ b/sample-env-generator/undercloud-minion.yaml @@ -51,6 +51,10 @@ environments: # Disable by default OS::TripleO::Services::IronicConductor: OS::Heat::None + # Don't create OVN Chassis MAC address nets/ports on the standalone + OS::TripleO::OVNMacAddressNetwork: OS::Heat::None + OS::TripleO::OVNMacAddressPort: OS::Heat::None + # Disable all the services not used when deploying just a minion OS::TripleO::Services::AodhApi: OS::Heat::None OS::TripleO::Services::AodhEvaluator: OS::Heat::None @@ -231,4 +235,4 @@ environments: OS::TripleO::Services::Vpp: OS::Heat::None OS::TripleO::Services::VRTSHyperScale: OS::Heat::None OS::TripleO::Services::Xinetd: OS::Heat::None - OS::TripleO::Services::Zaqar: OS::Heat::None + OS::TripleO::Services::Zaqar: OS::Heat::None \ No newline at end of file