Terraform est un outil open source d'infrastructure en tant que code (IaC) qui gère le cycle de vie complet des ressources Alibaba Cloud via des fichiers de configuration déclaratifs. Utilisez une interface visuelle ou la ligne de commande pour créer votre première ressource Alibaba Cloud.
Choisir une méthode
Terraform propose deux méthodes : visuelle et en ligne de commande. Choisissez celle qui correspond le mieux à vos besoins.
|
Méthode |
Scénarios |
Avantages |
Limites |
|
Première utilisation, méconnaissance des paramètres, débogage rapide |
Configuration des ressources via un formulaire graphique. Aucun codage requis. |
Prend uniquement en charge les opérations sur une seule ressource. |
|
|
Évaluation rapide, environnements de production, orchestration complexe |
Prend en charge l'orchestration multi-ressources et la gestion de l'état. |
Nécessite un environnement CLI. |
Si vous optez pour la méthode CLI, préparez votre environnement en utilisant soit Cloud Shell, soit l'installation locale.
Utiliser Terraform Explorer
Terraform Explorer est l'outil de débogage en ligne d'Alibaba Cloud qui génère des fichiers de configuration Terraform à partir de formulaires et les exécute dans le cloud. Pour plus d'informations, consultez la page Présentation d'Explorer.
L'exemple suivant crée un Virtual Private Cloud (VPC) afin de démontrer deux façons d'utiliser Terraform Explorer : paramètres personnalisés et modèles d'exemple.
Créer des ressources à l'aide de paramètres personnalisés
Pour configurer les paramètres selon vos besoins, suivez ces étapes :
-
Connectez-vous à Terraform Explorer. Sélectionnez un Product et un Resource Type. Remplissez les paramètres en vous aidant de la Resource Documentation, puis cliquez sur Initiate.
Les principaux paramètres nécessaires à la création d'un VPC sont répertoriés ci-dessous. Pour plus de détails sur les paramètres, consultez la documentation alicloud_vpc.
Nom du paramètre
Description
Exemple de valeur
vpc_name
Nom du VPC
tf-test-vpc
cidr_block
Bloc CIDR privé pour le VPC
192.168.0.0/16
description
Description du VPC
The VPC was created using Terraform.
-
Dans l'onglet Template Details, vérifiez que les paramètres sont corrects, puis cliquez sur Plan pour afficher le plan d'exécution.
terraform { required_providers { alicloud = { source = "aliyun/alicloud" version = "1.231.0" } } } provider "alicloud" { region = "cn-beijing" } resource "alicloud_vpc" "default" { cidr_block = "192.168.0.0/16" description = "The VPC was created using Terraform." vpc_name = "tf-test-vpc" } -
Dans l'onglet Details, examinez les informations relatives aux ressources à créer, puis cliquez sur Execute.
Le résultat de l'aperçu affiche un statut Success et le message
Plan: 1 to add, 0 to change, 0 to destroy, indiquant que la ressourcealicloud_vpc.defaultsera créée. Lecidr_blockest défini sur192.168.0.0/16et ladescriptionsurThe VPC was created using Terraform.. Terraform génère les autres attributs après l'exécution. Dans l'onglet Execution Details, consultez le résultat. Une exécution réussie affiche le message «
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.». En cas d'échec, modifiez les paramètres en fonction du message d'erreur et réessayez.-
Dans l'onglet Resource Details, affichez les informations concernant la ressource créée.
L'adresse de la ressource est
alicloud_vpc.default. La page affiche divers attributs du VPC, notamment :cidr_block :
192.168.0.0/16name :
tf-test-vpcdescription :
The VPC was created using Terraform.create_time : heure de création du VPC.
Configurations réseau telles que classic_link_enabled et enable_ipv6.
Informations sur les ressources associées, telles que resource_group_id, route_table_id et router_id.
(Facultatif) Modifier la ressource : ajustez les paramètres et cliquez sur Plan & Apply, puis répétez les étapes 2 à 4. Une mise à jour réussie affiche le message «
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.».-
(Facultatif) Supprimer la ressource : dans l'onglet Execution Details, cliquez sur Destroy Resources. Ensuite, dans l'onglet Details, cliquez sur Execute.
Une fois l'opération terminée, l'onglet Execution Details affiche un statut Success accompagné du message
Apply complete! Resources: 0 added, 0 changed, 1 destroyed, confirmant la suppression de la ressource VPC.
Créer des ressources à l'aide d'un modèle d'exemple
Si vous ne connaissez pas bien les paramètres des ressources ou si vous souhaitez démarrer rapidement, utilisez un modèle d'exemple depuis Terraform Explorer.
-
Connectez-vous à Terraform Explorer. Sélectionnez le Product, le Resource Type et le Sample Template correspondants, puis cliquez sur Initiate. Vous pouvez consulter les détails du modèle dans l'onglet Sample Template situé à droite.
Dans la zone Input Parameters à gauche, vous pouvez afficher et modifier les paramètres requis par le modèle. Par exemple, vous pouvez définir le paramètre name sur
terraform-example. Vous pouvez également cliquer sur Add Parameter pour ajouter d'autres paramètres. -
Dans l'onglet Template Details, cliquez sur Plan & Apply.
Ce modèle d'exemple est au format Terraform. Il définit une ressource
alicloud_vpcavec des paramètres tels queipv6_ispdéfini sur BGP,cidr_blockdéfini sur10.0.0.0/8etenable_ipv6défini sur true. Dans l'onglet Execution Details, vous pouvez consulter le résultat de l'exécution.
(Facultatif) Pour supprimer la ressource créée, cliquez sur Destroy Resources dans l'onglet Execution Details. Ensuite, dans l'onglet Details, cliquez sur Execute.
Vous pouvez également effectuer des opérations telles que Continue et Destroy Resources depuis l'historique des appels, accessible via Call History.
Utiliser Terraform CLI
Pour utiliser Terraform en ligne de commande, préparez un environnement CLI, rédigez un fichier de configuration, puis exécutez les commandes permettant de créer des ressources. Choisissez l'une des méthodes suivantes pour configurer votre environnement :
Cloud Shell (recommandé) : aucune installation nécessaire. Idéal pour une évaluation rapide et l'apprentissage.
Installation locale : meilleure solution pour les environnements de production, l'intégration continue et une utilisation à long terme.
Cloud Shell
Alibaba Cloud Cloud Shell est un outil d'exploitation gratuit, préinstallé avec Terraform et préconfiguré avec des identifiants d'authentification, ce qui vous permet d'exécuter immédiatement les commandes Terraform.
Se connecter à Cloud Shell
Ouvrez votre navigateur et accédez à Cloud Shell. Pour plus d'informations, consultez la rubrique Utiliser Cloud Shell.
Connectez-vous en tant qu'utilisateur RAM. Afin de protéger votre compte Alibaba Cloud, évitez de l'utiliser pour accéder aux ressources cloud sauf si cela est absolument nécessaire.
Changer de version de Terraform
La version par défaut de Terraform dans Cloud Shell peut être obsolète. Passez à la version 1.2 ou ultérieure pour garantir le bon fonctionnement de toutes les fonctionnalités.
-
Vérifiez votre version actuelle de Terraform :
terraform versionshell@Alicloud:~$ terraform version Terraform v0.12.31 Your version of Terraform is out of date! The latest version is 1.12.2. You can update by downloading from https://www.terraform.io/downloads.html -
Répertoriez les versions de Terraform disponibles dans Cloud Shell :
tfenv listshell@Alicloud:~$ tfenv list 1.9.5 1.5.7 1.3.7 0.13.7 * 0.12.31 (set by /usr/local/tfenv/version) -
Passez à une version spécifique (par exemple, 1.9.5) :
tfenv use 1.9.5shell@Alicloud:~$ tfenv use 1.9.5 Switching default version to v1.9.5 Switching completed
Installation locale
Cette méthode est idéale pour les environnements de production et l'orchestration complexe. Commencez par installer Terraform et configurer les identifiants d'authentification.
Installer à l'aide d'un gestionnaire de packages (recommandé)
macOS
Installez-le à l'aide de Homebrew :
# Add HashiCorp's tap to define where packages are located in Homebrew
brew tap hashicorp/tap
# Install Terraform
brew install hashicorp/tap/terraform
Mettez à jour vers la dernière version :
# Update Homebrew
brew update
# Upgrade Terraform
brew upgrade hashicorp/tap/terraform
Windows
Installez-le à l'aide de Chocolatey :
choco install terraform
Linux
Par exemple, en utilisant le gestionnaire de packages yum :
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform
Installation manuelle
Si aucun gestionnaire de packages n'est disponible, installez Terraform manuellement.
Utiliser un binaire précompilé
Téléchargez le fichier ZIP correspondant à votre système d'exploitation depuis le site web de Terraform. Extrayez l'archive.
-
Déplacez le fichier binaire
terraformvers un répertoire figurant dans lePATHde votre système :-
macOS ou Linux
mv ~/Downloads/terraform /usr/local/bin/ -
Windows
Ouvrez Panneau de configuration > Système > Paramètres système > Variables d'environnement.
Dans les variables système, recherchez PATH et cliquez sur Modifier.
Ajoutez le chemin d'accès à votre répertoire Terraform. Séparez-le des autres entrées par un point-virgule (par exemple,
c:\path;c:\path2).Ouvrez une nouvelle fenêtre de ligne de commande pour que la modification prenne effet.
-
Compiler à partir des sources
Vous devez d'abord installer l'environnement de développement Go.
-
Clonez le dépôt source de Terraform :
git clone https://github.com/hashicorp/terraform.git -
Accédez au répertoire, puis compilez et installez le logiciel.
cd terraform go installAprès la compilation, le binaire est placé dans le répertoire
$GOPATH/bin/. Assurez-vous que
$GOPATH/binest ajouté au PATH de votre système. Suivez les mêmes étapes que celles décrites à l'étape 2 de la section Utiliser un binaire précompilé.
Vérifier l'installation
Exécutez la commande suivante pour vérifier que Terraform est correctement installé :
terraform version
Si le numéro de version s'affiche, l'installation est terminée.
Exemple : créer une instance ECS
Cet exemple présente le flux de travail complet de Terraform en créant une instance ECS : VPC → vSwitch → groupe de sécurité → instance ECS.
-
Créez un répertoire de travail et rédigez le fichier de configuration Terraform
main.tf:mkdir tf-demo && cd tf-demo vim main.tfCopiez le code suivant dans
main.tf:provider "alicloud" { region = var.region } # Region for resource creation variable "region" { default = "cn-beijing" } # ECS instance name variable "instance_name" { default = "tf-cloudshell-test" } # ECS instance type variable "instance_type" { default = "ecs.n2.small" } # Outbound public bandwidth. A value of 0 means no public network access. variable "internet_bandwidth" { default = 10 } # ECS OS image variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # ECS system disk type variable "disk_category" { default = "cloud_efficiency" } # ECS instance logon password variable "password" { default = "TF-test@1234" } # Create a VPC resource "alicloud_vpc" "vpc" { vpc_name = "tf_test_foo" cidr_block = "172.16.0.0/12" } # Query for availability zones based on the instance type and disk category data "alicloud_zones" "default" { available_disk_category = var.disk_category available_resource_creation = "VSwitch" available_instance_type = var.instance_type } # 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" { security_group_name = "default" vpc_id = alicloud_vpc.vpc.id } # Create an inbound security group rule resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } resource "alicloud_instance" "instance" { # Attach the security group security_groups = alicloud_security_group.default.*.id instance_type = var.instance_type system_disk_category = var.disk_category image_id = var.image_id instance_name = var.instance_name # Specify the vSwitch vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_bandwidth password = var.password }ImportantLa règle de groupe de sécurité présentée dans cet exemple ouvre tous les ports TCP (1-65535) et autorise le trafic provenant de n'importe quelle adresse IP (0.0.0.0/0). N'utilisez cette configuration que dans des environnements de test. En production, restreignez les ports et les adresses IP source selon vos besoins.
-
Initialisez le répertoire de travail Terraform :
terraform init -
Prévisualisez le plan d'exécution pour confirmer quelles ressources seront créées :
terraform planshell@Alicloud:~/tf-demo$ terraform plan data.alicloud_zones.default: Reading... data.alicloud_zones.default: Read complete after 1s [id=1373912221] 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_instance.instance will be created + resource "alicloud_instance" "instance" { + availability_zone = (known after apply) + cpu = (known after apply) + create_time = (known after apply) + credit_specification = (known after apply) + deployment_set_group_no = (known after apply) + description = (known after apply) + dry_run = false + enable_jumbo_frame = (known after apply) + expired_time = (known after apply) + host_name = (known after apply) + http_endpoint = (known after apply) + http_put_response_hop_limit = (known after apply) + http_tokens = (known after apply) + id = (known after apply) + image_id = "ubuntu_18_04_64_20G_alibase_20190624.vhd" + instance_charge_type = (known after apply) + instance_name = "tf-cloudshell-test" + instance_type = "ecs.n2.small" + internet_charge_type = (known after apply) + internet_max_bandwidth_in = (known after apply) + internet_max_bandwidth_out = 10 + io_optimized = (known after apply) + ipv6_address_count = (known after apply) + ipv6_addresses = (known after apply) + key_name = (known after apply) + maintenance_action = (known after apply) + memory = (known after apply) + network_interface_id = (known after apply) + network_interface_traffic_mode = (known after apply) + os_name = (known after apply) + os_type = (known after apply) + password = (sensitive value) + period = (known after apply) + primary_ip_address = (known after apply) -
Créez les ressources. Le message «
Apply complete!» indique que l'opération a réussi :terraform applyApply complete! Resources: 5 added, 0 changed, 0 destroyed. -
Pour libérer ces ressources, exécutez :
terraform destroy