Skip to content

netascode/terraform-nxos-evpn-ospf-underlay

Tests

Terraform NX-OS EVPN OSPF Underlay Module

This module can manage a Nexus 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 9216 is configured on all devices
  • All spines act as a PIM Anycast RP
  • 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 "nxos_evpn_ospf_underlay" {
  source  = "netascode/evpn-ospf-underlay/nxos"
  version = ">= 0.2.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"
    }
  ]

  leaf_fabric_interface_prefix  = "1/"
  leaf_fabric_interface_offset  = "1"
  spine_fabric_interface_prefix = "1/"
  spine_fabric_interface_offset = "1"
  anycast_rp_ipv4_address       = "10.1.101.1"
}

Requirements

Name Version
terraform >= 1.1.0
nxos >= 0.5.0

Providers

Name Version
nxos >= 0.5.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
leaf_fabric_interface_prefix Interface prefix for leaf interfaces, eg. 1/. string "1/" no
spine_fabric_interface_prefix Interface prefix for spine interfaces, eg. 1/. string "1/" no
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
nxos_ethernet.ethernet resource
nxos_system.system resource