Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

terraform state list — lister les ressources

6 min de lecture

logo terraform

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.

  • 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
Fenêtre de terminal
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).

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 :

Fenêtre de terminal
terraform state list
data.libvirt_node_info.host
libvirt_network.net
libvirt_volume.db
libvirt_volume.web

Quatre entrées : la data source et les trois ressources managées. La liste est triée alphabétiquement par type, puis par nom.

Chaque ligne suit le format type.nom pour les ressources managées et data.type.nom pour les data sources :

AdresseTypeNom logiqueSignification
libvirt_network.netlibvirt_networknetRéseau géré par Terraform
libvirt_volume.weblibvirt_volumewebVolume disque « web »
libvirt_volume.dblibvirt_volumedbVolume disque « db »
data.libvirt_node_info.hostlibvirt_node_infohostData source (lecture seule)

Ces adresses sont celles que vous utilisez dans toutes les commandes terraform state : show, mv, rm.

Passez une adresse complète pour vérifier qu’une ressource existe dans le state :

Fenêtre de terminal
terraform state list libvirt_volume.web
libvirt_volume.web

Si la ressource n’existe pas, Terraform renvoie une erreur explicite :

Fenêtre de terminal
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.

Pour trouver toutes les ressources d’un type donné, combinez state list avec grep :

Fenêtre de terminal
terraform state list | grep volume
libvirt_volume.db
libvirt_volume.web
Fenêtre de terminal
terraform state list | grep data
data.libvirt_node_info.host

C’est la méthode recommandée pour filtrer par type — l’argument d’adresse attend un nom complet type.nom, pas un pattern partiel.

L’option -id filtre les ressources par leur identifiant dans le state (la valeur du champ id de chaque ressource) :

Fenêtre de terminal
terraform state list -id=/var/lib/libvirt/images/web-server.qcow2
libvirt_volume.web

Cette option est utile quand vous connaissez l’identifiant réel d’une ressource (un chemin, un UUID, un ARN) mais pas son adresse Terraform.

Pour savoir combien de ressources Terraform gère :

Fenêtre de terminal
terraform state list | wc -l
4

Ce comptage inclut les data sources. Pour ne compter que les ressources managées :

Fenêtre de terminal
terraform state list | grep -v ^data | wc -l
3
BesoinCommande
Tout listerterraform state list
Vérifier qu’une ressource existeterraform state list type.nom
Lister les volumesterraform state list | grep volume
Lister les data sourcesterraform state list | grep ^data
Trouver par IDterraform state list -id=identifiant
Compter les ressourcesterraform state list | wc -l
SymptômeCause probableSolution
No state file was found!Aucun apply effectué ou state suppriméVérifier le dossier, lancer terraform apply
Unknown resourceFaute de frappe dans l’adresseVérifier avec terraform state list sans filtre
Invalid addressAdresse partielle (ex : libvirt_volume sans .nom)Utiliser grep pour filtrer par type
Liste vide après destroyToutes les ressources ont été suppriméesComportement normal
  • terraform state list affiche toutes les ressources du state — c’est votre inventaire d’infrastructure
  • Chaque ressource a une adresse au format type.nom (ou data.type.nom pour les data sources)
  • Utilisez grep pour filtrer par type et -id pour trouver une ressource par son identifiant réel
  • Vérifiez toujours l’adresse avec state list avant d’utiliser state show, state mv ou state rm
  • Avec count, les adresses ont un index ([0], [1]). Avec for_each, une clé (["web"])

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn