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

terraform state show — inspecter une ressource

8 min de lecture

logo terraform

terraform state show affiche tous les attributs d’une ressource telle qu’elle existe dans le state. Là où state list donne l’inventaire, state show ouvre la fiche détaillée : identifiant, nom, chemin, taille, configuration réseau… C’est la commande indispensable pour vérifier l’état réel d’une ressource avant de la modifier ou de diagnostiquer un écart entre le code et l’infrastructure.

Prérequis : savoir utiliser terraform state list pour trouver l’adresse d’une ressource.

  • Afficher les attributs d’une ressource managée, d’une data source
  • Lire la sortie et comprendre chaque section
  • Comparer les valeurs du state avec votre code HCL
  • Utiliser la sortie pour diagnostiquer des problèmes
Fenêtre de terminal
terraform state show [options] ADRESSE

L’adresse est obligatoire — c’est celle que vous obtenez avec terraform state list (ex : libvirt_volume.web, data.libvirt_node_info.host).

Pour un projet contenant deux volumes et un réseau, state show affiche la fiche complète d’un volume :

Fenêtre de terminal
terraform state show libvirt_volume.web
# libvirt_volume.web:
resource "libvirt_volume" "web" {
allocation = 629993472
capacity = 3758096384
create = {
content = {
url = "/var/lib/images/ubuntu-24.04-cloudimg.img"
}
}
id = "/var/lib/libvirt/images/web-server.qcow2"
key = "/var/lib/libvirt/images/web-server.qcow2"
name = "web-server.qcow2"
path = "/var/lib/libvirt/images/web-server.qcow2"
physical = 629987328
pool = "default"
target = {
format = {
type = "qcow2"
}
path = "/var/lib/libvirt/images/web-server.qcow2"
}
}

La sortie reprend la syntaxe HCL, ce qui facilite la lecture. Chaque attribut reflète la valeur réelle renvoyée par le provider, pas ce que vous avez écrit dans votre code.

AttributSignification
idIdentifiant unique de la ressource (chemin sur l’hyperviseur)
nameNom du volume tel que créé
poolPool de stockage libvirt utilisé
capacityTaille virtuelle du disque en octets (~3,5 Go)
allocationEspace réellement occupé en octets (~600 Mo)
physicalTaille physique sur le disque
pathChemin complet du fichier qcow2
target.format.typeFormat du disque (qcow2)
create.content.urlImage source utilisée pour la création
Fenêtre de terminal
terraform state show libvirt_network.net
# libvirt_network.net:
resource "libvirt_network" "net" {
autostart = false
forward = {
mode = "nat"
}
id = "faa9a910-642e-4d44-8377-8ac1d9390e34"
ips = [
{
address = "10.99.30.1"
dhcp = {
ranges = [
{
end = "10.99.30.200"
start = "10.99.30.100"
},
]
}
netmask = "255.255.255.0"
},
]
name = "state-list-net"
uuid = "faa9a910-642e-4d44-8377-8ac1d9390e34"
}

Le réseau a un UUID généré par libvirt (visible aussi avec virsh net-list). Les blocs imbriqués (ips, dhcp, ranges) montrent toute la hiérarchie de la configuration.

Les data sources s’inspectent avec le préfixe data. :

Fenêtre de terminal
terraform state show data.libvirt_node_info.host
# data.libvirt_node_info.host:
data "libvirt_node_info" "host" {
cpu_cores_per_socket = 16
cpu_cores_total = 16
cpu_model = "x86_64"
cpu_sockets = 1
cpu_threads_per_core = 1
id = "7280450332732970530"
memory_total_kb = 49104084
numa_nodes = 1
}

Les data sources ne contiennent que des attributs en lecture seule — ils reflètent les informations récupérées auprès du provider.

state show est l’outil de comparaison par excellence. Voici comment l’utiliser :

Ce que vous voulez vérifierComment
Le nom réel d’un volumestate show → champ name
L’identifiant d’une ressourcestate show → champ id
Si un attribut a la valeur attendueComparer state show avec votre .tf
La taille réelle d’un disquestate show → champs capacity, allocation

Si l’adresse est incorrecte, Terraform renvoie un message clair :

Fenêtre de terminal
terraform state show libvirt_volume.inexistant
No instance found for the given address!
This command requires that the address references one specific instance.
To view the available instances, use "terraform state list". Please modify
the address to reference a specific instance.

La solution est toujours la même : lancez terraform state list pour retrouver la bonne adresse.

BesoinCommande
Voir tous les attributs d’un volumeterraform state show libvirt_volume.web
Récupérer l’ID d’une ressourceterraform state show type.nom | grep id
Vérifier la configuration réseauterraform state show libvirt_network.net
Inspecter une data sourceterraform state show data.type.nom
Extraire un attribut spécifiqueterraform state show type.nom | grep attribut
SymptômeCause probableSolution
No instance found for the given addressAdresse incorrecteVérifier avec terraform state list
Attribut absent de la sortieAttribut non supporté par le providerConsulter la documentation du provider
Valeur différente du codeAttribut calculé ou modifié hors TerraformLancer terraform plan pour voir le diff
No state file was foundAucun apply effectuéLancer terraform apply d’abord
  • terraform state show affiche la fiche complète d’une ressource dans le state
  • La sortie contient les valeurs réelles (pas ce que vous avez écrit dans le code) — y compris les attributs calculés
  • Utilisez toujours terraform state list d’abord pour trouver la bonne adresse
  • Les data sources s’inspectent avec le préfixe data. devant le type
  • state show est indispensable pour diagnostiquer les écarts entre votre code et l’infrastructure réelle

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