cloud-foundation-fabric/modules/cloud-config-container/simple-nva/README.md

4.4 KiB

Google Simple NVA Module

This module allows for the creation of a NVA (Network Virtual Appliance) to be used for experiments and as a stub for future appliances deployment.

This NVA can be used to interconnect up to 8 VPCs.

Examples

Simple example

# Interfaces configuration
locals {
  network_interfaces = [
    {
      addresses  = null
      name       = "dev"
      nat        = false
      network    = "dev_vpc_self_link"
      routes     = ["10.128.0.0/9"]
      subnetwork = "dev_vpc_nva_subnet_self_link"
    },
    {
      addresses  = null
      name       = "prod"
      nat        = false
      network    = "prod_vpc_self_link"
      routes     = ["10.0.0.0/9"]
      subnetwork = "prod_vpc_nva_subnet_self_link"
    }
}

# NVA config
module "nva-cloud-config" {
  source               = "../../../cloud-foundation-fabric/modules/cloud-config-container/simple-nva"
  enable_health_checks = true
  network_interfaces   = local.network_interfaces
  files = {
    "/var/lib/cloud/scripts/per-boot/firewall-rules.sh" = {
      content     = file("./your_path/to/firewall-rules.sh")
      owner       = "root"
      permissions = 0700
    }
  }
}

# COS VM
module "nva" {
  source             = "../../modules/compute-vm"
  project_id         = "myproject"
  instance_type      = "e2-standard-2"
  name               = "nva"
  can_ip_forward     = true
  zone               = "europe-west8-a"
  tags               = ["nva"]
  network_interfaces = local.network_interfaces
  boot_disk = {
    image = "projects/cos-cloud/global/images/family/cos-stable"
    size  = 10
    type  = "pd-balanced"
  }
  metadata = {
    user-data = module.nva-cloud-config.cloud_config
  }
}

Variables

name description type required default
network_interfaces Network interfaces configuration. list(object({…}))
cloud_config Cloud config template path. If null default will be used. string null
enable_health_checks Configures routing to enable responses to health check probes. bool false
files Map of extra files to create on the instance, path as key. Owner and permissions will use defaults if null. map(object({…})) {}
test_instance Test/development instance attributes, leave null to skip creation. object({…}) null
test_instance_defaults Test/development instance defaults used for optional configuration. If image is null, COS stable will be used. object({…}) {…}

Outputs

name description sensitive
cloud_config Rendered cloud-config file to be passed as user-data instance metadata.
test_instance Optional test instance name and address.