Convention des noms
Last updated
Last updated
Utilisez _
(surligné) au lieu de -
(tiret) partout (noms des ressources, noms des sources de données, noms des variables, sorties, etc.).
Préférez les lettres minuscules et les chiffres (même si UTF-8 est pris en charge).
Ne répétez pas le type de ressource dans le nom de la ressource (ni partiellement, ni complètement) :
Le nom de la ressource doit être ainsi donné s'il n'y a plus de nom descriptif et général disponible, ou si le module de ressources crée une seule ressource de ce type (par exemple, dans il y a une seule ressource de type 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
).
Toujours utilisez des noms au singulier.
Utiliser - à l'intérieur des valeurs des arguments et aux endroits où la valeur sera exposée à un humain (par exemple, à l'intérieur du nom DNS de l'instance RDS).
Inclure l'argument 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.
Inclure l'argument 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.
Lorsque vous utilisez des conditions dans un argumentcount
/ 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
Ne réinventez pas la roue dans les modules de ressources : utilisez le nom, la description et la valeur par défaut des variables telles que définies dans la section "Référence des arguments" pour la ressource avec laquelle vous travaillez.
La prise en charge de la validation dans les variables est plutôt limitée (par exemple, impossible d'accéder à d'autres variables ou de faire des recherches). Planifiez en conséquence car dans de nombreux cas, cette fonctionnalité est inutile.
Utilisez la forme plurielle dans un nom de variable lorsque type est list(...)
ou map(...)
.
Ordonner les clés dans un bloc variable comme ceci: description
, type
, default
, validation
.
Toujours inclure description
sur toutes les variables même si vous pensez que c'est évident (vous en aurez besoin à l'avenir).
Préférez l'utilisation de types simples (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é.
Utilisez des types spécifiques comme 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
).
Utilisez type any pour désactiver la validation de type à partir d'une certaine profondeur ou lorsque plusieurs types doivent être pris en charge.
La Valeur {}
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.
Faire les sorties cohérentes et compréhensibles en dehors de son champ d'application (lorsqu'un utilisateur utilise un module, le type et l'attribut de la valeur renvoyée doivent être évidents).
Le nom de la sortie doit décrire la propriété qu'il contient et être moins libre que vous ne le souhaiteriez normalement.
Une bonne structure pour le nom de la sortie ressemble à {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
Incluez toujours une description pour toutes les sorties, même si vous pensez que c'est évident.
Évitez de définir un argument sensible
à moins que vous ne contrôliez entièrement l'utilisation de cette sortie à tous les endroits de tous les modules
Préférez try()
(disponible depuis Terraform 0.13) à element(concat(...))
(approche héritée pour la version antérieure à 0.13)
Renvoie au plus un ID de groupe de sécurité :
Lorsque vous avez plusieurs ressources du même type, cela doit être omis dans le nom de la sortie:
.
Si la sortie renvoie une valeur avec des fonctions d'interpolation et plusieurs ressources, {name}
et {type}
il devrait être aussi générique que possible (this
comme préfixe être omis). .
Si la valeur renvoyée est une liste, elle doit avoir un nom au pluriel. .