Tous les produits
Search
Centre de documentation

Terraform:Resource

Dernière mise à jour :Aug 11, 2026

Qu'est-ce qu'une ressource

Une ressource est un élément d'infrastructure que vous configurez à l'aide du code Terraform : une instance Elastic Compute Service (ECS), un compartiment Object Storage Service (OSS), un réseau Virtual Private Cloud (VPC) ou tout autre objet cloud. Terraform appelle l'API de chaque service Alibaba Cloud pour créer et gérer ces ressources, notamment les instances ECS, les modèles de déploiement d'instances ECS, les groupes de sécurité, les réseaux VPC, les règles de pare-feu, les VPN, les tables de routage, les bases de données et les équilibreurs de charge Server Load Balancers (SLB).

Syntaxe de déclaration des ressources

Définissez les ressources dans les fichiers .tf. Placez les ressources de types similaires dans le même dossier et déclarez-les dans le fichier main.tf.

image

Dans cet exemple, main.tf constitue le fichier de configuration racine :

  • resource

    Le mot-clé resource déclare un seul objet d'infrastructure.

  • resource_type

    resource_type identifie le type de ressource à créer. Les types disponibles proviennent du provider déclaré dans le bloc provider Terraform. Un provider est un plugin qui expose un ensemble de types de ressources.

  • resource_name

    resource_name est un identifiant logique pour la ressource au sein du dossier de configuration actuel — il ne s'agit pas du nom de l'objet d'infrastructure réel créé dans le cloud. La valeur resource_name doit être unique parmi toutes les ressources du même type dans le dossier actuel.

  • Paramètres de ressource

    Les paramètres de ressource utilisent des expressions pour déclarer les propriétés d'une ressource. Certains paramètres sont obligatoires lors de la création ; d'autres sont facultatifs et permettent de configurer des fonctionnalités avancées.

Un seul fichier de configuration Terraform peut contenir plusieurs ressources du même type ou de types différents, et ces ressources peuvent s'étendre sur plusieurs providers.

image

Dans cet exemple, le premier bloc resource déclare un réseau VPC et le second déclare un vSwitch, tous deux dans le même fichier main.tf. La ressource VPC est de type alicloud_vpc et nommée main-vpc ; la ressource vSwitch est de type alicloud_vswitch et nommée main-vswitch.

Tous les paramètres du bloc alicloud_vpc sont facultatifs. Par exemple, cidr_block est facultatif car il possède une valeur par défaut — si vous l'omettez, le provider ou le backend du service VPC en génère une automatiquement.

Pour alicloud_vswitch, vpc_id, cidr_block et zone_id sont obligatoires ; tous les autres paramètres sont facultatifs.

Les paramètres de ressource sont spécifiques à chaque type de ressource et varient considérablement d'un type à l'autre. Par exemple, alicloud_vpc accepte vpc_name et cidr_block, tandis que alicloud_vswitch accepte vswitch_name, cidr_block, zone_id et vpc_id.

Référence des paramètres d'attribut

Pour référencer une propriété de ressource depuis un autre bloc resource, utilisez le format suivant : <resource_type>.<resource_name>.<attribute>.

Dans l'exemple ci-dessus, alicloud_vswitch requiert l'ID VPC lors de la création. Comme l'ID VPC est généré par le serveur lors de la création du VPC, alicloud_vswitch le référence depuis le bloc alicloud_vpc en utilisant alicloud_vpc.main_vpc.id.

Les références croisées entre ressources ne fonctionnent que lorsque les ressources concernées sont définies dans des fichiers situés dans le même dossier de configuration racine.

Considérations relatives aux définitions de ressources

Gardez à l'esprit les règles suivantes lors de la définition des blocs resource :

  1. Le nom de la ressource doit être unique

    Chaque ressource est identifiée par son type et son nom au sein du dossier de configuration actuel. Les noms de ressources doivent être uniques parmi toutes les ressources du même type dans ce dossier.

    image
  2. Le type de ressource ne peut pas être personnalisé

    Le type de ressource est un mot-clé fixe lié à un provider. Un compartiment OSS, par exemple, doit utiliser le mot-clé alicloud_oss_bucket. Tout autre identifiant entraîne l'échec des commandes terraform plan et terraform apply.

    image
  3. Tous les paramètres de configuration doivent être déclarés dans le corps du bloc resource

    Toutes les propriétés d'infrastructure d'une ressource doivent être déclarées à l'intérieur du bloc resource, entre les accolades {}.

    image

    Lorsque vous exécutez une commande Terraform, une erreur similaire à la suivante s'affiche :

    Error: Argument or block definition required
      on main.tf line 4:
       4: storage_class
    An argument or block definition is required here.
  4. Tous les paramètres obligatoires doivent être définis

    L'omission d'un paramètre obligatoire entraîne l'échec des commandes terraform plan et terraform apply.

    image

    Lorsque vous exécutez une commande Terraform, une erreur similaire à la suivante s'affiche :

    Error: Missing required argument
      on main.tf line 1, in resource "alicloud_vswitch" "main_vswitch":
       1: resource "alicloud_vswitch" "main_vswitch" {
    The argument "vpc_id" is required, but no definition was found.