Tous les produits
Search
Centre de documentation

Elastic Compute Service:Référence Terraform

Dernière mise à jour :Aug 18, 2026

Terraform est un outil open source d'infrastructure as code (IaC) qui permet aux développeurs de définir et de gérer les configurations d'infrastructure à l'aide d'un langage déclaratif. Terraform offre une méthode simple pour créer, modifier ou supprimer des ressources Elastic Compute Service (ECS). Cette approche réduit la complexité et les erreurs liées aux opérations manuelles et améliore la gérabilité et la maintenabilité de votre infrastructure. Cette rubrique explique comment installer et configurer Terraform, puis l'utiliser pour créer une instance ECS.

Fonctionnalités de base de Terraform

Terraform est un outil d'automatisation et d'orchestration de l'infrastructure informatique. Il vous permet d'utiliser du code pour gérer et maintenir les ressources informatiques. Pour plus d'informations, consultez Qu'est-ce que Terraform ?.

  • L'interface de ligne de commande (CLI) de Terraform offre un moyen simple de déployer des fichiers de configuration sur Alibaba Cloud ou d'autres clouds pris en charge, ainsi que de gérer leurs versions. Vous pouvez définir votre infrastructure, telle que les machines virtuelles, les comptes de stockage et les interfaces réseau, dans des fichiers de configuration qui décrivent la topologie de vos ressources cloud.

  • Terraform prend en charge les nouvelles infrastructures via des providers. Cela vous permet de définir, de prévisualiser et de déployer facilement l'infrastructure cloud sur Alibaba Cloud à l'aide d'un langage de modèle simple.

  • Vous pouvez utiliser Terraform pour créer, modifier et supprimer les ressources de plusieurs services Alibaba Cloud.

Pour plus d'informations sur l'intégration d'Alibaba Cloud et de Terraform, consultez Alibaba Cloud Provider.

Installer Terraform

Cloud Shell

Alibaba Cloud Shell est un produit gratuit d'exploitation et de maintenance (O&M) livré avec Terraform préinstallé. Vous pouvez exécuter directement les commandes Terraform dans Cloud Shell.

Commencez par vous assurer que vous disposez d'un compte Alibaba Cloud valide disposant des autorisations requises.

Ensuite, ouvrez votre navigateur et accédez à l'URL de Cloud Shell : https://shell.alibabacloud.com.

Une fois connecté, exécutez la commande suivante.

terraform

La sortie indique que Terraform est intégré à Cloud Shell et prêt à l'emploi.

image

Pour plus d'informations sur l'utilisation de Cloud Shell, consultez Utiliser Cloud Shell.

Installation manuelle

Utiliser un package précompilé

Accédez au site officiel de Terraform. Recherchez et téléchargez le package ZIP correspondant à votre système d'exploitation.

Une fois le téléchargement terminé, décompressez le package vers /usr/local/bin. Une fois la copie effectuée, vous pouvez supprimer les autres fichiers sans affecter le fonctionnement de Terraform.

Enfin, assurez-vous que le répertoire Terraform est ajouté à la variable d'environnement PATH. Cette procédure varie selon votre système d'exploitation.

Windows

  1. Accédez à Panneau de configuration > Système > Paramètres système avancés > Variables d'environnement.

  2. Dans les variables système, faites défiler vers le bas jusqu'à trouver PATH.

  3. Cliquez sur Modifier et effectuez vos modifications.

  4. Veillez à ajouter un point-virgule pour séparer les entrées. Par exemple : c:\path;c:\path2

  5. Démarrez une nouvelle console pour que les modifications prennent effet.

Pour plus d'informations, consultez Définir un chemin global sous Windows.

macOS ou Linux

Affichez votre configuration PATH.

echo $PATH

Déplacez le fichier binaire Terraform vers l'un des emplacements répertoriés. Cette commande suppose que le fichier binaire se trouve dans votre dossier Téléchargements et que votre PATH inclut /usr/local/bin. Personnalisez les répertoires dans la commande si vos emplacements sont différents.

mv ~/Downloads/terraform /usr/local/bin/

Pour plus d'informations, consultez :

Utiliser le code source

Si vous souhaitez compiler le fichier binaire à partir du code source, clonez le référentiel HashiCorp Terraform.

git clone https://github.com/hashicorp/terraform.git

Vous verrez des informations de progression. Attendez que le processus se termine.

image

