From c7b9360f09d96093086ed02c202fb3c73cef3f0b Mon Sep 17 00:00:00 2001 From: Cameron Schaeffer Date: Sat, 22 Nov 2025 19:31:29 +0000 Subject: [PATCH] Add L2 VFI Terraform module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Terraform mapping logic to translate schema's L2 VFI/VPLS configurations into the Terraform provider's iosxe_l2_vfi resource attributes. - Add iosxe_l2_vfi.tf with support for manual, autodiscovery modes - Support device-specific configuration with global defaults - Support multiple neighbors with mpls and l2tpv3 encapsulation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 1 + iosxe_l2_vfi.tf | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 iosxe_l2_vfi.tf diff --git a/README.md b/README.md index 94121fa..38b1080 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,7 @@ module "iosxe" { | [iosxe_interface_switchport.ethernet_switchport](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/interface_switchport) | resource | | [iosxe_interface_switchport.port_channel_switchport](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/interface_switchport) | resource | | [iosxe_interface_vlan.vlan](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/interface_vlan) | resource | +| [iosxe_l2_vfi.l2_vfi](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/l2_vfi) | resource | | [iosxe_license.license](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/license) | resource | | [iosxe_line.line](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/line) | resource | | [iosxe_lldp.lldp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.10.2/docs/resources/lldp) | resource | diff --git a/iosxe_l2_vfi.tf b/iosxe_l2_vfi.tf new file mode 100644 index 0000000..0ab98f2 --- /dev/null +++ b/iosxe_l2_vfi.tf @@ -0,0 +1,12 @@ +resource "iosxe_l2_vfi" "l2_vfi" { + for_each = { for device in local.devices : device.name => device if try(local.device_config[device.name].l2_vfi, null) != null } + device = each.value.name + + name = try(local.device_config[each.value.name].l2_vfi.name, local.defaults.iosxe.configuration.l2_vfi.name, null) + mode = try(local.device_config[each.value.name].l2_vfi.mode, local.defaults.iosxe.configuration.l2_vfi.mode, null) + vpn_id = try(local.device_config[each.value.name].l2_vfi.vpn_id, local.defaults.iosxe.configuration.l2_vfi.vpn_id, null) + neighbors = [for neighbor in try(local.device_config[each.value.name].l2_vfi.neighbors, []) : { + ip_address = neighbor.ip_address + encapsulation = try(neighbor.encapsulation, local.defaults.iosxe.configuration.l2_vfi.neighbors.encapsulation, null) + }] +}