Présentation de Terraform

Effectué

L’outil IaC open source de Terraform vous permet de définir et de provisionner une infrastructure cloud à l’aide d’un langage de configuration général, connu sous le nom d’HashiCorp Configuration Language (HCL). Terraform codifie l’infrastructure dans des fichiers de configuration qui décrivent l’état souhaité pour votre infrastructure. Terraform peut gérer n’importe quelle infrastructure, comme des clouds publics, des clouds privés et des services SaaS, en utilisant les fournisseurs Terraform.

Fournisseurs Terraform pour l’infrastructure Azure

Plusieurs fournisseurs Terraform permettent de gérer l’infrastructure Azure :

  • AzureRM : gestion des ressources Azure Resource Manager telles que les machines virtuelles, les comptes de stockage et les interfaces réseau.
  • AzureAD : Gérez des ressources Microsoft Entra telles que des groupes, des utilisateurs, des principaux de service et des applications.
  • AzureDevOps : gestion des ressources Azure DevOps telles que les agents, les référentiels, les projets, les pipelines et les requêtes.
  • AzAPI : gestion des ressources Azure en utilisant directement les API Azure Resource Manager. Ce fournisseur vient en complément du fournisseur AzureRM en offrant la possibilité de gérer les ressources Azure les plus récentes.
  • Azure Stack : gestion des ressources Azure Stack telles que les machines virtuelles, DNS, les réseaux virtuels et le stockage.

Créez un compte de stockage.

Toutes les configurations Terraform doivent contenir un bloc provider. Le code HCL suivant spécifie le fournisseur Azure Resource Manager (azurerm). Un groupe de ressources Azure nommé storageaccountexamplerg est défini à l’emplacement eastus. Un compte de stockage Azure est créé dans le groupe de ressources. Le nom du compte de stockage se compose des 24 premiers caractères d’un nombre généré via la fonction md5.

terraform {
  required_version = ">=0.12"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Exécuter le code Terraform

Exécutez terraform init pour télécharger les modules Azure requis pour la gestion de vos ressources Azure :

terraform init

Exécutez terraform plan pour déterminer les actions nécessaires à la création de la configuration spécifiée dans vos fichiers de configuration. Le fait d’exécuter la commande crée un plan d’exécution mais ne l’applique pas. Ce modèle vous permet de vérifier si le plan d’exécution répond à vos attentes avant d’apporter des modifications aux ressources en place.

terraform plan -out main.tfplan

Après avoir vérifié le plan d’exécution, exécutez terraform apply pour appliquer le plan. Cette commande crée les ressources définies.

terraform apply main.tfplan

Vérifier le compte de stockage

Pour vérifier le compte de stockage Azure, vous pouvez utiliser la commande terraform state show. Cette commande affiche l’état actuel de la ressource spécifiée.

Dans le cas du compte de stockage que vous avez créé dans ce module, la commande montre le nom généré ainsi qu’une liste complète des attributs de compte de stockage et de leurs valeurs.

terraform state show 'azurerm_storage_account.example'

Nettoyer les ressources

Lorsque vous n’avez plus besoin des ressources créées dans ce module, exécutez terraform apply avec l’indicateur -destroy :

terraform plan -destroy -out main.destroy.tfplan

Exécutez terraform apply pour appliquer le plan d’exécution :

terraform apply main.destroy.tfplan