Convenzioni sui nomi
Last updated
Last updated
Usa _
(trattino basso) invece del -
(trattino) ovunque (nomi sul tipo resourse, nomi sul tipo data, nomi di variabili, outputs, ecc).
Preferisci l'uso di lettere minuscole e numero (perfino dove é supportato UTF-8).
Non ripetere il tipo di risorsa nel nome della risorsa (ne parzialmente ne interamente):
resource "aws_route_table" "public" {}
resource "aws_route_table" "public_route_table" {}
resource "aws_route_table" "public_aws_route_table" {}
Il nome delle risorse dovrebbe essere chiamatothis
se non c'è disponibile un nome più descrittivo e generale, o se il modulo di risorsa crea una singola risorsa di questo tipo (per esempio, in c'è una singola risorsa di tipo aws_nat_gateway
e risorse multiple di tipo aws_route_table
, quindi aws_nat_gateway
dovrebbe essere chiamato this
e aws_route_table
dovrebbe avere un nomi più descrittivi come per esempio private
, public
, database
).
Usare sempre nomi al singolare.
Usa-
(il trattino )dentro i valori degli argomenti interni e in posti dove i valori sono esposti agli essere umani (per esempio, dentro i nomi DNS o le istanze RDS).
Includi l'argomento count
/ for_each
dentro la risorsa o il blocco di data source come primo argomento in cima separalo da una nuova linea dopo di lui.
Includi argomenti di tipo tags,
se supportati dalla risorsa, come ultimo argomento, seguito dal depends_on
e lifecycle
, se necessario. Tutti questi dovrebbero essere separati da una singola linea vuota.
Quando si usano le condizioni in un argomento count
/ for_each
preferisci valori boleani invece di usare length
o un'altra espressione.
resource
count
/ for_each
tags
count
Non reinventare la ruota in moduli risorsa: usa name
, description
, e il valore didefault
per le variabili come sono definitie nella sezione "Argument Reference" per le risorse con cui stai lavorando.
Il supporto per la validazione nelle variabili è piuttosto limitato (per esempio non è possibile accedere a altre variabili o fare lookups). Bisogna tenerne conto perchè in molti casi questa feature è inutile.
Usare la forma plurale nel nome delle variabili quando il tipo è list(...)
o map(...)
.
Ordina le chiavi in un blocco per le variabil in questo modo: description
, type
, default
, validation
.
Includere sempre la descrizione description
su tutte le variabili perfino se pensi che è ovvio (potresti averne bisogno in futuro).
Usa se è possibile tipi semplici (number
, string
, list(...)
, map(...)
, any
) invece di tipi specifici come object()
a meno che hai bisogno di fare costrizioni specifiche su ogni chiave.
Usa tipi specifici come map(map(string))
se tutti gli elementi della mappa hanno lo stesso tipo (per esempio string
) o possono essere convertiti (per esempio il tipo number
può essere convertito in una string
).
Usa il tipo any
, la validazione sul tipo iniziando da una certa profondità o quando tipo multipli dovrebbero essere supportati.
Value {}
alcune volte è una map ma altre volte un object. Usa tomap(...)
per creare una map in questo modo sei sicuro di non fare un oggetto.
Fai in modo che gli outputs siano consistenti e comprensibilit fuori dal loro raggio d'azione (quando un utente sta usando un modulo dovrebbe essere ovvio cosa un tipo o il valore di un attributo restituiscono).
Il nome di un output dovrebbe descrivere la proprietà che contiene ed essere meno libero della forma che normalmente vorresti.
Una buona struttura per il nome di un output apparirà in questa maniera {name}_{type}_{attribute}
, dove:
{name}
è una risorsa o un data source senza il prefisso del provider. {name}
per aws_subnet
è subnet
, peraws_vpc
èvpc
.
{type}
è un tipo di una risorsa sorgente
{attribute}
è un attributo restituito da un output
Includere sempre la descrizionedescription
per tutti gli output anche se pensi che sia ovvio.
Evita di settare argomenti sensitive
a meno che hai il controllo totale su tutti gli output in tutti i punti dei moduli.
Preferisci l'uso di try()
(disponibile da Terraform 0.13) invece di element(concat(...))
(approccio legacy per le versioni prima della 0.13)
output
Restituire al massimo un security group ID:
Quando abbiamo risorse multiple dello stesso tipo, this
dovrebbe essere omesso nel nome dell'output:
.
Se l'output sta restituendo un valore con funzioni di interpolazione e risorse multiple, {name}
e {type}
dovrebbero essere quanto più generici possibile (this
è un prefisso e dovrebbe essere omesso). .
Se il valore restituito è una lista dovrebbe avere un nome plurale. .