Skip to main content

CLI to read Gandi.net live DNS records and generate corresponding TF gandi_livedns_record resources

Project description

Generate Terraform file from Gandi DNS records

Pypi version Python versions Build status

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.

Install

$ pip install gandi-2-terraform
$ gandi2tf --help

Usage

You need to provide the Gandi API key as an environment variable GANDI_KEY (same as for the TF provider).

$ export GANDI_KEY=A1b2C3d4E5f6

When no argument is given, it will fetch all available domains for the given API key:

$ gandi-2tf

Or it can generate the tf configuration file for a single domain:

$ gandi-2tf example.com

Fetching the domains only owned by a single organization:

$ gandi-2tf --organization-id 04303337-a1b0-4b96-8bd7-992005a072e9

Options

  • --organization-id: in case your API key has access to multiple organization, you can filter the list of domains fetched by a single organization ID (uuid).
  • --subdir: flag to create a sub directory per domain and generate the main.tf inside it with a second file containing all the import commands.

Configuration

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.

Example

$ 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
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gandi_2_terraform-1.3.2.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

gandi_2_terraform-1.3.2-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file gandi_2_terraform-1.3.2.tar.gz.

File metadata

  • Download URL: gandi_2_terraform-1.3.2.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.8.0-1014-azure

File hashes

Hashes for gandi_2_terraform-1.3.2.tar.gz
Algorithm Hash digest
SHA256 19078a8245de5c4cd5431a38d0cc793c94aaaab71892b01cf745ddd6fae7d703
MD5 93b7457490b1e106332c49c59e363195
BLAKE2b-256 2597eacbb32164bd56c881499c2ab3f7748ec1b77487fc516a04e1209c676034

See more details on using hashes here.

File details

Details for the file gandi_2_terraform-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: gandi_2_terraform-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.8.0-1014-azure

File hashes

Hashes for gandi_2_terraform-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 de874ab1012221dbab06f7795a47041901dabc0d6624193cda254b78c16c897f
MD5 d9aaa28625c399228c0f3dcda7b0533c
BLAKE2b-256 e013fc7a384bf061447653ce3d65c9e0fa66905b1c997e464bc49dc2eb08b61d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page