cloud-foundation-fabric/modules/dns
Simone Ruffilli a29faa7f8c
instance_termination_action must be set for compute-vm spot instances (#778)
* Bumped providers version
* Adds ability to control instance_termination_action for SpotVMs
2022-08-20 18:37:17 +02:00
..
README.md Fix broken link (#555) 2022-02-24 06:21:43 +00:00
main.tf Fixed issue with missing project reference in Cloud DNS data source when creating a public zone. 2022-07-19 11:08:13 +02:00
outputs.tf Copyright bump (#410) 2022-01-01 15:52:31 +01:00
variables.tf Copyright bump (#410) 2022-01-01 15:52:31 +01:00
versions.tf instance_termination_action must be set for compute-vm spot instances (#778) 2022-08-20 18:37:17 +02:00

README.md

Google Cloud DNS Module

This module allows simple management of Google Cloud DNS zones and records. It supports creating public, private, forwarding, peering and service directory based zones.

For DNSSEC configuration, refer to the dns_managed_zone documentation.

Examples

Private Zone

module "private-dns" {
  source          = "./modules/dns"
  project_id      = "myproject"
  type            = "private"
  name            = "test-example"
  domain          = "test.example."
  client_networks = [var.vpc.self_link]
  recordsets = {
    "A localhost" = { ttl = 300, records = ["127.0.0.1"] }
  }
}
# tftest modules=1 resources=2

Forwarding Zone

module "private-dns" {
  source          = "./modules/dns"
  project_id      = "myproject"
  type            = "forwarding"
  name            = "test-example"
  domain          = "test.example."
  client_networks = [var.vpc.self_link]
  forwarders      = { "10.0.1.1" = null, "1.2.3.4" = "private" }
}
# tftest modules=1 resources=1

Peering Zone

module "private-dns" {
  source          = "./modules/dns"
  project_id      = "myproject"
  type            = "peering"
  name            = "test-example"
  domain          = "test.example."
  client_networks = [var.vpc.self_link]
  peer_network    = var.vpc2.self_link
}
# tftest modules=1 resources=1

Variables

name description type required default
domain Zone domain, must end with a period. string
name Zone name, must be unique within the project. string
project_id Project id for the zone. string
client_networks List of VPC self links that can see this zone. list(string) []
default_key_specs_key DNSSEC default key signing specifications: algorithm, key_length, key_type, kind. any {}
default_key_specs_zone DNSSEC default zone signing specifications: algorithm, key_length, key_type, kind. any {}
description Domain description. string "Terraform managed."
dnssec_config DNSSEC configuration: kind, non_existence, state. any {}
forwarders Map of {IPV4_ADDRESS => FORWARDING_PATH} for 'forwarding' zone types. Path can be 'default', 'private', or null for provider default. map(string) {}
peer_network Peering network self link, only valid for 'peering' zone types. string null
recordsets Map of DNS recordsets in "type name" => {ttl, [records]} format. map(object({…})) {}
service_directory_namespace Service directory namespace id (URL), only valid for 'service-directory' zone types. string null
type Type of zone to create, valid values are 'public', 'private', 'forwarding', 'peering', 'service-directory'. string "private"
zone_create Create zone. When set to false, uses a data source to reference existing zone. bool true

Outputs

name description sensitive
dns_keys DNSKEY and DS records of DNSSEC-signed managed zones.
domain The DNS zone domain.
name The DNS zone name.
name_servers The DNS zone name servers.
type The DNS zone type.
zone DNS zone resource.