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.

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
Accédez à Panneau de configuration > Système > Paramètres système avancés > Variables d'environnement.
Dans les variables système, faites défiler vers le bas jusqu'à trouver PATH.
Cliquez sur Modifier et effectuez vos modifications.
Veillez à ajouter un point-virgule pour séparer les entrées. Par exemple :
c:\path;c:\path2Dé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.

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.

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
Accédez à Panneau de configuration > Système > Paramètres système > Variables d'environnement.
Dans la section Variables système, faites défiler vers le bas pour trouver la variable PATH.
Cliquez sur Modifier et effectuez vos modifications.
Utilisez un point-virgule pour séparer les entrées, par exemple c:\path;c:\path2
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
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


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
Sur le bureau, cliquez avec le bouton droit sur Ce PC et sélectionnez .
-
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
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
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.
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.
-
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. } -
Exécutez la commande suivante pour initialiser l'environnement d'exécution Terraform.
terraform initLa 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. -
Exécutez la commande suivante pour appliquer le code.
terraform applyLors de l'exécution, saisissez
yeslorsque 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. 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

Se connecter à la console pour afficher les ressources
Connectez-vous à la console ECS. Dans le volet de navigation de gauche, choisissez . 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.

Références
Pour plus de tutoriels, consultez Tutoriels Terraform.
-
Pour en savoir plus sur les commandes Terraform courantes, consultez Commandes courantes.
Terraform est disponible en tant que service géré dans ROS. Vous pouvez déployer des modèles Terraform dans la console ROS. Pour plus d'informations, consultez Créer une pile Terraform.