Terraform IOS-XE EVPN OSPF Underlay Module
This module can manage a Catalyst 9000 EVPN fabric underlay network based on OSPF.
The following assumptions have been made:
IP unnumbered is used on all fabric links
OSPF area 0 is used for all interfaces
PIM sparse mode is enabled on all interfaces
A system MTU of 9198 is configured on all devices
All spines act as a PIM RP (Anycast with MSDP)
Each leaf is connected to each spine with a single link
The same consecutive range of interfaces is used on all leafs for fabric links
The same consecutive range of interfaces is used on all spines for fabric links
module "iosxe_evpn_ospf_underlay" {
source = " netascode/evpn-ospf-underlay/iosxe"
version = " >= 0.1.0"
leafs = [" LEAF-1" , " LEAF-2" ]
spines = [" SPINE-1" , " SPINE-2" ]
loopback_id = 0
pim_loopback_id = 100
loopbacks = [
{
device = " SPINE-1" ,
ipv4_address = " 10.1.100.1"
},
{
device = " SPINE-2" ,
ipv4_address = " 10.1.100.2"
},
{
device = " LEAF-1" ,
ipv4_address = " 10.1.100.3"
},
{
device = " LEAF-2" ,
ipv4_address = " 10.1.100.4"
}
]
vtep_loopback_id = 1
vtep_loopbacks = [
{
device = " LEAF-1" ,
ipv4_address = " 10.1.200.1"
},
{
device = " LEAF-2" ,
ipv4_address = " 10.1.200.2"
}
]
fabric_interface_type = " GigabitEthernet"
leaf_fabric_interface_prefix = " 1/0/"
leaf_fabric_interface_offset = " 1"
spine_fabric_interface_prefix = " 1/0/"
spine_fabric_interface_offset = " 1"
anycast_rp_ipv4_address = " 10.1.101.1"
}
Name
Version
iosxe
>= 0.3.0
Name
Description
Type
Default
Required
leafs
List of leaf device names. This list of devices must also be added to the provider configuration.
set(string)
[]
no
spines
List of spine device names. This list of devices must also be added to the provider configuration.
set(string)
[]
no
loopback_id
Loopback ID used for OSPF and PIM.
number
0
no
pim_loopback_id
Loopback ID used for PIM Anycast RP.
number
100
no
loopbacks
List of loopback interfaces, one per device.
list(object({ device = string ipv4_address = string }))
[]
no
vtep_loopback_id
Loopback ID used for VTEP loopbacks.
number
1
no
vtep_loopbacks
List of vtep loopback interfaces, one per leaf.
list(object({ device = string ipv4_address = string }))
[]
no
fabric_interface_type
Interface type of fabric interfaces. Choices: GigabitEthernet, TwoGigabitEthernet, FiveGigabitEthernet, TenGigabitEthernet, TwentyFiveGigE, FortyGigabitEthernet, HundredGigE, TwoHundredGigE, FourHundredGigE.
string
"GigabitEthernet"
no
leaf_fabric_interface_prefix
Interface prefix for leaf interfaces, eg. 1/0/.
string
n/a
yes
spine_fabric_interface_prefix
Interface prefix for spine interfaces, eg. 1/0/.
string
n/a
yes
leaf_fabric_interface_offset
Leaf interface index offset for fabric interfaces.
string
1
no
spine_fabric_interface_offset
Spine interface index offset for fabric interfaces.
string
1
no
anycast_rp_ipv4_address
IPv4 address of PIM RP loopback interface (Anycast).
string
n/a
yes