Tous les produits
Search
Centre de documentation

Terraform:Use Terraform on Windows

Dernière mise à jour :Aug 11, 2026

Cette rubrique explique comment utiliser Terraform sous Windows pour créer des ressources Alibaba Cloud.

La gestion de votre infrastructure en tant que code (IaC) avec Terraform comprend les principales étapes suivantes.

  1. Installer Terraform : assurez-vous que votre système peut reconnaître et exécuter les commandes Terraform.

  2. Rédiger un fichier de configuration Terraform : le fichier de configuration constitue le cœur de Terraform. Il décrit la création, la configuration et les dépendances des ressources, telles que les VPC, les instances ECS et les buckets OSS.

  3. Initialiser et créer les ressources : cette étape cruciale transforme votre conception d'infrastructure en ressources actives.

  4. Consulter et gérer les ressources : après le déploiement, vous pouvez consulter et gérer votre infrastructure afin de garantir qu'elle répond aux exigences actuelles.

  5. Détruire les ressources : lorsqu'elles ne sont plus nécessaires, vous pouvez détruire les ressources.

1. Installer Terraform

  1. Accédez au site web officiel de Terraform, téléchargez le binaire Terraform adapté à votre système d'exploitation Windows, puis extrayez-le.

    La page de téléchargement propose des packages d'installation pour les architectures 386 et AMD64. Sélectionnez celle qui correspond à votre système et cliquez sur Download.

  2. Ajoutez le chemin d'installation de Terraform à la variable d'environnement Path .

    1. Sur votre bureau, effectuez un clic droit sur This PC, puis sélectionnez Properties > Advanced system settings > Environment Variables.

    2. Sous System variables ou User variables, cliquez sur Path, puis sélectionnez Edit > New. Saisissez le chemin du répertoire dans lequel vous avez extrait le binaire Terraform, puis cliquez sur OK pour enregistrer vos modifications.

  3. Vérifiez l'installation. Appuyez sur les touches Win+R , saisissez cmd, puis cliquez sur OK pour ouvrir l'invite de commandes. Exécutez la commande terraform --version. Si vous obtenez une sortie similaire à celle ci-dessous, l'installation a réussi.

    Terraform v1.9.3
    on windows_amd64
    

2. Rédiger un fichier de configuration Terraform

