Skip to content

netascode/terraform-iosxe-evpn-ospf-underlay

Tests

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

Examples

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"
}

Requirements

Name Version
terraform >= 1.1.0
iosxe >= 0.3.0

Providers

Name Version
iosxe >= 0.3.0

Inputs

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

Outputs

Name Description
loopback_id Loopback ID used for OSPF and PIM.
pim_loopback_id Loopback ID used for PIM Anycast RP.
vtep_loopback_id Loopback ID used for VTEP loopbacks.
loopbacks List of loopback interfaces, one per device.
vtep_loopbacks List of vtep loopback interfaces, one per leaf.

Resources

Name Type
iosxe_interface_ethernet.leaf_fabric_interface resource
iosxe_interface_ethernet.spine_fabric_interface resource
iosxe_interface_loopback.loopback resource
iosxe_interface_loopback.pim_loopback resource
iosxe_interface_loopback.vtep_loopback resource
iosxe_interface_ospf.leaf_interface_ospf resource
iosxe_interface_ospf.spine_interface_ospf resource
iosxe_interface_ospf_process.leaf_interface_ospf_process resource
iosxe_interface_ospf_process.loopback_interface_ospf_process resource
iosxe_interface_ospf_process.pim_loopback_interface_ospf_process resource
iosxe_interface_ospf_process.spine_interface_ospf_process resource
iosxe_interface_ospf_process.vtep_loopback_interface_ospf_process resource
iosxe_interface_pim.leaf_interface_pim resource
iosxe_interface_pim.loopback_interface_pim resource
iosxe_interface_pim.pim_loopback_interface_pim resource
iosxe_interface_pim.spine_interface_pim resource
iosxe_interface_pim.vtep_loopback_interface_pim resource
iosxe_msdp.msdp resource
iosxe_ospf.ospf resource
iosxe_pim.pim resource
iosxe_system.system resource