Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Generate Terraform file from Gandi DNS records

Pypi version Python versions Build status

[!IMPORTANT] This repository has been archived as I moved all my domains out of Gandi.net and will not use their services anymore. Therefore I will not be able to keep updating the code if their API changes.

[!WARNING] This project is archived on pypi.org too and will not receive any further update. The final version is 1.3.3.

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
}

Release files for gandi-2-terraform 1.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gandi-2-terraform 1.3.3
File Size Uploaded
gandi_2_terraform-1.3.3.tar.gz 16.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gandi-2-terraform 1.3.3
File Interpreter ABI Platform
gandi_2_terraform-1.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 34.1 kB

Release files / gandi_2_terraform-1.3.3.tar.gz

Download URL gandi_2_terraform-1.3.3.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e8e8bfcebb862d312709e3fba60c2a71c3a215eaea55457d2f2c551be58cb03d
BLAKE2b-256 checksum
How to use checksums
b47d11b24367956c654724f9a377b8c6464695e6871ca95e569a61f4f1d66fc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.13.1 Linux/6.8.0-1020-azure

Release files / gandi_2_terraform-1.3.3-py3-none-any.whl

Download URL gandi_2_terraform-1.3.3-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9020ecc733c1cc2dd77d0e39928d131a287bc96914d3154cb4888bff20fac6fb
BLAKE2b-256 checksum
How to use checksums
cad2ca4f389d607e160b7a7fc2bfacfffa8161c56216e4d2687c95b41944646f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.13.1 Linux/6.8.0-1020-azure
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page