Le fichier de configuration constitue le cœur de Terraform. Il définit les ressources d'infrastructure à déployer dans le cloud ou sur site, telles que VPC, ECS et OSS.

  1. Créez un nouveau dossier, par exemple ecs, puis créez-y un fichier de configuration Terraform nommé main.tf .

    Il est recommandé de créer un répertoire de travail distinct pour chaque projet Terraform. Cette pratique permet de maintenir les ressources organisées, d'éviter les conflits de fichiers d'état et de simplifier le contrôle de version. Cette séparation facilite également l'isolation des environnements et la gestion des modules, ce qui améliore la maintenabilité et la sécurité.

  2. Rédigez le fichier de configuration Terraform. L'instance ECS et ses ressources dépendantes, telles que le VPC et le groupe de sécurité, sont définies sous forme de code dans le fichier de configuration. Vous pouvez copier le code suivant dans main.tf .

    Important
    • Cet exemple crée une instance ECS en paiement à l'utilisation, ce qui engendre des frais dès sa création.

    • Cet exemple utilise des variables d'environnement pour l'authentification Terraform. Pour plus d'informations, consultez Authentification Terraform.

    Les ressources suivantes sont requises pour créer une instance ECS :

    |
    **Resource**
    |
    **Description**
    | | --- | --- | |
    [alicloud_vpc](t2531765.xdita#)
    |
    Crée une instance VPC.
    | |
    [alicloud_vswitch](t2531741.xdita#)
    |
    Crée une instance vSwitch.
    | |
    [alicloud_security_group](t2532355.xdita#)
    |
    Crée un groupe de sécurité.
    | |
    [alicloud_security_group_rule](t2532354.xdita#)
    |
    Crée des règles entrantes et sortantes pour un groupe de sécurité.
    | |
    [alicloud_instance](t2532363.xdita#)
    |
    Crée une instance ECS.
    |























    |
    **Resource**
    |
    **Description**
    | | --- | --- | |
    [alicloud_vpc](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc)
    |
    Crée une instance VPC.
    | |
    [alicloud_vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch)
    |
    Crée une instance vSwitch.
    | |
    [alicloud_security_group](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group)
    |
    Crée un groupe de sécurité.
    | |
    [alicloud_security_group_rule](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule)
    |
    Crée des règles entrantes et sortantes pour un groupe de sécurité.
    | |
    [alicloud_instance](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance)
    |
    Crée une instance ECS.
    |
    variable "name" {
      type    = string
      default = "tf-test"
    }
    # Specify the region.
    variable "region" {
      type    = string
      default = "cn-beijing"
    }
    # Public bandwidth. If greater than 0, a public IP address is assigned to the instance.
    variable "internet_max_bandwidth_out" {
      type    = number
      default = 10
    }
    # Specify the ECS instance type.
    variable "instance_type" {
      type    = string
      default = "ecs.e-c1m1.large"
    }
    # Specify the image ID.
    variable "image_id" {
      default = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
    }
    # Define tags for the resources.
    variable "tags" {
      type    = map(string)
      default = {
        From =  "Terraform"
        Usage =  "demo"
      }
    }
    provider "alicloud" {
      region = var.region
    }
    # Get available zones for the specified instance type.
    data "alicloud_zones" "default" {
      available_instance_type = var.instance_type
      available_resource_creation = "VSwitch"
      available_disk_category = "cloud_ssd"
    }
    # Create a VPC.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = var.name
      cidr_block = "172.16.0.0/12"
    }
    # Create a vSwitch.
    resource "alicloud_vswitch" "vsw" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "172.16.0.0/21"
      zone_id    = data.alicloud_zones.default.zones[0].id
    }
    # Create a security group.
    resource "alicloud_security_group" "default" {
      name   = var.name
      vpc_id = alicloud_vpc.vpc.id
    }
    # Add an inbound rule to allow SSH access.
    resource "alicloud_security_group_rule" "allow_tcp_22" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
    # Create an ECS instance.
    resource "alicloud_instance" "instance" {
      availability_zone          = data.alicloud_zones.default.zones.0.id
      security_groups            = alicloud_security_group.default.*.id
      instance_type              = var.instance_type
      system_disk_category       = "cloud_essd_entry"
      image_id                   = var.image_id
      instance_name              = var.name
      vswitch_id                 = alicloud_vswitch.vsw.id
      internet_max_bandwidth_out = var.internet_max_bandwidth_out
      tags                       = var.tags
    }
    output "ecs_id" {
      value = alicloud_instance.instance.id
    }
    output "ecs_ip" {
      value = alicloud_instance.instance.public_ip
    }
























3. Initialiser et créer les ressources

Une fois le fichier de configuration Terraform rédigé, vous devez initialiser le répertoire de travail avant de créer les ressources.

3,1 Initialiser Terraform

Dans l'invite de commandes , accédez au dossier créé à l'étape 2, puis exécutez la commande terraform init. Pour toute nouvelle configuration Terraform, terraform init est la première commande à exécuter. Elle initialise le répertoire de travail, télécharge le plugin du fournisseur Alibaba Cloud requis et crée les autres fichiers nécessaires.

# Switch to the D: drive.
d:
# Switch to the folder path from Step 2. Replace tool/terraform/projects/ecs with your actual path.
cd tool/terraform/projects/ecs
# Run the initialization command.
terraform init

3,2 Créer les ressources

  1. Exécutez terraform plan pour créer un plan d'exécution. Le plan affiche des informations détaillées sur toutes les ressources qui seront créées, modifiées ou détruites lors de l'exécution de terraform apply.

    ...
          + router_table_id     = (known after apply)
          + secondary_cidr_blocks = (known after apply)
          + status              = (known after apply)
          + user_cidrs          = (known after apply)
          + vpc_name            = "tf_vpc_test"
        }
      # alicloud_vswitch.vsw will be created
      + resource "alicloud_vswitch" "vsw" {
          + availability_zone    = (known after apply)
          + cidr_block           = "172.16.0.0/21"
          + create_time          = (known after apply)
          + id                   = (known after apply)
          + ipv6_cidr_block      = (known after apply)
          + ipv6_cidr_block_mask = (known after apply)
          + name                 = (known after apply)
          + status               = (known after apply)
          + vpc_id               = (known after apply)
          + vswitch_name         = (known after apply)
          + zone_id              = "cn-beijing-a"
        }
    Plan: 5 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if
    you run "terraform apply" now.
  2. Lorsque vous exécutez terraform apply, les ressources sont créées selon le plan d'exécution généré par terraform plan. Pendant le processus de création, vous devez saisir yes lorsque vous y êtes invité pour poursuivre la création des ressources. Pour plus d'informations sur la transmission de valeurs aux variables, consultez Variable.

    Plan: 5 to add, 0 to change, 0 to destroy.
    Changes to Outputs:
      + ecs_id = (known after apply)
      + ecs_ip = (known after apply)
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
    alicloud_vpc.vpc: Creating...
    alicloud_vpc.vpc: Creation complete after 7s [id=vpc-2zexxx5: xxxk5w]
    alicloud_security_group.default: Creating...
    alicloud_vswitch.vsw: Creating...
    alicloud_security_group.default: Creation complete after 2s [id=sg-2zexxx4xxx9pa]
    alicloud_security_group_rule.allow_tcp_22: Creating...
    alicloud_security_group_rule.allow_tcp_22: Creation complete after 0s [id=sg-2zexxx4xxx9pa:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
    alicloud_vswitch.vsw: Creation complete after 4s [id=vsw-2zexxxxxxxxxxxgwdf]
    alicloud_instance.instance: Creating...
    alicloud_instance.instance: Still creating... [10s elapsed]
    alicloud_instance.instance: Creation complete after 14s [id=i-2zexxxxxxxxxxxkmo]
    Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
    Outputs:
    ecs_id = "i-2zexxxxxxxxxxxkmo"
    ecs_ip = "3x.1xx.1xx.x41"

4. Consulter et gérer les ressources

Après le déploiement, vous pouvez gérer et maintenir votre infrastructure.

4,1 Consulter les ressources

  • Exécutez la commande terraform show pour afficher des informations détaillées sur les ressources.

    D:\tool\terraform\projects\ecs>terraform show
    # data.alicloud_zones.default:
    data "alicloud_zones" "default" {
        available_disk_category    = "cloud_ssd"
        available_instance_type    = "ecs.e-c1m1.large"
        available_resource_creation = "VSwitch"
        enable_details             = false
        id                         = "2398922967"
        ids                        = [
            "cn-beijing-a",
            "cn-beijing-c",
            "cn-beijing-e",
            "cn-beijing-f",
            "cn-beijing-g",
            "cn-beijing-h",
            "cn-beijing-i",
        ]
        instance_charge_type       = "PostPaid"
        multi                      = false
        spot_strategy              = "NoSpot"
        zones                      = [
            {
                available_disk_categories  = []
                available_instance_types   = []
                available_resource_creation = []
                id                         = "cn-beijing-a"
                local_name                 = null
                multi_zone_ids             = []
                slb_slave_zone_ids         = []
            }
        ]
    }
  • Exécutez la commande terraform state list pour répertorier toutes les ressources créées.

    D:\tool\terraform\projects\ecs>terraform state list
    data.alicloud_zones.default
    alicloud_instance.instance
    alicloud_security_group.default
    alicloud_security_group_rule.allow_tcp_22
    alicloud_vpc.vpc
    alicloud_vswitch.vsw
  • Exécutez la commande terraform state show <resource_type>.<resource_name> pour afficher des informations détaillées sur une ressource spécifique.

    D:\tool\terraform\projects\ecs>terraform state show alicloud_vpc.vpc
    # alicloud_vpc.vpc:
    resource "alicloud_vpc" "vpc" {
        cidr_block                 = "172.16.0.0/12"
        classic_link_enabled       = false
        create_time                = "2024-09-09T05:54:41Z"
        description                = null
        enable_ipv6                = false
        id                         = "vpc-2zexxx"
        ipv6_cidr_block            = null
        ipv6_cidr_blocks           = []
        name                       = "tf-test"
        resource_group_id          = "rg-acfxxx"
        route_table_id             = "vtb-2zexxx"
        router_id                  = "vrt-2zexxx"
        router_table_id            = "vtb-2zexxx"
        secondary_cidr_blocks      = []
        status                     = "Available"
        system_route_table_description = null
        system_route_table_name    = null
        user_cidrs                 = []
        vpc_name                   = "tf-test"
    }
  • Consultez les informations relatives aux ressources créées sur la console de management Alibaba Cloud.

4,2 Gérer les ressources

Après avoir créé ou modifié des ressources, Terraform enregistre leur état et leurs attributs dans le fichier terraform.tfstate . Vous pouvez utiliser les commandes terraform state pour gérer l'état. Pour plus d'informations, consultez Présentation de l'état.

4,3 Modifier les ressources

  1. Modifiez la définition d'une ressource dans votre fichier de configuration (tel que main.tf ou un autre fichier .tf ). Par exemple, vous pouvez ajouter une nouvelle règle entrante au groupe de sécurité.

    resource "alicloud_security_group_rule" "allow_tcp_443" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "443/443"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
  2. Exécutez la commande terraform plan pour prévisualiser vos modifications.

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      + create
    Terraform will perform the following actions:
      # alicloud_security_group_rule.allow_tcp_443 will be created
      + resource "alicloud_security_group_rule" "allow_tcp_443" {
          + cidr_ip            = "0.0.0.0/0"
          + id                 = (known after apply)
          + ip_protocol        = "tcp"
          + nic_type           = "intranet"
          + policy             = "accept"
          + port_range         = "443/443"
          + prefix_list_id     = (known after apply)
          + priority           = 1
          + security_group_id  = "sg-2zexxx9pa"
          + type               = "ingress"
        }
    Plan: 1 to add, 0 to change, 0 to destroy.
  3. Si le plan est correct, exécutez la commande terraform apply. Saisissez yes lorsque vous y êtes invité pour appliquer les modifications.

    Plan: 1 to add, 0 to change, 0 to destroy.
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
    alicloud_security_group_rule.allow_tcp_22: Creating...
    alicloud_security_group_rule.allow_tcp_443: Creating...
    alicloud_security_group_rule.allow_tcp_22: Creation complete after 1s [id=sg-2zexxx:xxx:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
    alicloud_security_group_rule.allow_tcp_443: Creation complete after 1s [id=sg-2zexxx:xxx:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    Outputs:
    ecs_id = "i-2zexxx"
    ecs_ip = "3x.xxx.xxx.x41"

5. Détruire les ressources

Lorsque vous n'avez plus besoin des ressources, exécutez la commande terraform destroy pour supprimer l'infrastructure.

Plan: 0 to add, 0 to change, 6 to destroy.
Changes to Outputs:
  - ecs_id = "i-2zxxx" -> null
  - ecs_ip = "3xxx" -> null
Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.
  Enter a value: yes
alicloud_security_group_rule.allow_tcp_443: Destroying...  [id=sg-2zexxx:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_tcp_22: Destroying...  [id=sg-2zexxx:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_instance.instance: Destroying...  [id=i-2zexxxkmo]
alicloud_security_group_rule.allow_tcp_443: Destruction complete after 1s
alicloud_security_group_rule.allow_tcp_22: Destruction complete after 1s
alicloud_instance.instance: Still destroying...  [id=i-2zexxxkmo, 10s elapsed]
alicloud_instance.instance: Destruction complete after 12s
alicloud_security_group.default: Destroying...  [id=sg-2zexxxpa]
alicloud_vswitch.vsw: Destroying...  [id=vsw-2zexxxvdf]
alicloud_security_group.default: Destruction complete after 2s
alicloud_vswitch.vsw: Destruction complete after 8s
alicloud_vpc.vpc: Destroying...  [id=vpc-2zexxxk5w]
alicloud_vpc.vpc: Destruction complete after 6s
Destroy complete! Resources: 6 destroyed.

Références