Skip to content
Learni
View all tutorials
Infrastructure

Comment configurer Cloud DNS avec Terraform en 2026

18 minINTERMEDIATE

Introduction

Cloud DNS de Google Cloud Platform permet de gérer des zones DNS publiques et privées de manière scalable. Dans ce tutoriel, vous apprendrez à automatiser entièrement la création de zones et d'enregistrements via Terraform. L'approche Infrastructure as Code garantit la reproductibilité et réduit les erreurs manuelles. Nous partirons d'une configuration basique pour arriver à un setup production-ready incluant des politiques de routage. Ce guide s'adresse aux développeurs et ingénieurs DevOps ayant déjà une expérience avec GCP et Terraform.

Prérequis

  • Compte Google Cloud avec facturation activée
  • Terraform 1.7+ installé
  • gcloud CLI configuré et authentifié
  • Connaissances de base en DNS et Terraform

Initialisation du projet Terraform

terminal
mkdir cloud-dns-terraform && cd cloud-dns-terraform
terraform init

Nous créons un dossier dédié et initialisons Terraform pour télécharger les providers nécessaires.

Configuration du provider GCP

providers.tf
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 5.0"
    }
  }
}

provider "google" {
  project = var.project_id
  region  = "europe-west1"
}

Le provider Google est configuré avec la variable project_id. Toujours verrouiller la version du provider pour éviter les breaking changes.

Création de la zone DNS

dns_zone.tf
resource "google_dns_managed_zone" "primary" {
  name        = "learni-zone"
  dns_name    = "learni.dev."
  description = "Zone DNS principale pour learni.dev"

  labels = {
    environment = "production"
    managed_by  = "terraform"
  }
}

Cette ressource crée une zone DNS publique. Le nom dns_name doit se terminer par un point. Les labels facilitent le filtrage dans la console GCP.

Ajout d'enregistrements A et CNAME

dns_records.tf
resource "google_dns_record_set" "www" {
  managed_zone = google_dns_managed_zone.primary.name
  name         = "www.learni.dev."
  type         = "A"
  ttl          = 300
  rrdatas      = ["34.120.12.45"]
}

resource "google_dns_record_set" "app" {
  managed_zone = google_dns_managed_zone.primary.name
  name         = "app.learni.dev."
  type         = "CNAME"
  ttl          = 300
  rrdatas      = ["www.learni.dev."]
}

Chaque enregistrement est géré indépendamment. Utilisez toujours le format FQDN avec le point final pour éviter les erreurs de résolution.

Variables et outputs

variables.tf
variable "project_id" {
  description = "ID du projet GCP"
  type        = string
}

output "name_servers" {
  value       = google_dns_managed_zone.primary.name_servers
  description = "Serveurs de noms à configurer chez le registrar"
}

Les outputs permettent de récupérer facilement les name servers à déléguer chez votre registrar DNS.

Bonnes pratiques

  • Toujours versionner les configurations Terraform dans Git
  • Utiliser des workspaces pour séparer les environnements
  • Activer les logs d'audit DNS sur GCP
  • Définir des TTL raisonnables (300s en dev, 3600s en prod)
  • Ajouter des labels systématiquement pour le tagging des ressources

Erreurs courantes à éviter

  • Oublier le point final dans les noms DNS (erreur de résolution)
  • Ne pas déléguer les name servers chez le registrar
  • Utiliser des TTL trop bas en production (coûts élevés)
  • Modifier manuellement les enregistrements dans la console GCP

Pour aller plus loin

Découvrez nos formations avancées sur l'infrastructure cloud pour approfondir Terraform et Google Cloud DNS.