
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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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
terraform state show [options] ADRESSEL’adresse est obligatoire — c’est celle que vous obtenez avec terraform state list (ex : libvirt_volume.web, data.libvirt_node_info.host).
Inspecter un volume
Section intitulée « Inspecter un volume »Pour un projet contenant deux volumes et un réseau, state show affiche la fiche complète d’un volume :
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.
Décryptage des attributs
Section intitulée « Décryptage des attributs »| Attribut | Signification |
|---|---|
id | Identifiant unique de la ressource (chemin sur l’hyperviseur) |
name | Nom du volume tel que créé |
pool | Pool de stockage libvirt utilisé |
capacity | Taille virtuelle du disque en octets (~3,5 Go) |
allocation | Espace réellement occupé en octets (~600 Mo) |
physical | Taille physique sur le disque |
path | Chemin complet du fichier qcow2 |
target.format.type | Format du disque (qcow2) |
create.content.url | Image source utilisée pour la création |
Inspecter un réseau
Section intitulée « Inspecter un réseau »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.
Inspecter une data source
Section intitulée « Inspecter une data source »Les data sources s’inspectent avec le préfixe data. :
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.
Comparer le state avec le code
Section intitulée « Comparer le state avec le code »state show est l’outil de comparaison par excellence. Voici comment l’utiliser :
| Ce que vous voulez vérifier | Comment |
|---|---|
| Le nom réel d’un volume | state show → champ name |
| L’identifiant d’une ressource | state show → champ id |
| Si un attribut a la valeur attendue | Comparer state show avec votre .tf |
| La taille réelle d’un disque | state show → champs capacity, allocation |
Erreur : adresse inexistante
Section intitulée « Erreur : adresse inexistante »Si l’adresse est incorrecte, Terraform renvoie un message clair :
terraform state show libvirt_volume.inexistantNo 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 modifythe address to reference a specific instance.La solution est toujours la même : lancez terraform state list pour retrouver la bonne adresse.
Cas d’usage courants
Section intitulée « Cas d’usage courants »| Besoin | Commande |
|---|---|
| Voir tous les attributs d’un volume | terraform state show libvirt_volume.web |
| Récupérer l’ID d’une ressource | terraform state show type.nom | grep id |
| Vérifier la configuration réseau | terraform state show libvirt_network.net |
| Inspecter une data source | terraform state show data.type.nom |
| Extraire un attribut spécifique | terraform state show type.nom | grep attribut |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
No instance found for the given address | Adresse incorrecte | Vérifier avec terraform state list |
| Attribut absent de la sortie | Attribut non supporté par le provider | Consulter la documentation du provider |
| Valeur différente du code | Attribut calculé ou modifié hors Terraform | Lancer terraform plan pour voir le diff |
No state file was found | Aucun apply effectué | Lancer terraform apply d’abord |
À retenir
Section intitulée « À retenir »terraform state showaffiche 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 listd’abord pour trouver la bonne adresse - Les data sources s’inspectent avec le préfixe
data.devant le type state showest indispensable pour diagnostiquer les écarts entre votre code et l’infrastructure réelle