Namenskonventionen
Last updated
Last updated
Verwenden Sie überall _
(Unterstrich) anstelle von -
(Bindestrich) (Ressourcennamen, Datenquellennamen, Variablennamen, Ausgaben usw.).
Verwenden Sie vorzugsweise Kleinbuchstaben und Zahlen (auch wenn UTF-8 unterstützt wird).
Wiederholen Sie den Ressourcentyp nicht im Ressourcennamen (weder teilweise noch vollständig):
resource "aws_route_table" "public" {}
resource "aws_route_table" "public_route_table" {}
resource "aws_route_table" "public_aws_route_table" {}
Der Ressourcenname sollte this
benannt werden, wenn kein beschreibender und allgemeiner Name verfügbar ist, oder wenn das Ressourcenmodul eine einzelne Ressource dieses Typs erstellt (z. B. gibt es im eine einzelne Ressource des Typs aws_nat_gateway
und mehrere Ressourcen des Typs aws_route_table
, daher sollte aws_nat_gateway
this
benannt werden und aws_route_table
sollte beschreibendere Namen haben - wie private
, public
oder database
).
Verwenden Sie bei Namen immer die Einzahl.
Verwenden Sie -
innerhalb von Argumenten und an Stellen, an denen der Wert für einen Menschen sichtbar ist (z. B. innerhalb des DNS-Namens der RDS-Instanz).
Fügen Sie das Argument count
/ for_each
innerhalb des Ressourcen- oder Datenquellenblocks als erstes Argument oben ein und trennen Sie es danach durch einen Zeilenumbruch.
Fügen Sie das Argument tags
, falls von der Ressource unterstützt, als letztes echtes Argument ein, gefolgt von depends_on
und lifecycle
, falls erforderlich. Alle diese Argumente sollten durch eine einzelne Leerzeile getrennt werden.
Bei der Verwendung von Bedingungen in einem count
/ for_each
Argument sind boolesche Werte zu bevorzugen, anstatt length
oder andere Ausdrücke zu verwenden.
resource
count
/ for_each
tags
count
Erfinden Sie das Rad in Ressourcenmodulen nicht neu: Verwenden Sie den Namen, die Beschreibung und den Standardwert für Variablen, wie sie im Abschnitt "Argumentreferenz" für die Ressource, mit der Sie arbeiten, definiert sind.
Die Unterstützung für die Validierung von Variablen ist ziemlich begrenzt (z.B. kann nicht auf andere Variablen zugegriffen werden oder Lookups durchgeführt werden). Planen Sie entsprechend, denn in vielen Fällen ist diese Funktion nutzlos.
Verwenden Sie die Pluralform in einem Variablennamen, wenn der Typ list(...)
oder map(...)
ist.
Ordnen Sie die Schlüssel in einem Variablenblock wie folgt an: description
, type
, default
, validation
Fügen Sie immer eine description
allen Variablen hinzu, auch wenn Sie denken, dass es offensichtlich ist (Sie werden es in Zukunft brauchen).
Verwenden Sie lieber einfache Typen (number
, string
, list(...)
, map(...),
any
) als spezifische Typen wie object()
, es sei denn, Sie müssen strenge Einschränkungen für jeden Schlüssel haben.
Verwenden Sie spezifische Typen wie map(map(string))
, wenn alle Elemente der Map denselben Typ haben (z. B. string
) oder in diesen umgewandelt werden können (z. B. kann der Typ number
in string
umgewandelt werden).
Verwenden Sie type any
, um die Typüberprüfung ab einer bestimmten Tiefe zu deaktivieren oder wenn mehrere Typen unterstützt werden sollen.
Der Wert {}
ist manchmal eine map()
und manchmal ein object()
. Verwenden Sie tomap(...)
, um eine map()
zu erstellen, da es keine Möglichkeit gibt, ein object()
zu erstellen.
Machen Sie Ausgaben konsistent und verständlich außerhalb des Moduls (wenn ein Benutzer ein Modul verwendet, sollte es offensichtlich sein, welchen Typ und welches Attribut der Wert hat, den es zurückgibt).
Der Name der Ausgabe sollte die darin enthaltene Eigenschaft beschreiben und weniger frei formuliert sein, als Sie es normalerweise wünschen würden.
Eine gute Struktur für den Namen der Ausgabe sieht aus wie {name}_{type}_{attribute}
, wobei:
{name}
ein Ressourcen- oder Datenquellenname ohne Provider-Präfix ist. {name}
für aws_subnet
ist subnet
, für aws_vpc
ist es vpc
.
{type}
ist ein Typ einer Ressourcenquelle
{attribute}
ist ein Attribut, das von der Ausgabe zurückgegeben wird.
Geben Sie immer eine description
für alle Ausgaben an, auch wenn Sie denken, dass es offensichtlich ist.
Vermeiden Sie es, sensitive
Argumente zu setzen, es sei denn, Sie kontrollieren die Verwendung dieser Ausgabe an allen Stellen in allen Modulen vollständig.
Bevorzugen Sie try()
(verfügbar seit Terraform 0.13) gegenüber element(concat(...))
(Legacy-Ansatz für die Version vor 0.13)
output
Höchstens eine ID einer Security-Gruppe ausgeben:
Wenn mehrere Ressourcen desselben Typs vorhanden sind, sollte this
im Namen der Ausgabe weggelassen werden:
Pluralname verwenden, wenn der Rückgabewert eine Liste ist:
.
Wenn die Ausgabe einen Wert mit Interpolationsfunktionen und mehreren Ressourcen zurückgibt, sollten {name}
und {type}
dort so allgemein wie möglich sein (this
sollte als Präfix weggelassen werden). .
Wenn der zurückgegebene Wert eine Liste ist, sollte er einen Pluralnamen haben. .