Git Product home page Git Product logo

terraform-iosxe-evpn-overlay's Introduction

Tests

Terraform Cisco IOS-XE EVPN Overlay Module

This module can manage a Catalyst 9000 EVPN fabric overlay.

The following assumptions have been made:

  • A working underlay network including VTEP loopbacks is pre-configured (e.g., using the EVPN OSPF Underlay Terraform Module)
  • A single BGP AS is used for all devices with spines acting as route reflectors
  • All services will be provisioned on all leafs
  • No L2 or L3 access interfaces will be provisioned
  • A l2_service refers to a single L2 VNI
  • A l3_service refers to a single VRF and L3 VNI
  • A l3_service SVI will be provisioned as an anycast gateway on all leafs with a corresponding L2 VNI
  • If no ipv4_multicast_group is configured ingress replication will be used

Examples

module "iosxe_evpn_overlay" {
  source  = "netascode/evpn-overlay/iosxe"
  version = ">= 0.1.0"

  leafs                = ["LEAF-1", "LEAF-2"]
  spines               = ["SPINE-1", "SPINE-2"]
  underlay_loopback_id = 0

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

  bgp_asn = 65000

  l3_services = [
    {
      name = "GREEN"
      id   = 1000
    },
    {
      name = "BLUE"
      id   = 1010
    }
  ]

  l2_services = [
    {
      name                 = "L2_101"
      id                   = 101
      ipv4_multicast_group = "225.0.0.101"
      ip_learning          = true
    },
    {
      name = "L2_102"
      id   = 102
    },
    {
      name                     = "GREEN_1001"
      id                       = 1001
      ipv4_multicast_group     = "225.0.1.1"
      l3_service               = "GREEN"
      ipv4_address             = "172.16.1.1"
      ipv4_mask                = "255.255.255.0"
      ip_learning              = true
      re_originate_route_type5 = true
    },
    {
      name         = "BLUE_1011"
      id           = 1011
      l3_service   = "BLUE"
      ipv4_address = "172.17.1.1"
      ipv4_mask    = "255.255.255.0"
    }
  ]
}

Requirements

Name Version
terraform >= 1.3.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
underlay_loopback_id Loopback ID used for underlay routing and BGP. number 0 no
underlay_loopbacks List of underlay loopback interfaces. These loopbacks are assumed to be pre-configured on every device.
list(object({
device = string
ipv4_address = string
}))
[] no
vtep_loopback_id Loopback ID used for VTEP loopbacks. These loopbacks are assumed to be pre-configured on all leafs. number 1 no
bgp_asn BGP AS number. number 65000 no
l3_services List of L3 services. name is the VRF name. id is the core-facing SVI VLAN ID. If no ipv4_multicast_group is specified, ingress replication will be used.
list(object({
name = string
id = number
}))
[] no
l2_services List of L2 services. id is the access VLAN ID. If no ipv4_multicast_group is specified, ingress replication will be used.
list(object({
name = string
id = number
ipv4_multicast_group = optional(string)
l3_service = optional(string)
ipv4_address = optional(string)
ipv4_mask = optional(string)
ip_learning = optional(bool)
re_originate_route_type5 = optional(bool)
}))
[] no

Outputs

No outputs.

Resources

Name Type
iosxe_bgp.bgp resource
iosxe_bgp_address_family_ipv4_vrf.bgp_af_ipv4_vrf resource
iosxe_bgp_address_family_ipv6_vrf.bgp_af_ipv6_vrf resource
iosxe_bgp_address_family_l2vpn.bgp_l2vpn resource
iosxe_bgp_l2vpn_evpn_neighbor.bgp_l2vpn_evpn_neighbor_leaf resource
iosxe_bgp_l2vpn_evpn_neighbor.bgp_l2vpn_evpn_neighbor_spine resource
iosxe_bgp_neighbor.bgp_neighbor_leaf resource
iosxe_bgp_neighbor.bgp_neighbor_spine resource
iosxe_evpn.evpn resource
iosxe_evpn_instance.l2_evpn_instance resource
iosxe_interface_nve.nve resource
iosxe_interface_vlan.l2_svi resource
iosxe_interface_vlan.l3_core_svi resource
iosxe_vlan_configuration.l2_vlan_configuration resource
iosxe_vlan_configuration.l3_vlan_configuration resource
iosxe_vrf.vrf resource

terraform-iosxe-evpn-overlay's People

Contributors

danischm avatar dependabot[bot] avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.