Terraform est un outil client de gestion des ressources informatiques. Utilisez les commandes Terraform pour gérer l'ensemble de vos ressources. Cette rubrique décrit les commandes courantes de gestion des ressources et de l'état.
Commandes courantes pour la gestion des ressources
La gestion des ressources dans Terraform consiste principalement à gérer leur cycle de vie. Créez, modifiez, consultez et supprimez les ressources définies dans vos modèles Terraform à l'aide de commandes dédiées.
-
terraform plan : Prévisualiser les ressources
La commande
planprévisualise les ressources définies dans un modèle. Elle s'utilise dans les scénarios suivants :Prévisualisez les ressources définies dans le modèle actuel pour vérifier qu'elles correspondent à vos attentes. Cette fonctionnalité est similaire à la prévisualisation Markdown.
Si un fichier d'état existe déjà pour le modèle actuel, la commande
planaffiche les différences entre la définition du modèle et le contenu du fichier d'état. La sortie de la commande présente les résultats en cas de modifications.Pour une DataSource, exécutez la commande
planafin de récupérer et d'afficher la ressource à interroger ainsi que ses propriétés.
-
terraform apply : Créer et modifier des ressources
La commande
applycrée ou modifie des ressources réelles. Par mesure de sécurité, elle inclut une étape interactive nécessitant une confirmation manuelle. Utilisez le paramètre --auto-approve pour ignorer cette confirmation.La commande
applys'utilise dans les scénarios suivants :Créez de nouvelles ressources.
Modifiez les propriétés des ressources en ajustant les paramètres du modèle.
Si vous supprimez une définition de ressource du modèle actuel, la commande
applysupprime la ressource correspondante. La suppression d'une ressource constitue également une modification.
-
terraform show : Afficher les ressources
La commande
showaffiche toutes les ressources gérées dans l'état actuel ainsi que leurs valeurs de propriété. -
terraform destroy : Libérer des ressources
La commande
destroylibère des ressources. Par mesure de sécurité, elle inclut une étape interactive nécessitant une confirmation manuelle. Utilisez le paramètre --force pour ignorer la confirmation manuelle.Par défaut,
terraform destroylibère toutes les ressources définies dans le modèle actuel. Pour libérer uniquement une ressource spécifique, spécifiez-la à l'aide du paramètre-target=<resource_type>.<resource_name>. -
terraform import : Importer des ressources
La commande
importimporte des ressources cloud existantes dans l'état Terraform afin de les gérer avec Terraform. Elle s'utilise notamment dans les scénarios suivants :Vous disposez de ressources cloud existantes créées et gérées via la console, l'interface de ligne de commande Alibaba Cloud (CLI), Resource Orchestration Service (ROS) ou des appels API directs, et vous souhaitez désormais les gérer à l'aide de Terraform.
Vous devez refactoriser les définitions de ressources dans le modèle sans affecter le fonctionnement des ressources.
Un fournisseur Alibaba Cloud a été mis à niveau vers une nouvelle version. Cette nouvelle version prend en charge davantage de paramètres pour les ressources définies dans le modèle d'origine, et vous devez synchroniser les derniers paramètres.
RemarquePour plus d'informations sur la gestion des ressources existantes à l'aide de la commande
import, consultez Gestion des ressources cloud existantes. -
terraform taint : Marquer une ressource comme tainted (endommagée)
La commande
taintmarque une ressource comme tainted. Lors de la prochaine exécution de la commandeapply, la ressource marquée est d'abord libérée, puis recréée. Cela équivaut à supprimer puis à recréer cette ressource spécifique.Le format de la commande est le suivant :
terraform taint <resource_type>.<resource_name>. Par exemple :$ terraform taint alicloud_vswitch.this Resource instance alicloud_vswitch.this has been marked as tainted. -
terraform untaint : Annuler le marquage tainted d'une ressource
La commande untaint est l'inverse de la commande taint. Elle supprime le marquage tainted et restaure la ressource à son état normal. Le format de la commande est similaire à celui de la commande taint :
terraform untaint <resource_type>.<resource_name>. Par exemple :$ terraform untaint alicloud_vswitch.this Resource instance alicloud_vswitch.this has been successfully untainted. -
terraform output : Afficher les paramètres de sortie et leurs valeurs
Si vous définissez explicitement un paramètre de sortie dans le modèle, sa valeur s'affiche après l'exécution de la commande
apply, mais pas après celle de la commandeplan. Pour consulter la valeur de sortie à tout moment, exécutez la commandeterraform output:$ terraform output vswitchId = vsw-gw8gl31wz********
Commandes courantes pour la gestion de l'état
La gestion de l'état dans Terraform consiste à gérer les données contenues dans le fichier d'état. Ce fichier stocke toutes les ressources gérées par Terraform ainsi que leurs propriétés. Terraform stocke automatiquement le contenu. Afin de garantir l'intégrité des données, ne modifiez pas manuellement le contenu du fichier d'état. Utilisez la commande terraform state pour effectuer des opérations sur les données d'état.
-
terraform state list : Répertorier toutes les ressources dans l'état actuel
La commande state list répertorie toutes les ressources présentes dans l'état actuel, y compris les sources de données, au format
<resource_type>.<resource_name>. Par exemple :$ terraform state list data.alicloud_slbs.default alicloud_vpc.default alicloud_vswitch.this -
terraform state show : Afficher les propriétés d'une ressource spécifique
La commande state show affiche toutes les propriétés et leurs valeurs pour une ressource spécifique, sous forme de paires clé-valeur. Le format complet de la commande est
terraform state show <resource_type>.<resource_name>. Par exemple :$ terraform state show alicloud_vswitch.this # alicloud_vswitch.this: resource "alicloud_vswitch" "this" { availability_zone = "eu-central-1a" cidr_block = "172.16.0.0/24" id = "vsw-gw8gl31wz******" vpc_id = "vpc-gw8calnzt*******" } -
terraform state pull : Extraire et afficher le contenu de l'état actuel
La commande state pull affiche les données brutes du fichier d'état actuel, de manière similaire à la commande
catdans un shell. Par exemple :$ terraform state pull { "version": 4, "terraform_version": "0.12.8", "serial": 615, "lineage": "39aeeee2-b3bd-8130-c897-2cb8595cf8ec", "outputs": { *** } }, "resources": [ { "mode": "data", "type": "alicloud_slbs", "name": "default", "provider": "provider.alicloud", *** }, { "mode": "managed", "type": "alicloud_vpc", "name": "default", "provider": "provider.alicloud", *** } ] } -
terraform state rm : Supprimer une ressource spécifique
La commande state rm supprime une ressource du fichier d'état, mais ne supprime pas réellement la ressource. Le format de la commande est le suivant :
terraform state rm <resource_type>.<resource_name>. Par exemple :$terraform state rm alicloud_vswitch.this Removed alicloud_vswitch.this Successfully removed 1 resource instance(s).Une fois la ressource supprimée de l'état, si le contenu du modèle reste inchangé et que vous exécutez à nouveau la commande apply, une nouvelle ressource identique est créée. Vous pouvez rajouter la ressource supprimée à l'aide de la commande import.
-
terraform state mv : Déplacer une ressource spécifique
Pour modifier le fichier d'état dans lequel une ressource est stockée, utilisez la commande state mv. Cette opération est similaire à la commande mv dans un shell. Cette commande propose plusieurs options. Exécutez la commande terraform state mv --help pour obtenir plus de détails. Cette rubrique décrit l'utilisation la plus courante :
terraform state mv --state=./terraform.tfstate --state-out=<target_path>/terraform-target.tfstate <resource_type>.<resource_name_A> <resource_type>.<resource_name_B>. Par exemple :$ terraform state mv --state-out=../tf.tfstate alicloud_vswitch.this alicloud_vswitch.default Move "alicloud_vswitch.this" to "alicloud_vswitch.default" Successfully moved 1 object(s)La commande précédente omet l'option par défaut
--state=./terraform.tfstate. Elle déplace la ressource vSwitch de l'état actuel vers un fichier d'état nommétf.tfstatesitué dans le répertoire parent, et renomme la ressource vSwitch de « this » à « default ». -
terraform refresh : Actualiser l'état actuel
La commande refresh actualise le contenu de l'état actuel. Elle appelle à nouveau l'API pour récupérer les dernières données et les écrit dans le fichier d'état.
Autres commandes courantes
Outre les commandes dédiées à la gestion des ressources et de l'état, d'autres commandes courantes sont utilisées dans divers scénarios impliquant des modèles et des fournisseurs.
-
terraform init : Initialiser et charger des modules
La commande init initialise et charge les modules requis, tels que les fournisseurs, les provisioners et les modules.
-
terraform graph : Générer le graphe de dépendance des ressources
Les ressources définies dans un modèle présentent des dépendances entre elles. Pour visualiser le graphe de dépendance des ressources, utilisez la commande terraform graph :
$ terraform graph digraph { compound = "true" newrank = "true" subgraph "root" { "[root] alicloud_vpc.default" [label = "alicloud_vpc.default", shape = "box"] "[root] alicloud_vswitch.this" [label = "alicloud_vswitch.this", shape = "box"] ****** "[root] output.vswitchId" -> "[root] alicloud_vswitch.this" "[root] provider.alicloud (close)" -> "[root] alicloud_vswitch.this" ****** "[root] root" -> "[root] provider.alicloud (close)" } }Vous pouvez également exporter la sortie de cette commande vers un fichier image en exécutant la commande
terraform graph | dot -Tsvg > graph.svg. Installez au préalable Graphviz en exécutantbrew install graphviz.
-
terraform validate : Valider la syntaxe du modèle
La rédaction d'un modèle Terraform nécessite le respect d'un ensemble simple de règles syntaxiques définies par Terraform. Après avoir rédigé un modèle, si vous souhaitez vérifier l'absence d'erreurs de syntaxe, ou si une erreur de syntaxe est signalée lors de l'exécution de la commande plan ou apply, exécutez la commande terraform validate pour détecter les erreurs et identifier leur emplacement ainsi que leur cause.