Convenții de numire
Convenții generale
Nu există niciun motiv să nu se respecte măcar aceste convenții :)
Atenție că resursele din cloud în realitate au adesea restricții în numele permise. Unele resurse, de exemplu, nu pot conține cratimă, unele trebuie sa fie scrise cu majuscule mediale (CamelCase). Convenția din aceasta carte se referă la numele din Terraform în sine.
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).
Argumentele resurselor și surselor de date
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 AWS VPC module există o singură resursă de tipaws_nat_gateway
și resurse multiple de tipaws_route_table
, așadaraws_nat_gateway
ar trebui să primească numelethis
șiaws_route_table
ar trebui să primească nume mai descriptive - cum ar fiprivate
,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 argumentul
count
/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 dedepends_on
șilifecycle
, dacă este necesar. Toate acestea ar trebui separate printr-o singură linie goală.Când folosiți condiții într-un argument
count
/for_each
este de preferat să se folosească valori booleene în loc delength
sau alte expresii.
Exemple de cod pentru resurse (resource)
resource)
Folosirea count
/ for_each
count
/ for_each
Folosirea tags
tags
Condiții în count
count
Variabile
Nu reinventați roata în modulele de resurse: folosiți
name
,description
, și valoareadefault
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(...)
saumap(...)
.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 caobject()
cu excepția cazului în care trebuie să aveți constrângeri stricte pentru fiecare cheie.De preferință, alegeți folosirea tipurilor specifice, ca
map(map(string))
dacă toate elementele din map au același tip (ex.:string
) sau pot fi convertite (ex.: tipulnumber
poate fi convertit la tipulstring
).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țitomap(...)
pentru a o face de tip map pentru că nu există nicio modalitate de a face un obiect.
Outputs
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}
pentruaws_subnet
estesubnet
, pentruaws_vpc
estevpc
.{type}
este un tip de sursă de resurse.{attribute}
este un atribut returnat de rezultate (outputs).
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). Vezi exemple.Dacă valoarea returnată este o listă, aceasta ar trebui să aibă un nume la plural. Vezi exemplu.
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ți
try()
(disponibil începând cu Terraform 0.13) în loc deelement(concat(...))
(abordarea legacy folosită înainte de versiunea 0.13)
Exemple de cod pentru output
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:
Folosiți numele la plural dacă valoarea returnată este o listă
Last updated