Démarrage rapide : Configurer Terraform avec Azure Cloud ShellQuickstart: Configure Terraform using Azure Cloud Shell

Terraform permet la définition, l’aperçu et le déploiement d’une infrastructure cloud.Terraform enables the definition, preview, and deployment of cloud infrastructure. Terraform vous permet de créer des fichiers de configuration à l’aide de la syntaxe HCL.Using Terraform, you create configuration files using HCL syntax. La syntaxe HCL vous permet de spécifier un fournisseur de services cloud, tel qu’Azure, et les éléments qui composent votre infrastructure cloud.The HCL syntax allows you to specify the cloud provider - such as Azure - and the elements that make up your cloud infrastructure. Après avoir créé vos fichiers de configuration, vous créez un plan d’exécution qui vous permet d’afficher un aperçu de vos modifications d’infrastructure avant leur déploiement.After you create your configuration files, you create an execution plan that allows you to preview your infrastructure changes before they're deployed. Une fois que vous avez vérifié les modifications, vous appliquez le plan d’exécution pour déployer l’infrastructure.Once you verify the changes, you apply the execution plan to deploy the infrastructure.

Cet article vous montre comment débuter avec Terraform sur Azure.This article describes how to get started with Terraform on Azure.

Dans cet article, vous apprendrez comment :In this article, you learn how to:

  • Authentifiez-vous sur AzureAuthenticate to Azure
  • Créer un principal du service Azure à l’aide d’Azure CLICreate an Azure service principal using the Azure CLI
  • S’authentifier sur Azure à l’aide d’un principal du serviceAuthenticate to Azure using a service principal
  • Définir l’abonnement Azure - à utiliser si vous possédez plusieurs abonnementsSet the current Azure subscription - for use if you have multiple subscriptions
  • Créer un fichier de configuration Terraform de baseCreate a base Terraform configuration file
  • Créer et appliquer un plan d’exécution TerraformCreate and apply a Terraform execution plan
  • Annuler un plan d’exécutionReverse an execution plan

PrérequisPrerequisites

  • Abonnement Azure : si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Configurer votre environnementConfigure your environment

  1. Accédez au portail Azure.Browse to the Azure portal.

  2. Si vous n’êtes pas déjà connecté, le portail Azure affiche la liste des comptes Microsoft disponibles.If you aren't already logged in, the Azure portal displays a list of available Microsoft accounts. Sélectionnez un compte Microsoft associé à un ou plusieurs abonnements Azure actifs, et entrez vos informations d’identification pour continuer.Select a Microsoft account associated with one or more active Azure subscriptions and enter your credentials to continue.

  3. Ouvrez Cloud Shell.Open Cloud Shell.

    Accès à Cloud Shell

  4. Si vous n’avez pas déjà utilisé Cloud Shell, configurez les paramètres d’environnement et de stockage.If you haven't previously used Cloud Shell, configure the environment and storage settings. Cet article utilise l’environnement Bash.This article uses the Bash environment.

Remarques:Notes:

  • Cloud Shell installe automatiquement la dernière version de Terraform.Cloud Shell automatically has the latest version of Terraform installed. En outre, Terraform utilise automatiquement les informations de l’abonnement Azure actuel.Also, Terraform automatically uses information from the current Azure subscription. Par conséquent, aucune installation ni configuration n’est requise.As a result, there's no installation or configuration required.

Authentifiez-vous sur AzureAuthenticate to Azure

Cloud Shell est authentifié automatiquement sous le compte Microsoft avec lequel vous aviez l’habitude de vous connecter au portail Azure.Cloud Shell is automatically authenticated under the Microsoft account you used to log into the Azure portal. Si votre compte présente plusieurs abonnements Azure, vous pouvez basculer vers l’un de vos autres abonnements.If your account has multiple Azure subscriptions, you can switch to one of your other subscriptions.

