This tool aims to simplify managing DNS recods using Terrafom by making the initial import through a single operation.
It fetches DNS records from one or multiple domains you own with Gandi.net and generates TF files with the corresponding records' resources using gandi_livedns_record
and defining each record in a set (see the example output). It will output all the terraform import
command to execute for the records.
$ pip install gandi-2-terraform
$ gandi2tf --help
In order to access the DNS records through the API, you have to provide your API key. It uses the same variable name than the Gandi Terraform provider GANDI_KEY
. See Gandi authentication documentation of their API on how to generate one.
$ export GANDI_KEY=A1b2C3d4E5f6
$ gandi-2tf example.com
will generate a file example.com.tf
containing:
locals {
example_com_records = {
apex_a = {
name = "@"
type = "A"
ttl = 10800
values = [
"192.30.252.153",
"192.30.252.154",
]
}
apex_mx = {
name = "@"
type = "MX"
ttl = 10800
values = [
"10 spool.mail.gandi.net.",
"50 fb.mail.gandi.net.",
]
}
apex_txt = {
name = "@"
type = "TXT"
ttl = 10800
values = [
"\"v=spf1 include:_mailcust.gandi.net -all\"",
]
}
imap_cname = {
name = "imap"
type = "CNAME"
ttl = 10800
values = [
"access.mail.gandi.net.",
]
}
smtp_cname = {
name = "smtp"
type = "CNAME"
ttl = 10800
values = [
"relay.mail.gandi.net.",
]
}
webmail_cname = {
name = "webmail"
type = "CNAME"
ttl = 10800
values = [
"webmail.gandi.net.",
]
}
}
}
resource "gandi_livedns_record" "example_com" {
for_each = local.example_com_records
zone = "example.com"
name = each.value.name
ttl = each.value.ttl
type = each.value.type
values = each.value.values
}