Files
hunfabric/modules/net-cloudnat
Magido Mascate 3cd43aca62 Cloudnat E-2-E Tests (#2149)
* Create E2E tests for Cloud NAT

---------

Co-authored-by: Magido Mascate <magido@google.com>
2024-03-11 16:47:11 +01:00
..
2023-08-28 15:06:31 +00:00
2024-03-11 16:47:11 +01:00
2024-02-26 10:16:52 +00:00

Cloud NAT Module

Simple Cloud NAT management, with optional router creation.

Basic Example

module "nat" {
  source         = "./fabric/modules/net-cloudnat"
  project_id     = var.project_id
  region         = var.region
  name           = "default"
  router_network = var.vpc.self_link
}
# tftest modules=1 resources=2 e2e

Reserved IPs and custom rules

module "addresses" {
  source     = "./fabric/modules/net-address"
  project_id = var.project_id
  external_addresses = {
    a1 = { region = var.region }
    a2 = { region = var.region }
    a3 = { region = var.region }
  }
}

module "nat" {
  source         = "./fabric/modules/net-cloudnat"
  project_id     = var.project_id
  region         = var.region
  name           = "nat"
  router_network = var.vpc.self_link
  addresses = [
    module.addresses.external_addresses["a1"].self_link,
    module.addresses.external_addresses["a3"].self_link
  ]

  config_port_allocation = {
    enable_endpoint_independent_mapping = false
  }

  rules = [
    {
      description = "rule1"
      match       = "destination.ip == '8.8.8.8'"
      source_ips = [
        module.addresses.external_addresses["a2"].self_link
      ]
    }
  ]
}
# tftest modules=2 resources=5 inventory=rules.yaml e2e

Variables

name description type required default
name Name of the Cloud NAT resource. string
project_id Project where resources will be created. string
region Region where resources will be created. string
addresses Optional list of external address self links. list(string) []
config_port_allocation Configuration for how to assign ports to virtual machines. min_ports_per_vm and max_ports_per_vm have no effect unless enable_dynamic_port_allocation is set to 'true'. object({…}) {}
config_source_subnets Subnetwork configuration (ALL_SUBNETWORKS_ALL_IP_RANGES, ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, LIST_OF_SUBNETWORKS). string "ALL_SUBNETWORKS_ALL_IP_RANGES"
config_timeouts Timeout configurations. object({…}) {}
logging_filter Enables logging if not null, value is one of 'ERRORS_ONLY', 'TRANSLATIONS_ONLY', 'ALL'. string null
router_asn Router ASN used for auto-created router. number null
router_create Create router. bool true
router_name Router name, leave blank if router will be created to use auto generated name. string null
router_network Name of the VPC used for auto-created router. string null
rules List of rules associated with this NAT. list(object({…})) []
subnetworks Subnetworks to NAT, only used when config_source_subnets equals LIST_OF_SUBNETWORKS. list(object({…})) []

Outputs

name description sensitive
id Fully qualified NAT (router) id.
name Name of the Cloud NAT.
nat_ip_allocate_option NAT IP allocation mode.
region Cloud NAT region.
router Cloud NAT router resources (if auto created).
router_name Cloud NAT router name.