Convenții de numire
Last updated
Last updated
Folosiți _
(underscore) în loc de -
(cratimă) peste tot (numele resurselor, numele surselor de date, numele variabilelor, outputs, etc).
De preferat să utilizați litere mici și cifre (chiar dacă UTF-8 este acceptat).
Nu repetați tipul de resursă în numele resursei (nu parțial, nici complet):
resource "aws_route_table" "public" {}
resource "aws_route_table" "public_route_table" {}
resource "aws_route_table" "public_aws_route_table" {}
Numele resursei ar trebui să fie ales this
dacă nu mai există un nume descriptiv și general disponibil sau dacă modulul de resurse creează o singură resursă de acest tip (ex.: în există o singură resursă de tip aws_nat_gateway
și resurse multiple de tipaws_route_table
, așadar aws_nat_gateway
ar trebui să primească numele this
și aws_route_table
ar trebui să primească nume mai descriptive - cum ar fi private
, public
, database
).
Folosiți întotdeauna substantive la singular pentru nume.
Folosiți -
în interiorul valorilor argumentelor și în locurile în care valoarea va fi expusă unui om (ex.: în interiorul numelui DNS al instanței RDS).
Includeți argumentulcount
/ for_each
în interiorul blocului de resurse sau sursă de date ca prim argument în partea de sus și separat prin linie nouă după acesta.
Includeți argumentul tags,
dacă este suportat de resursă, ca ultimul argument real, urmat de depends_on
și lifecycle
, dacă este necesar. Toate acestea ar trebui separate printr-o singură linie goală.
Când folosiți condiții într-un argumentcount
/ for_each
este de preferat să se folosească valori booleene în loc de length
sau alte expresii.
resource)
count
/ for_each
tags
count
Nu reinventați roata în modulele de resurse: folosiți name
, description
, și valoarea default
pentru variabile cum sunt definite în secțiunea "Argument Reference" (din documentația oficială Terraform) pentru resursa de care aveți nevoie.
Suportul pentru validarea variabilelor este destul de limitat (de exemplu, nu pot accesa alte variabile sau nu pot face căutări). Planificați în consecință, deoarece în multe cazuri această caracteristică este inutilă.
Utilizați forma de plural într-un nume de variabilă atunci când tipul este list(...)
sau map(...)
.
Ordonați cheile într-un bloc de variabilă astfel: description
, type
, default
, validation
.
Includeți întotdeauna description
pentru toate variabilele chiar dacă vi se pare că este evident ce fac (veți avea nevoie de această informație în viitor).
De preferință, alegeți folosirea unor tipuri simple (number
, string
, list(...)
, map(...)
, any
) în loc de tipuri ca object()
cu excepția cazului în care trebuie să aveți constrângeri stricte pentru fiecare cheie.
De preferință, alegeți folosirea tipurilor specifice, camap(map(string))
dacă toate elementele din map au același tip (ex.: string
) sau pot fi convertite (ex.: tipul number
poate fi convertit la tipul string
).
Utilizați tipul any
pentru a dezactiva validarea tipului începând de la o anumită adâncime sau atunci când mai multe tipuri ar trebui să fie acceptate.
Valoarea {}
este uneori de tip map (hartă), dar alteori un obiect. Utilizați tomap(...)
pentru a o face de tip map pentru că nu există nicio modalitate de a face un obiect.
Faceți rezultatele (outputs) consistente și ușor de înțeles în afara domeniului de aplicare (atunci când un utilizator folosește un modul, ar trebui să fie evident care este tipul și atributul valorii returnate).
Numele rezultatului ar trebui să descrie proprietatea pe care o conține și să aibă o formă mai puțin liberă decât v-ați dori în mod normal
O structură bună pentru numele de ieșire arată ca {name}_{type}_{attribute}
, unde:
{name}
este o resursă sau un nume de sursă de date fără prefix de furnizor. {name}
pentru aws_subnet
este subnet
, pentruaws_vpc
este vpc
.
{type}
este un tip de sursă de resurse.
{attribute}
este un atribut returnat de rezultate (outputs).
Includeți întotdeauna description
pentru toate rezultatele (outputs) chiar dacă vi se pare că este ceva evident.
Evitați setarea sensitive
pentru argumente cu excepția cazului în care controlați pe deplin utilizarea acestui rezultat în toate locurile din toate modulele.
De preferință, alegețitry()
(disponibil începând cu Terraform 0.13) în loc de element(concat(...))
(abordarea legacy folosită înainte de versiunea 0.13)
output
Returnați cel mult un ID al grupului de securitate:
Când aveți mai multe resurse de același tip, .this
ar trebui să fie omis în numele ieșirii:
.
Dacă rezultatul returnează o valoare cu funcții de interpolare și resurse multiple, {name}
și {type}
ar trebui să fie cât mai generice (this
ca prefix ar trebui să fie omis). .
Dacă valoarea returnată este o listă, aceasta ar trebui să aibă un nume la plural..