Aller au contenu

Atelier 1 — Série Azure

Durée indicative : 45 min
Module lié : Module 1 — L’infrastructure as code

Vous faites les mêmes étapes que la série neutre. La cible n’est plus un fichier. C’est un groupe de ressources Azure. Le suffixe aléatoire sert au nom, pour que deux personnes du lab ne se marchent pas dessus.

Il vous faut Terraform 1.16.5 ou plus récent, Azure CLI, et un compte autorisé à créer un groupe de ressources. La région de l’exemple est switzerlandnorth. Changez location si cette région n’est pas disponible sur la souscription. 1.16.5 est la dernière version stable. L’examen Associate 004 est écrit pour Terraform 1.12.

1. Préparer le dossier et la session Azure

Pourquoi : Terraform agit dans le dossier des fichiers .tf. Azure CLI fournit l’identité que le provider utilisera.
Résultat attendu : un dossier environnement-azure, le terminal est dedans, et az account show affiche la souscription du lab.

mkdir environnement-azure
cd environnement-azure
terraform version
az login
az account show

2. Écrire la description

Pourquoi : vous décrivez le groupe qui doit exister. Vous n’écrivez pas les clics du portail.
Résultat attendu : un fichier main.tf avec le contenu suivant.

terraform {
  required_version = ">= 1.16.5"

  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
    random = {
      source  = "hashicorp/random"
      version = "~> 3.7"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "random_id" "suffixe" {
  byte_length = 2
}

resource "azurerm_resource_group" "environnement" {
  name     = "rg-lab-equipe-${random_id.suffixe.hex}"
  location = "switzerlandnorth"
}

Le bloc features est exigé par le provider AzureRM 4. Il peut rester vide. Le provider lit la session ouverte par az login.

3. Initialiser

Pourquoi : init télécharge azurerm et random.
Résultat attendu : un message de succès, et un dossier .terraform.

terraform init

4. Voir le plan, puis appliquer

Pourquoi : le plan annonce la création sans appeler Azure pour de bon. L’apply crée le groupe.
Résultat attendu : le plan annonce deux créations. Après l’apply, le portail ou la commande suivante montre un groupe rg-lab-equipe- suivi de quatre caractères hexadécimaux.

terraform plan
terraform apply

Répondez yes à la confirmation.

az group list --query "[?starts_with(name, 'rg-lab-equipe-')].name" -o tsv

5. Appliquer une seconde fois

Pourquoi : une description déjà réalisée ne doit pas recréer le groupe.
Résultat attendu : No changes. Le nom du groupe ne change pas.

terraform apply

6. Changer la description

Pourquoi : le changement part du fichier.
Résultat attendu : le plan annonce une mise à jour du groupe, en général un tag ou le nom seulement si vous changez un attribut qui se met à jour sur place.

Ajoutez un tag dans le bloc du groupe de ressources.

resource "azurerm_resource_group" "environnement" {
  name     = "rg-lab-equipe-${random_id.suffixe.hex}"
  location = "switzerlandnorth"

  tags = {
    objectif = "reprise-par-un-collegue"
  }
}
terraform plan
terraform apply

Le plan doit montrer une modification, pas un remplacement du suffixe. Le nom du groupe reste celui du premier apply.

Ne renommez pas le groupe dans cet atelier. Chez Azure, changer name ou location remplace souvent la ressource. Le jour 2 et le module sur le cycle de vie reviennent sur ce remplacement.

7. Détruire

Pourquoi : le lab ne doit pas laisser un groupe ouvert.
Résultat attendu : le groupe rg-lab-equipe-… n’existe plus dans la souscription. main.tf reste sur le disque.

terraform destroy

Répondez yes.

az group list --query "[?starts_with(name, 'rg-lab-equipe-')].name" -o tsv

La commande ne doit plus afficher ce groupe.

Suite

Gardez le dossier environnement-azure si le formateur enchaîne sur le même fil. Sinon, le dépôt sera reconstruit au module suivant à partir de la même description.