Une fois la commande exécutée, un nouveau répertoire nommé terraform est créé dans votre répertoire actuel. Utilisez la commande cd pour entrer dans ce répertoire.

cd terraform

Ensuite, exécutez la commande d'installation pour compiler le répertoire et déplacer le package compilé vers le répertoire $GOPATH/bin/terraform.

go install

Les informations suivantes indiquent que la compilation est en cours. Attendez la fin du processus avant de continuer.

image

Remarque : Si le message « zsh: command not found: go » s'affiche, vous devez installer l'environnement Go.

Enfin, assurez-vous que le répertoire Terraform figure dans le PATH de votre système. La méthode de définition du PATH dépend de votre système d'exploitation.

macOS ou Linux

Affichez la configuration PATH

echo $PATH

Déplacez le fichier binaire Terraform vers un répertoire figurant dans votre PATH. La commande suivante suppose que le fichier binaire se trouve dans votre dossier Téléchargements et que votre PATH inclut /usr/local/bin. Si votre configuration est différente, personnalisez les répertoires dans la commande.

mv ~/Downloads/terraform /usr/local/bin/

Pour plus d'informations, consultez :

Windows

  1. Accédez à Panneau de configuration > Système > Paramètres système > Variables d'environnement.

  2. Dans la section Variables système, faites défiler vers le bas pour trouver la variable PATH.

  3. Cliquez sur Modifier et effectuez vos modifications.

  4. Utilisez un point-virgule pour séparer les entrées, par exemple c:\path;c:\path2

  5. Ouvrez une nouvelle console pour que les modifications prennent effet.

Pour plus d'informations, consultez Définir un chemin global sous Windows.

macOS Homebrew

Homebrew est un outil populaire d'installation de packages pour macOS. Vous pouvez utiliser Homebrew pour installer Terraform à l'aide de commandes simples.

Étape 1. Installez le tap HashiCorp, qui est un référentiel contenant tous les packages Homebrew HashiCorp.

brew tap hashicorp/tap

Étape 2. Exécutez la commande install pour installer Terraform.

brew install hashicorp/tap/terraform
Important

La commande install indexe et installe la dernière version. Si vous souhaitez mettre à jour vers la dernière version ultérieurement, vous pouvez exécuter la commande upgrade.

Pour mettre à jour vers la dernière version de Terraform, vous devez d'abord mettre à jour Homebrew.

brew update

Ensuite, exécutez la commande upgrade pour mettre à jour vers la dernière version.

brew upgrade hashicorp/tap/terraform

Linux

Alibaba Cloud Linux

yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform

image

image

Windows Chocolatey

Chocolatey est un gestionnaire de packages populaire pour Windows. Vous pouvez utiliser Chocolatey pour installer Terraform en exécutant des commandes simples.

choco install terraform

Authentifier Terraform

Vous pouvez authentifier Terraform en stockant les identifiants d'accès dans des variables d'environnement. Lorsque vous exécutez une commande Terraform, celui-ci tente de récupérer les identifiants à partir de ces variables s'ils ne sont pas explicitement déclarés dans le modèle de configuration. Les sections suivantes expliquent comment définir les variables d'environnement.

Windows

  1. Sur le bureau, cliquez avec le bouton droit sur Ce PC et sélectionnez Type > Advanced system settings > Environment Variables > System variables/User variables.

  2. Dans la section System variables ou User variables, cliquez sur Create pour créer les variables d'environnement suivantes.

    Nom de la variable

    Descriptions des variables

    Valeur

    ALICLOUD_ACCESS_KEY

    ID AccessKey

    yourAccessKeyID

    ALICLOUD_SECRET_KEY

    Secret AccessKey

    yourAccessKeySecret

    ALICLOUD_SECURITY_TOKEN (Facultatif)

    Si vous utilisez des identifiants Security Token Service (STS), vous devez configurer cette variable.

    yourSTSToken

Linux

Important

Une variable d'environnement temporaire configurée avec la commande export n'est valide que pour la session en cours. Après avoir quitté la session, la variable d'environnement devient invalide. Pour rendre la variable d'environnement permanente, ajoutez la commande export au fichier de configuration de démarrage de votre système d'exploitation.

# AccessKey ID
$ export ALICLOUD_ACCESS_KEY="<your AccessKey ID>"
# AccessKey secret
$ export ALICLOUD_SECRET_KEY="<your AccessKey secret>"
# If you use STS credentials, you must configure security_token.
$ export ALICLOUD_SECURITY_TOKEN="<your access token>"

