Skip to content

Latest commit

 

History

History
175 lines (131 loc) · 4.46 KB

README.md

File metadata and controls

175 lines (131 loc) · 4.46 KB

go-gandi community logo Terraform Gandi Provider

This provider supports managing the following Gandi resources:

This provider currently doesn't support Organization or Billing APIs. We welcome pull requests to implement more functionality!

Requirements

Installation

  1. Clone the repository
  2. Enter the repository directory
  3. Build the provider:
make
make install

Once installed, run terraform init to enable the Gandi plugin in your terraform environment.

See the Hashicorp Terraform documentation for further details.

Using the provider

This example partly mimics the steps of the official LiveDNS documentation example, using the parts that have been implemented as Terraform resources. Note: sharing_id is optional. It is used e.g. when the API key is registered to a user, where the domain you want to manage is not registered with that user (but the user does have rights on that zone/organization).

terraform {
  required_providers {
    gandi = {
      source = "go-gandi/gandi"
      version = "~> 2.0.0"
    }
  }
}

provider "gandi" {
  key = "<the API key>"
  sharing_id = "<the sharing_id>"
}

resource "gandi_domain" "example_com" {
  name = "example.com"
  owner {
    email = "[email protected]"
    type = "person"
    street_addr = "Example"
    zip = "75000"
    phone = "+33666666666"
    given_name = "Gandi"
    family_name = "Net"
    country = "FR"
    city = "Paris"
  }
}

resource "gandi_livedns_domain" "example_com" {
  name = "example.com"
}

resource "gandi_livedns_record" "www_example_com" {
  zone = "${gandi_livedns_domain.example_com.id}"
  name = "www"
  type = "A"
  ttl = 3600
  values = [
    "192.168.0.1"
  ]
}

resource "gandi_gluerecord" "example_com_gluerecord" {
    zone = "${gandi_livedns_domain.example_com.id}"
    name = "ns1"
    ips = [
        "1.1.1.1"
    ]
}

This example sums up the available resources.

Zone data source

If your zone already exists (which is very likely), you may use it as a data source:

terraform {
  required_providers {
    gandi = {
      version = "X.Y.Z"
      source  = "github/go-gandi/gandi"
    }
  }
}

provider "gandi" {
  key = "<the API key>"
  sharing_id = "<the sharing_id>"
}

data "gandi_domain" "example_com" {
  name = "example.com"
}

resource "gandi_livedns_record" "www" {
  zone = "${data.gandi_domain.example_com.id}"
  name = "www"
  type = "A"
  ttl = 3600
  values = [
    "192.168.0.1"
  ]
}

Licensing

This provider is distributed under the terms of the Mozilla Public License version 2.0. See the LICENSE file.

Its main author is not affiliated in any way with Gandi - apart from being a happy customer of their services.

Development

If you wish to work on the provider, you'll first need Go installed on your machine (see Requirements above).

To compile the provider, run make.

Linting

We use pre-commit to manage and maintain the pre-commit hooks, you can follow the official instructions to install it.

Install

python3 -m pip install pre-commit

Then in the repo root dir

pre-commit install

Generating documentation

As suggested by the Terraform documentation, we use the tfplugindocs project to generate the provider documentation.

Adding Dependencies

This provider uses Go modules. Please see the Go documentation for the most up to date information about using Go modules.

To add a new dependency github.com/author/dependency to your Terraform provider:

go get github.com/author/dependency
go mod tidy

Then commit the changes to go.mod and go.sum.