Terraform prend en charge plusieurs options d’authentification auprès d’Azure.Terraform supports several options for authenticating to Azure. Les techniques suivantes sont traitées dans cet article :The following techniques are covered in this article:

S’authentifier via un compte MicrosoftAuthenticate via Microsoft account

L’appel de az login sans aucun paramètre affiche une URL et un code.Calling az login without any parameters displays a URL and a code. Accédez à l’URL, entrez le code et suivez les instructions pour vous connecter à Azure à l’aide de votre compte Microsoft.Browse to the URL, enter the code, and follow the instructions to log into Azure using your Microsoft account. Une fois que vous êtes connecté, revenez au portail.Once you're logged in, return to the portal.

az login

Remarques:Notes:

  • Une fois la connexion établie, az login affiche la liste des abonnements Azure associés au compte Microsoft connecté.Upon successful login, az login displays a list of the Azure subscriptions associated with the logged-in Microsoft account.
  • Une liste de propriétés s’affiche pour chaque abonnement Azure disponible.A list of properties displays for each available Azure subscription. La propriété isDefault identifie l’abonnement Azure que vous utilisez.The isDefault property identifies which Azure subscription you're using. Pour savoir comment basculer vers un autre abonnement Azure, consultez la section Définir l’abonnement Azure actuel.To learn how to switch to another Azure subscription, see the section, Set the current Azure subscription.

S’authentifier par le biais d’un principal de service AzureAuthenticate via Azure service principal

Créez un principal de service Azure : pour vous connecter à un abonnement Azure à l’aide d’un principal de service, vous devez d’abord accéder à un principal de service.Create an Azure service principal: To log into an Azure subscription using a service principal, you first need access to a service principal. Si vous disposez déjà d’un principal de service, vous pouvez ignorer cette partie de la section.If you already have a service principal, you can skip this part of the section.

Les outils automatisés qui déploient ou utilisent des services Azure, tels que Terraform, doivent toujours avoir des autorisations restreintes.Automated tools that deploy or use Azure services - such as Terraform - should always have restricted permissions. Plutôt que d’avoir des applications qui se connectent en tant qu’utilisateur entièrement privilégié, Azure offre des principaux de service.Instead of having applications log in as a fully privileged user, Azure offers service principals. Mais, que se passe-t-il si vous n’avez pas de principal de service avec lequel vous connecter ?But, what if you don't have a service principal with which to log in? Dans ce scénario, vous pouvez vous connecter en utilisant vos informations d’identification utilisateur, puis créer un principal de service.In that scenario, you can log in using your user credentials and then create a service principal. Une fois le principal de service créé, vous pouvez utiliser ses informations pour les tentatives de connexion ultérieures.Once the service principal is created, you can use its information for future login attempts.

Il existe de nombreuses options lors de la création d’un principal de service avec Azure CLI.There are many options when creating a service principal with the Azure CLI. Dans cet article, nous allons utiliser az ad sp create-for-rbac pour créer un principal de service avec un rôle de Contributeur.For this article, we'll create use az ad sp create-for-rbac to create a service principal with a Contributor role. Le rôle Contributeur (rôle par défaut) dispose des autorisations complètes de lecture et d’écriture sur un compte Azure.The Contributor role (the default) has full permissions to read and write to an Azure account. Pour plus d’informations sur les rôles et le contrôle d’accès en fonction du rôle, consultez RBAC : pour les ressources Azure.For more information about Role-Based Access Control (RBAC) and roles, see RBAC: Built-in roles.

Entrez la commande suivante, en remplaçant <subscription_id> par l’ID du compte d’abonnement que vous souhaitez utiliser.Enter the following command, replacing <subscription_id> with the ID of the subscription account you want to use.

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription_id>"

