Tous les produits
Search
Centre de documentation

Terraform:Terraform output

Dernière mise à jour :Aug 11, 2026

Qu'est-ce qu'une sortie ?

Une sortie est comparable à une valeur de retour dans un langage de programmation. Les sorties exposent les attributs de l'infrastructure après l'exécution de terraform apply. Vous pouvez ainsi les inspecter, les transmettre entre modules ou les injecter dans d'autres outils.

Cas d'utilisation courants :

  • Afficher les attributs des ressources — affichez les valeurs calculées (telles que l'ID ou l'adresse IP d'une instance ECS) dans le CLI après terraform apply

  • Transmettre des données entre ressources — extrayez un attribut d'une ressource et référencez-le dans une autre, par exemple en utilisant l'adresse IP d'un VPC dans une règle de groupe de sécurité

  • Partager des données entre modules — exposez les valeurs d'un module enfant afin qu'un module parent puisse y faire référence

  • Intégrer avec des outils externes — transmettez les valeurs de sortie à des scripts ou à des pipelines CI/CD à l'aide de terraform output

Syntaxe des sorties

Déclarez les sorties dans un bloc output. Vous pouvez placer les blocs output n'importe où dans vos fichiers de configuration Terraform. Nous vous recommandons toutefois de les regrouper dans un fichier dédié nommé outputs.tf pour faciliter la navigation dans votre configuration.

image

Le libellé qui suit le mot-clé output correspond au nom de la sortie. Les noms de sortie doivent être uniques au sein du module. Un bloc output accepte les arguments suivants :

  1. value

    (Obligatoire) La valeur à renvoyer à l'utilisateur du module.

  2. description

    (Facultatif) Une description lisible par l'homme indiquant l'objectif de la sortie. Terraform utilise cette description pour générer la documentation du module.

  3. sensitive

    (Facultatif) Valeur booléenne indiquant si la sortie est sensible. Si elle est définie sur true, Terraform masque la valeur dans la sortie du CLI afin d'éviter la divulgation de données confidentielles, telles que des mots de passe ou un AccessKey Secret.

L'exemple suivant déclare une sortie nommée vpc_id pour une ressource nommée my-vpc :

# Create a VPC
resource "alicloud_vpc" "my-vpc" {
  vpc_name   = "tf-vpc"
  cidr_block = "10.0.0.0/16"
}
output "vpc_id" {
  value = alicloud_vpc.my-vpc.id
}

Une fois terraform apply exécuté avec succès, l'ID du VPC s'affiche dans la sortie du CLI :

alicloud_vpc.my-vpc: Creating...
alicloud_vpc.my-vpc: Creation complete after 7s [id=vpc-bp1gcq59rsakmwx1apmhn]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
vpc_id = "vpc-bp1gcq59rsakmwx1apmhn"

Interroger les sorties avec la commande terraform output

Pour les ressources déjà créées, exécutez terraform output à tout moment pour afficher toutes les valeurs de sortie :

$ terraform output
vpc_id = "vpc-bp1gcq59rsakmwx1apmhn"

Pour récupérer une seule valeur sous forme de chaîne brute (adaptée aux scripts shell) :

$ terraform output -raw vpc_id
vpc-bp1gcq59rsakmwx1apmhn

Pour récupérer toutes les sorties au format JSON (adapté à une consommation programmatique) :

$ terraform output -json
{
  "vpc_id": {
    "sensitive": false,
    "type": "string",
    "value": "vpc-bp1gcq59rsakmwx1apmhn"
  }
}
Avertissement

Les options -raw et -json affichent la valeur en clair des sorties sensibles. N'utilisez pas ces options dans des contextes où la sortie est journalisée ou capturée.

Accéder aux sorties d'un module enfant

Un module parent accède aux sorties d'un module enfant en utilisant module.<MODULE_NAME>.<OUTPUT_NAME> :

module "network" {
  source = "./modules/network"
}

resource "alicloud_security_group_rule" "allow_vpc" {
  cidr_ip = module.network.vpc_cidr_block
}

Le module enfant (./modules/network) doit déclarer la sortie :

output "vpc_cidr_block" {
  description = "CIDR block of the VPC"
  value       = alicloud_vpc.main.cidr_block
}

Bonnes pratiques pour les sorties

  1. Exportez uniquement les informations utiles

    Exportez des attributs calculés, et non des valeurs statiques qui se contentent de répéter une variable. Pour une ressource réseau, les sorties pertinentes incluent :

    1. id : l'identifiant de la ressource.

    2. router_id : l'identifiant du routeur créé automatiquement pour le VPC.

    3. route_table_id : l'identifiant de la table de routage créée automatiquement pour le VPC.

  2. Utilisez des noms et descriptions explicites — respectez les mêmes conventions que pour les noms de variables et fournissez un argument description pour documenter l'intention de la sortie.

  3. **Regroupez toutes les sorties dans outputs.tf** — un fichier dédié facilite la revue des éléments exposés par votre configuration.

  4. Marquez les sorties sensibles

    Utilisez la fonctionnalité intégrée sensitive = true de Terraform plutôt que de chiffrer manuellement les valeurs. Lorsqu'une sortie est marquée comme sensible, Terraform masque sa valeur dans la sortie de terraform plan et terraform apply.