_
(surligné) au lieu de -
(tiret) partout (noms des ressources, noms des sources de données, noms des variables, sorties, etc.).resource "aws_route_table" "public" {}
resource "aws_route_table" "public_route_table" {}
resource "aws_route_table" "public_aws_route_table" {}
aws_nat_gateway
et plusieurs ressources de typeaws_route_table
, donc aws_nat_gateway
pourrait être nommé this
etaws_route_table
devrait avoir des noms plus descriptifs - comme private
, public
, database
).count
/ for_each
à l'intérieur du bloc de ressource ou de source de données comme premier argument en haut et séparé par une nouvelle ligne après celui-ci.tags,
si pris en charge par ressource, comme dernier argument réel, suivi de depends_on
etlifecycle
, si necessaire. Tous ces éléments doivent être séparés par une seule ligne vide.count
/ for_each,
il est préférable d'employer les valeurs booléennes au lieu delength
ou d'autres expressions.ressource
count
/ for_each
tags
count
list(...)
ou map(...)
.description
, type
, default
, validation
.description
sur toutes les variables même si vous pensez que c'est évident (vous en aurez besoin à l'avenir).number
, string
, list(...)
, map(...)
, any
) plutôt qu'un type spécifique comme object()
sauf si vous avez besoin d'avoir des contraintes strictes sur chaque clé.map(map(string))
si tous les éléments de la carte ont le même type (par exemple, string
) ou peuvent être convertis en celui-ci (par exemple, le type de nombre peut être converti en string
).{}
est parfois un map mais quelques fois object. Utiliser tomap(...)
pour créer une carte car il n'y a aucun moyen de créer un objet.{name}_{type}_{attribute}
, où:{name} est le nom de la ressource ou de la source de données
sans le préfixe du fournisseur. {name}
pour aws_subnet
est sous-réseau, pouraws_vpc
ce sera vpc
.{type}
est le type de ressource {attribute}
est l'attribut retourné par la sortie{name}
et {type}
il devrait être aussi générique que possible (this
comme préfixe être omis). Voir exemple.sensible
à moins que vous ne contrôliez entièrement l'utilisation de cette sortie à tous les endroits de tous les modulestry()
(disponible depuis Terraform 0.13) à element(concat(...))
(approche héritée pour la version antérieure à 0.13)