Après avoir défini les variables d'environnement, vous n'avez pas besoin de déclarer les identifiants dans le bloc provider. Vous pouvez déclarer uniquement la région.

provider "alicloud" {
  region = "cn-hangzhou"
}

Vous pouvez également configurer la région à l'aide de la variable d'environnement ALICLOUD_REGION. Si la région n'est pas explicitement déclarée et que cette variable d'environnement n'est pas définie, la valeur par défaut est cn-beijing.

Ressources prises en charge

Remarque

Une ressource est un nouvel objet, tel qu'une instance ECS, une machine virtuelle (VM) ou un groupe de sécurité, utilisé pour définir un composant d'infrastructure.

Ressource

alicloud_auto_provisioning_group: Gère un groupe de provisionnement automatique ECS, qui utilise des instances spot et des instances à la demande pour déployer rapidement un cluster.

alicloud_ecs_disk_attachment: Gère l'attachement d'un disque de données ou d'un disque système à une instance ECS.

alicloud_ecs_activation: Gère un code d'activation ECS. Vous pouvez configurer des paramètres tels que la description, le nombre maximal d'instances pouvant être enregistrées, le préfixe par défaut du nom d'instance, la plage d'adresses IP des hôtes autorisés à utiliser le code et la période de validité du code afin d'enregistrer des instances gérées par lots.

alicloud_ecs_auto_snapshot_policy: Gère une politique de snapshot automatique ECS. Vous pouvez configurer les jours de la semaine et les heures de création des snapshots automatiques, ainsi que la durée de conservation des snapshots. Cette ressource prend également en charge la réplication inter-régions et le chiffrement des snapshots.

alicloud_ecs_auto_snapshot_policy_attachment: Attache une politique de snapshot automatique à un disque spécifié. Spécifiez l'ID de la politique de snapshot automatique et l'ID du disque pour appliquer la politique prédéfinie au disque.

alicloud_ecs_capacity_reservation: Gère une réservation de capacité sur Alibaba Cloud. Réservez des ressources pour un type d'instance spécifique afin de garantir le lancement du nombre d'instances requis lorsque cela est nécessaire.

alicloud_ecs_command: Gère une commande sur une instance ECS Alibaba Cloud. Définissez des paramètres tels que le contenu de la commande encodé en Base64, la description, l'activation des paramètres personnalisés, le nom de la commande, le délai d'expiration et le type de commande pour exécuter des scripts prédéfinis.

alicloud_ecs_dedicated_host: Gère un hôte dédié sur Alibaba Cloud. Configurez des paramètres tels que le type d'hôte, la méthode de facturation, le cycle de renouvellement automatique, le nom d'hôte et la description.

alicloud_ecs_dedicated_host_cluster: Gère un cluster d'hôtes dédiés sur Alibaba Cloud. Configurez des paramètres tels que le nom du cluster, la description, la zone et les tags pour gérer et organiser centralement les ressources d'hôtes dédiés.

alicloud_ecs_deployment_set: Gère un ensemble de déploiement sur Alibaba Cloud. Spécifiez des paramètres tels que la stratégie de déploiement, le nom de l'ensemble de déploiement et la description pour gérer la distribution des instances ECS selon des objectifs spécifiques, comme la haute disponibilité ou la faible latence.

alicloud_ecs_disk: Gère un disque (disque de données) sur Alibaba Cloud. Configurez des paramètres tels que le type de disque, la taille, l'état de chiffrement, l'ID de snapshot, le niveau de performance et les tags pour répondre aux exigences de stockage de différents scénarios.

alicloud_ecs_disk_attachment: Gère l'attachement et le détachement d'un disque sur une instance ECS Alibaba Cloud. Spécifiez l'ID de l'instance et l'ID du disque pour les associer. Des options permettent de libérer le disque avec l'instance et d'attacher le disque en tant que disque système.

alicloud_ecs_elasticity_assurance: Gère une assurance d'élasticité sur Alibaba Cloud. Cela garantit qu'une certaine quantité de capacité de ressources de calcul est réservée pour un type d'instance spécifique dans une région donnée.

alicloud_ecs_hpc_cluster: Gère un cluster de calcul haute performance (HPC) sur Alibaba Cloud. Spécifiez le nom et la description pour configurer les informations de base du cluster HPC.