Remarques:Notes:

  • À la fin de l’opération, az ad sp create-for-rbac affiche plusieurs valeurs.Upon successful completion, az ad sp create-for-rbac displays several values. Les valeurs name, password et tenant sont utilisées à l’étape suivante.The name, password, and tenant values are used in the next step.
  • Le mot de passe ne peut pas être récupéré en cas de perte.The password can't be retrieved if lost. Par conséquent, vous devez conserver votre mot de passe en lieu sûr.As such, you should store your password in a safe place. Si vous oubliez le mot de passe, vous devrez réinitialiser les informations d’identification du principal de service.If you forget your password, you'll need to reset the service principal credentials.

Connexion à l’aide d’un principal de service Azure : Dans l’appel suivant à az login, remplacez les espaces réservés par les informations de votre principal de service.Log in using an Azure service principal: In the following call to az login, replace the placeholders with the information from your service principal.

az login --service-principal -u <service_principal_name> -p "<service_principal_password>" --tenant "<service_principal_tenant>"

Définir l’abonnement Azure actuelSet the current Azure subscription

Un compte Microsoft peut être associé à plusieurs abonnements Azure.A Microsoft account can be associated with multiple Azure subscriptions. Les étapes suivantes expliquent comment vous pouvez basculer entre vos abonnements :The following steps outline how you can switch between your subscriptions:

  1. Pour afficher l’abonnement Azure actuel, utilisez az account show.To view the current Azure subscription, use az account show.

    az account show
    
  2. Si vous avez accès à plusieurs abonnements Azure disponibles, utilisez az account list pour afficher la liste des valeurs d’ID de nom d’abonnement :If you have access to multiple available Azure subscriptions, use az account list to display a list of subscription name ID values:

    az account list --query "[].{name:name, subscriptionId:id}"
    
  3. Pour utiliser un abonnement Azure spécifique pour la session Cloud Shell actuelle, utilisez az account set.To use a specific Azure subscription for the current Cloud Shell session, use az account set. Remplacez l’espace réservé <subscription_id> par l’ID (ou le nom) de l’abonnement que vous souhaitez utiliser :Replace the <subscription_id> placeholder with the ID (or name) of the subscription you want to use:

    az account set --subscription="<subscription_id>"
    

    Remarques:Notes:

    • L’appel de az account set n’affiche pas les résultats du basculement vers l’abonnement Azure spécifié.Calling az account set doesn't display the results of switching to the specified Azure subscription. Toutefois, vous pouvez utiliser az account show pour confirmer que l’abonnement Azure actuel a changé.However, you can use az account show to confirm that the current Azure subscription has changed.

Créer un fichier de configuration Terraform de baseCreate a base Terraform configuration file

Un fichier de configuration Terraform commence par la spécification du fournisseur.A Terraform configuration file starts off with the specification of the provider. Lorsque vous utilisez Azure, vous devez spécifier le fournisseur Azure (azurerm) dans le bloc provider.When using Azure, you'll specify the Azure provider (azurerm) in the provider block.

terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}
resource "azurerm_resource_group" "rg" {
  name = "<resource_group_name>"
  location = "<location>"
}

# Your Terraform code goes here...

Remarques:Notes:

  • Même si l’attribut version est facultatif, HashiCorp recommande l’épinglage d’une version donnée du fournisseur.While the version attribute is optional, HashiCorp recommends pinning to a given version of the provider.
  • Si vous utilisez le fournisseur Azure 1.x, le bloc features n’est pas autorisé.If you're using Azure provider 1.x, the features block isn't allowed.
  • Si vous utilisez le fournisseur Azure 2.x, le bloc features est obligatoire.If you're using Azure provider 2.x, the features block is required.
  • La déclaration de ressource de azurerm_resource_group a deux arguments : name et location.The resource declaration of azurerm_resource_group has two arguments: name and location. Définissez les espaces réservés sur les valeurs appropriées pour votre environnement.Set the placeholders to the appropriate values for your environment.
  • La valeur nommée locale de rg pour le groupe de ressources est utilisée dans les articles de guide pratique et les tutoriels lorsque vous référencez le groupe de ressources.The local named value of rg for the resource group is used throughout the how-to and tutorial articles when referencing the resource group. Cette valeur est indépendante du nom du groupe de ressources et fait uniquement référence au nom de la variable dans votre code.This value is independent of the resource group name and only refers to the variable name in your code. Si vous changez cette valeur dans la définition du groupe de ressources, vous devrez également la changer dans le code qui la référence.If you change this value in the resource group definition, you'll need to also change it in the code that references it.

