
terraform state list affiche la liste de toutes les ressources que Terraform gère dans le state. C’est la commande de départ pour savoir ce qui existe avant de modifier, déplacer ou supprimer une ressource. Ce guide montre comment l’utiliser, filtrer les résultats et comprendre les adresses affichées.
Prérequis : avoir compris le rôle du state Terraform et disposer d’un projet avec des ressources déployées.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Lire la sortie de
terraform state list(format des adresses) - Filtrer les ressources par adresse exacte
- Rechercher par type avec
grep - Trouver une ressource par son identifiant avec
-id - Compter les ressources gérées
Syntaxe de base
Section intitulée « Syntaxe de base »terraform state list [options] [adresse...]Sans argument, la commande affiche toutes les ressources du state. Avec une adresse, elle affiche uniquement cette ressource (ou une erreur si elle n’existe pas).
Lister toutes les ressources
Section intitulée « Lister toutes les ressources »Pour ce guide, le projet contient un réseau, deux volumes et une data source :
resource "libvirt_network" "net" { name = "state-list-net" # ...}
resource "libvirt_volume" "web" { name = "web-server.qcow2" # ...}
resource "libvirt_volume" "db" { name = "db-server.qcow2" # ...}
data "libvirt_node_info" "host" {}Après terraform apply, la commande state list affiche :
terraform state listdata.libvirt_node_info.hostlibvirt_network.netlibvirt_volume.dblibvirt_volume.webQuatre entrées : la data source et les trois ressources managées. La liste est triée alphabétiquement par type, puis par nom.
Comprendre les adresses
Section intitulée « Comprendre les adresses »Chaque ligne suit le format type.nom pour les ressources managées et data.type.nom pour les data sources :
| Adresse | Type | Nom logique | Signification |
|---|---|---|---|
libvirt_network.net | libvirt_network | net | Réseau géré par Terraform |
libvirt_volume.web | libvirt_volume | web | Volume disque « web » |
libvirt_volume.db | libvirt_volume | db | Volume disque « db » |
data.libvirt_node_info.host | libvirt_node_info | host | Data source (lecture seule) |
Ces adresses sont celles que vous utilisez dans toutes les commandes terraform state : show, mv, rm.
Filtrer par adresse exacte
Section intitulée « Filtrer par adresse exacte »Passez une adresse complète pour vérifier qu’une ressource existe dans le state :
terraform state list libvirt_volume.weblibvirt_volume.webSi la ressource n’existe pas, Terraform renvoie une erreur explicite :
terraform state list libvirt_volume.inexistant╷│ Error: Unknown resource││ The current state contains no resource libvirt_volume.inexistant. If you've│ just added this resource to the configuration, you must run "terraform apply"│ first to create the resource's entry in the state.╵Rechercher par type avec grep
Section intitulée « Rechercher par type avec grep »Pour trouver toutes les ressources d’un type donné, combinez state list avec grep :
terraform state list | grep volumelibvirt_volume.dblibvirt_volume.webterraform state list | grep datadata.libvirt_node_info.hostC’est la méthode recommandée pour filtrer par type — l’argument d’adresse attend un nom complet type.nom, pas un pattern partiel.
Trouver une ressource par identifiant
Section intitulée « Trouver une ressource par identifiant »L’option -id filtre les ressources par leur identifiant dans le state (la valeur du champ id de chaque ressource) :
terraform state list -id=/var/lib/libvirt/images/web-server.qcow2libvirt_volume.webCette option est utile quand vous connaissez l’identifiant réel d’une ressource (un chemin, un UUID, un ARN) mais pas son adresse Terraform.
Compter les ressources
Section intitulée « Compter les ressources »Pour savoir combien de ressources Terraform gère :
terraform state list | wc -l4Ce comptage inclut les data sources. Pour ne compter que les ressources managées :
terraform state list | grep -v ^data | wc -l3Cas d’usage courants
Section intitulée « Cas d’usage courants »| Besoin | Commande |
|---|---|
| Tout lister | terraform state list |
| Vérifier qu’une ressource existe | terraform state list type.nom |
| Lister les volumes | terraform state list | grep volume |
| Lister les data sources | terraform state list | grep ^data |
| Trouver par ID | terraform state list -id=identifiant |
| Compter les ressources | terraform state list | wc -l |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
No state file was found! | Aucun apply effectué ou state supprimé | Vérifier le dossier, lancer terraform apply |
Unknown resource | Faute de frappe dans l’adresse | Vérifier avec terraform state list sans filtre |
Invalid address | Adresse partielle (ex : libvirt_volume sans .nom) | Utiliser grep pour filtrer par type |
Liste vide après destroy | Toutes les ressources ont été supprimées | Comportement normal |
À retenir
Section intitulée « À retenir »terraform state listaffiche toutes les ressources du state — c’est votre inventaire d’infrastructure- Chaque ressource a une adresse au format
type.nom(oudata.type.nompour les data sources) - Utilisez
greppour filtrer par type et-idpour trouver une ressource par son identifiant réel - Vérifiez toujours l’adresse avec
state listavant d’utiliserstate show,state mvoustate rm - Avec
count, les adresses ont un index ([0],[1]). Avecfor_each, une clé (["web"])