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