80 lines
3.8 KiB
Markdown
80 lines
3.8 KiB
Markdown
# 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
|
|
|
|
```hcl
|
|
# 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
|
|
}
|
|
|
|
# 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
|
|
}
|
|
}
|
|
```
|
|
<!-- BEGIN TFDOC -->
|
|
|
|
## Variables
|
|
|
|
| name | description | type | required | default |
|
|
|---|---|:---:|:---:|:---:|
|
|
| [network_interfaces](variables.tf#L29) | Network interfaces configuration. | <code title="list(object({ routes = optional(list(string)) }))">list(object({…}))</code> | ✓ | |
|
|
| [cloud_config](variables.tf#L17) | Cloud config template path. If null default will be used. | <code>string</code> | | <code>null</code> |
|
|
| [enable_health_checks](variables.tf#L23) | Configures routing to enable responses to health check probes. | <code>bool</code> | | <code>false</code> |
|
|
| [test_instance](variables-instance.tf#L17) | Test/development instance attributes, leave null to skip creation. | <code title="object({ project_id = string zone = string name = string type = string network = string subnetwork = string })">object({…})</code> | | <code>null</code> |
|
|
| [test_instance_defaults](variables-instance.tf#L30) | Test/development instance defaults used for optional configuration. If image is null, COS stable will be used. | <code title="object({ disks = map(object({ read_only = bool size = number })) image = string metadata = map(string) nat = bool service_account_roles = list(string) tags = list(string) })">object({…})</code> | | <code title="{ disks = {} image = null metadata = {} nat = false service_account_roles = [ "roles/logging.logWriter", "roles/monitoring.metricWriter" ] tags = ["ssh"] }">{…}</code> |
|
|
|
|
## Outputs
|
|
|
|
| name | description | sensitive |
|
|
|---|---|:---:|
|
|
| [cloud_config](outputs.tf#L17) | Rendered cloud-config file to be passed as user-data instance metadata. | |
|
|
| [test_instance](outputs-instance.tf#L17) | Optional test instance name and address. | |
|
|
|
|
<!-- END TFDOC -->
|