Créer et appliquer un plan d’exécution TerraformCreate and apply a Terraform execution plan

Dans cette section, vous allez voir comment créer un plan d’exécution et l’appliquer à votre infrastructure cloud.In this section, you learn how to create an execution plan and apply it to your cloud infrastructure.

  1. Pour initialiser le déploiement Terraform, exécutez terraform init.To initialize the Terraform deployment, run terraform init. Cette commande télécharge les modules Azure nécessaires pour créer un groupe de ressources Azure.This command downloads the Azure modules required to create an Azure resource group.

    terraform init
    
  2. Après l’initialisation, créez un plan d’exécution en exécutant terraform plan.After initialization, you create an execution plan by running terraform plan.

    terraform plan -out <terraform_plan>.tfplan
    

    Remarques :Notes:

    • La commande terraform plan crée un plan d’exécution, mais ne l’exécute pas.The terraform plan command creates an execution plan, but doesn't execute it. Au lieu de cela, elle détermine les actions nécessaires pour créer la configuration spécifiée dans vos fichiers de configuration.Instead, it determines what actions are necessary to create the configuration specified in your configuration files. 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 réelles.This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • Le paramètre facultatif -out vous permet de spécifier un fichier de sortie pour le plan.The optional -out parameter allows you to specify an output file for the plan. L’utilisation du paramètre -out garantit que le plan que vous avez examiné correspond exactement à ce qui est appliqué.Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • Pour en savoir plus sur la persistance des plans d’exécution et de la sécurité, consultez la section d’avertissement de sécurité.To read more about persisting execution plans and security, see the security warning section.
  3. Une fois que vous êtes prêt à appliquer le plan d’exécution à votre infrastructure cloud, exécutez terraform apply.Once you're ready to apply the execution plan to your cloud infrastructure, you run terraform apply.

    terraform apply <terraform_plan>.tfplan
    

Annuler un plan d’exécution TerraformReverse a Terraform execution plan

  1. Pour annuler le plan d’exécution, vous devez exécuter terraform plan, puis spécifier l’indicateur destroy comme indiqué ci-dessous :To reverse, or undo, the execution plan, you run terraform plan and specify the destroy flag as follows:

    terraform plan -destroy -out <terraform_plan>.destroy.tfplan
    

    Remarques :Notes:

    • La commande terraform plan crée un plan d’exécution, mais ne l’exécute pas.The terraform plan command creates an execution plan, but doesn't execute it. Au lieu de cela, elle détermine les actions nécessaires pour créer la configuration spécifiée dans vos fichiers de configuration.Instead, it determines what actions are necessary to create the configuration specified in your configuration files. 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 réelles.This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • Le paramètre facultatif -out vous permet de spécifier un fichier de sortie pour le plan.The optional -out parameter allows you to specify an output file for the plan. L’utilisation du paramètre -out garantit que le plan que vous avez examiné correspond exactement à ce qui est appliqué.Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • Pour en savoir plus sur la persistance des plans d’exécution et de la sécurité, consultez la section d’avertissement de sécurité.To read more about persisting execution plans and security, see the security warning section.
  2. Exécutez terraform apply pour appliquer le plan d’exécution.Run terraform apply to apply the execution plan.

    terraform apply <terraform_plan>.destroy.tfplan
    

DépannageTroubleshooting

Pour une prise en charge de Terraform, utilisez l’un des canaux de support suivants de la communauté HashiCorp concernant Terraform :For Terraform-specific support, use one of HashiCorp's community support channels to Terraform:

Étapes suivantesNext steps