[linux] Terraform your DNS

DutchEllie (cock.li) dutchellie op cock.li
Vr Sep 23 14:14:45 CEST 2022


Hoi,

De Terraform registry die je linkt bevat o.a. providers en modules. 
Providers zijn geprogrammeerde interfaces om met bijvoorbeeld cloud 
providers te praten, maar het is mogelijk om veel meer te doen dan enkel 
met de API van cloud providers te praten. Ik heb het artikel gevonden 
over "Terraform your DNS" en die lijkt simpelweg een VM aan te maken bij 
Azure en daarop bind9 te installeren. Daarvoor wordt de Azure provider 
gebruikt, die te vinden is op de Terraform registry.

Daarna (na het handmatig opzetten van bind9) wordt er gebruik gemaakt 
van de Terraform DNS provider om de configuratie te configureren en te 
pushen naar de server.

Beide providers worden geconfigureerd in hun "provider" block, die je 1 
keer moet aanroepen om aan Terraform te vertellen dat je die provider 
wilt gebruiken en om de provider in te stellen. Bij Azure zal je dus 
bijvoorbeeld een soort API key (of hoe Azure ook dat doet, geen idee) 
moeten gebruiken. Voor de DNS provider stel je de bind9 (of elke andere 
RFC 2136 compliant DNS server) server en de authenticatieregels die je 
daarvoor nodig hebt in.[1]

Omdat je nu de DNS provider hebt ingesteld met de DNS server en 
wachtwoord om updates te pushen kan je met Terraform nu die updates 
daadwerkelijk pushen.

Nou, dat zijn providers dus, maar hoe stel je dingen met Terraform nou in?
Om die "resources" in te stellen gebruik je "resource" en "data" blocks. 
Een voorbeeld daarvan is bijvoorbeeld de "dns_a_record_set" van de DNS 
provider. [2]

resource "dns_a_record_set" "www" {
   zone = "example.com."
   name = "www"
   addresses = [
     "192.168.0.1",
     "192.168.0.2",
     "192.168.0.3",
   ]
   ttl = 300
}

Dit is een voorbeeld. Er wordt een resource van het type 
"dns_a_record_set" gemaakt met de naam "www". Dat opent een block en 
daarin stel je de benodigde velden in. In dit geval is dat de zone, 
naam, adressen en ttl. De reference voor welke arguments mogelijk zijn 
zijn te vinden op de documentatie pagina van de resource in de provider. 
In dit geval referentie [2]. Aan de linkerkant van die pagina staan nog 
een aantal andere resources. De data sources die daar ook staan kan je 
voor nu negeren, die worden gebruikt voor output naar de terminal of 
voor geprogrammeerde input voor andere resources als dat nodig is.

Als je meer vragen hebt over Terraform, gewoon terugmailen. Veel succes! 
Dit is een interessant project!

Groeten,
DutchEllie

[1] 
https://registry.terraform.io/providers/hashicorp/dns/latest/docs#configuration-reference
[2] 
https://registry.terraform.io/providers/hashicorp/dns/latest/docs/resources/dns_a_record_set

On 9/17/22 22:37, Geert Stappers via Linux wrote:
> Hoi,
>
>
> Vandaag was ik op de bijeenkomst van de NLLGG
> bij de lezing[1] met de demo van terraform[2][3].
>
> En daar het idee van "Terraform mijn DNS" opgedaan.
>
> Ik heb reeds bind9, kan ook wel aan terraform komen,
> maar ik vindt nog niet de stukken / het stuk wat er tussen moet.
>
> Mijn websearch bracht me bij de terraform registry[4]
> maar daar loopt mijn spoor dood.
>
>
> Hoe heet het ontbrekende onderdeel?
>
>
> Groeten
> Geert Stappers
>
> [1]https://gitlab.dontpanic.nl/pub/terraform-talk
> [2]https://en.wikipedia.org/wiki/Terraform_(software)
> [3]https://www.terraform.io
> [4]https://registry.terraform.io/
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <https://lists.nllgg.nl/pipermail/linux/attachments/20220923/438b6049/attachment.htm>


Meer informatie over de Linux maillijst