Newer
Older
openstack-caracal-dc-dc / opentofu / modules / site-wan / main.tf
# site-wan: NAT'd per-site ISP uplink (see variables.tf for rationale).
#
# SCHEMA NOTE: this provider (registry.opentofu.org/dmacvicar/libvirt) uses
# attribute-style nested objects, confirmed 2026-07-15 via
# `tofu providers schema -json` (the method dc-planes/main.tf calls for):
#   forward = { mode = "nat" }        (nesting=single; no top-level `mode`)
#   ips     = [ { address, prefix } ] (nesting=list)
#   mtu     = { size = N }            (nesting=single; matches dc-planes)
#   domain  = { name = ... }          (nesting=single; matches dc-planes)
# This mirrors the live `office1-wan` (virsh): <forward mode='nat'>, .1/24.
# DHCP is intentionally OMITTED -- the only client is the edge, whose WAN is
# static (office1-opnsense's WAN is .2, outside office1-wan's DHCP range).

resource "libvirt_network" "site_wan" {
  name      = var.network_name
  autostart = true

  forward = {
    mode = "nat"
  }

  domain = {
    name = var.network_name
  }

  mtu = {
    size = var.mtu
  }

  ips = [
    {
      address = cidrhost(var.cidr, 1)
      prefix  = tonumber(split("/", var.cidr)[1])
    }
  ]
}