alicloud_ecs_image_component: Gère un composant d'image sur Alibaba Cloud. Définissez le contenu, le type, les systèmes d'exploitation applicables et d'autres métadonnées pour les composants de build ou de test. Ces composants peuvent être réutilisés lors de la création d'images personnalisées.

alicloud_ecs_image_pipeline: Gère un pipeline d'images sur Alibaba Cloud. Spécifiez l'image de base, le contenu du build, le type d'instance et d'autres configurations pour automatiser la création et la gestion d'images personnalisées.

alicloud_ecs_image_pipeline_execution: Exécute une tâche de pipeline d'images sur Alibaba Cloud pour créer une image personnalisée à partir d'un pipeline d'images défini. Spécifiez un ID de pipeline d'images pour déclencher la tâche de build d'image et surveiller l'état et les résultats de la tâche.

alicloud_ecs_invocation: Gère et exécute une invocation de commande sur des instances ECS. Exécutez une commande spécifiée sur une ou plusieurs instances ECS et récupérez les résultats d'exécution.

alicloud_ecs_key_pair: Gère et crée une paire de clés pour les instances ECS.

alicloud_ecs_key_pair_attachment: Attache une paire de clés ECS à une instance ECS spécifiée.

alicloud_ecs_launch_template: Gère un modèle de lancement ECS. Utilisez des configurations prédéfinies pour créer et déployer rapidement des instances ECS, ce qui améliore l'efficacité et garantit la cohérence.

alicloud_ecs_network_interface: Gère une interface réseau ECS. Configurez et gérez la connectivité réseau des instances. Elle prend en charge des politiques flexibles d'allocation d'adresses IP privées et convient aux environnements réseau complexes et aux conceptions à haute disponibilité.

alicloud_ecs_network_interface_attachment: Attache une interface réseau élastique (ENI) à une instance ECS Alibaba Cloud. Cela étend les capacités réseau de l'instance, permettant d'ajouter plusieurs adresses IP ou de mettre en œuvre des configurations réseau plus complexes.

alicloud_ecs_network_interface_permission: Gère les permissions d'une interface réseau ECS.

alicloud_ecs_prefix_list: Gère une liste de préfixes dans le service ECS Alibaba Cloud.

alicloud_ecs_session_manager_status: Gère l'état du Session Manager dans le service ECS Alibaba Cloud. Activez ou désactivez la fonctionnalité de gestion de session pour contrôler l'accès et la gestion des instances ECS.

alicloud_ecs_snapshot: Gère un snapshot de disque sur Alibaba Cloud. Sauvegardez les données d'un disque spécifié pour une récupération ou une archivage ultérieur.

alicloud_ecs_snapshot_group: Gère un snapshot pour un groupe de disques sur Alibaba Cloud.

alicloud_ecs_storage_capacity_unit: Gère une unité de capacité de stockage dans le service ECS Alibaba Cloud.

alicloud_image: Gère une image personnalisée sur Alibaba Cloud créée à partir d'une instance ECS existante.

alicloud_image_copy: Copie une image personnalisée d'une région vers une autre.

alicloud_image_export: Exporte une image personnalisée vers un bucket Object Storage Service (OSS) dans la même région que l'image personnalisée.

alicloud_image_import: Gère l'importation d'une image dans ECS.

alicloud_image_share_permission: Gère les permissions de partage d'une image.

alicloud_instance: Gère une ressource d'instance ECS.

alicloud_ecs_key_pair: Gère une ressource de paire de clés ECS.

alicloud_ecs_key_pair_attachment: Attache une paire de clés à plusieurs instances ECS.

alicloud_ecs_launch_template: Gère une ressource de modèle de lancement ECS.

alicloud_ecs_network_interface: Gère une ressource d'interface réseau ECS.

alicloud_ecs_network_interface_attachment: Gère une ressource d'attachement d'interface réseau ECS.

alicloud_ram_role_attachment: Attache un rôle Resource Access Management (RAM) d'instance à plusieurs instances ECS.

alicloud_reserved_instance: Gère une ressource d'instance réservée.

alicloud_security_group: Gère une ressource de groupe de sécurité ECS.

alicloud_security_group_rule: Gère une ressource de règle de groupe de sécurité.

alicloud_ecs_snapshot: Gère une ressource de snapshot ECS.

alicloud_ecs_auto_snapshot_policy: Gère une ressource de politique de snapshot automatique ECS.

Utiliser Terraform pour créer et gérer des ressources ECS

