Interfaces
NDFC Terraform

Interface Configuration with Terraform

In this section you will be creating the Terraform configuration for the Fabric Interfaces

Step 1 - Create modules/fabric/interfaces.tf file


touch ~/workspace/ndfclab/terraform/modules/fabric/interfaces.tf
code-server -r ~/workspace/ndfclab/terraform/modules/fabric/interfaces.tf


After you define the switches in the inventory you can start defining the interfaces for the switches. In this example you will define three loopback interfaces, one Ethernet interface and one Port Channel interface.


resource "ndfc_interface_loopback" "nac_interface_loopback_1" {
  policy        = "int_loopback"
  deploy        = false
  serial_number = var.staging-leaf1-serial
  interfaces = {
    "Loopback100" = {
      interface_name        = "loopback100"
      admin_state           = false
      interface_description = "Configured using Terraform"
      vrf                   = "default"
      ipv4_address          = "192.168.20.1"
      ipv6_address          = "2002:db8::1"
      route_map_tag         = "100"
    }
    "Loopback101" = {
      interface_name        = "loopback101"
      admin_state           = false
      interface_description = "Configured using Terraform"
      vrf                   = "default"
      ipv4_address          = "192.168.21.1"
      ipv6_address          = "2002:db8::1"
      route_map_tag         = "100"
    }
    "Loopback102" = {
      interface_name        = "loopback102"
      admin_state           = false
      interface_description = "Configured using Terraform"
      vrf                   = "default"
      ipv4_address          = "192.168.22.1"
      ipv6_address          = "2002:db8::1"
      route_map_tag         = "100"
    }
  }

  depends_on = [
    ndfc_vpc_pair.nac_vpc_pair_1,
  ]
}

resource "ndfc_interface_ethernet" "nac_interface_ethernet_1" {
  policy        = "int_access_host"
  policy_type   = "system"
  deploy        = false
  serial_number = var.staging-leaf1-serial
  interfaces = {
    "Ethernet1/20" = {
      interface_name        = "Ethernet1/20"
      freeform_config       = "delay 200"
      admin_state           = true
      interface_description = "Configured using Terraform"
      bpdu_guard            = "true"
      port_type_fast        = false
      mtu                   = "default"
      speed                 = "Auto"
      access_vlan           = 55
      orphan_port           = false
      ptp                   = false
      netflow               = false
      netflow_monitor       = "MON1"
      netflow_sampler       = "SAMPLER1"
      allowed_vlans         = "10-20"
      native_vlan           = 1
    }
  }

  depends_on = [
    ndfc_vpc_pair.nac_vpc_pair_1,
  ]
}

resource "ndfc_interface_portchannel" "nac_interface_portchannel_1" {
  policy        = "int_port_channel_trunk_host"
  deploy        = false
  serial_number = var.staging-leaf1-serial
  interfaces = {
    "Port-channel100" = {
      interface_name        = "port-channel100"
      admin_state           = false
      interface_description = "Configured using Terraform"
      bpdu_guard            = "true"
      port_type_fast        = false
      mtu                   = "default"
      speed                 = "Auto"
      orphan_port           = false
      netflow               = false
      netflow_monitor       = "MON1"
      netflow_sampler       = "SAMPLER1"
      allowed_vlans         = "10-20"
      native_vlan           = 1
      copy_po_description   = false
      portchannel_mode      = "on"
      member_interfaces     = "eth1/12-14"
    }
  }

  depends_on = [
    ndfc_vpc_pair.nac_vpc_pair_1,
  ]
}


Step 2 - Close All Open VSCode Tabs for Next Terraform Section

In your VSCode application; on the keyword press Ctrl + K + W. This should close all open tabs to clear your workspace.