Cette section présente un exemple de création et de gestion de ressources ECS avec Terraform.

  1. Créez un répertoire de travail. Dans ce répertoire, créez un fichier de configuration nommé main.tf. Le code suivant permet de créer une instance ECS ainsi que les ressources VPC, groupe de sécurité et vSwitch nécessaires. Copiez le code dans le fichier main.tf.

    # Define a variable "region" with the default value "cn-beijing" to specify the Alibaba Cloud region.
    variable "region"{
      default = "cn-beijing"
    }
    
    # Configure the Alibaba Cloud provider to use the region defined in the "region" variable.
    provider "alicloud"{
      region = var.region
    }
    
    # Define a string variable "instance_type" with the default value "ecs.e-c1m1.large" to specify the ECS instance type.
    variable "instance_type" {
      type    = string
      default = "ecs.e-c1m1.large"
    }
    
    # Use a data source to query zone information. Filter the results by the specified instance type, resource creation type (such as VSwitch), and disk category.
    data "alicloud_zones" "default" {
      available_instance_type     = var.instance_type
      available_resource_creation = "VSwitch"
      available_disk_category     = "cloud_essd"
    }
    
    # Define a variable "vpc_cidr_block" with the default value "172.16.0.0/16" to specify the CIDR block for the VPC.
    variable "vpc_cidr_block" {
      default = "172.16.0.0/16"
    }
    
    # Define a variable "vsw_cidr_block" with the default value "172.16.0.0/24" to specify the CIDR block for the vSwitch.
    variable "vsw_cidr_block" {
      default = "172.16.0.0/24"
    }
    
    # Generate a random integer between 10000 and 99999 to ensure the uniqueness of some resource names.
    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # Create a VPC named "vpc-test" and use the random integer to ensure the name is unique.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "vpc-test_${random_integer.default.result}"
      cidr_block = var.vpc_cidr_block
    }
    
    # Create a security group, include the random integer in the name to ensure uniqueness, and associate it with the VPC created above.
    resource "alicloud_security_group" "group" {
      security_group_name = "test_${random_integer.default.result}"  # The field name here was replaced.
      vpc_id              = alicloud_vpc.vpc.id
    }
    
    # Create a security group rule to allow all inbound TCP traffic and associate it with the previously created security group.
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"  # Modified here, nic_type is changed to 'intranet'.
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.group.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    # Create a vSwitch, include the random integer in the name to ensure uniqueness, and associate it with the VPC and zone.
    resource "alicloud_vswitch" "vswitch" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block   = var.vsw_cidr_block
      zone_id      = data.alicloud_zones.default.zones[0].id
      vswitch_name = "vswitch-test-${random_integer.default.result}"
    }
    
    # Create an ECS instance. Set multiple parameters such as the zone, security group, and instance type. Use the random integer to ensure the instance name is unique.
    resource "alicloud_instance" "instance" {
      availability_zone          = data.alicloud_zones.default.zones[0].id
      security_groups            = [alicloud_security_group.group.id]
      instance_type              = var.instance_type
      system_disk_category       = "cloud_essd"
      system_disk_name           = "test_foo_system_disk_${random_integer.default.result}"
      system_disk_description    = "test_foo_system_disk_description"
      image_id                   = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
      instance_name              = "test_ecs_${random_integer.default.result}"
      vswitch_id                 = alicloud_vswitch.vswitch.id
      internet_max_bandwidth_out = 10
      password                   = "Terraform@Example" # Modify the password based on your requirements.
    }
  2. Exécutez la commande suivante pour initialiser l'environnement d'exécution Terraform.

    terraform init

    La sortie suivante indique que Terraform a été initialisé avec succès.

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Exécutez la commande suivante pour appliquer le code.

    terraform apply

    Lors de l'exécution, saisissez yes lorsque vous y êtes invité, puis appuyez sur Enter. Attendez la fin de l'exécution de la commande. Si la sortie suivante s'affiche, le code a été exécuté avec succès.

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    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
    
    Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
  4. Vérifiez les résultats.

Exécuter la commande terraform show

Dans le répertoire de travail, exécutez la commande suivante pour consulter les détails des ressources créées par Terraform :

terraform show

image

Se connecter à la console pour afficher les ressources

Connectez-vous à la console ECS. Dans le volet de navigation de gauche, choisissez Instances & Images > Instance. Dans le coin supérieur gauche, sélectionnez une région. Dans cet exemple, sélectionnez China (Beijing) pour afficher l'instance ECS créée.

image

Références