Namenskonventionen
Allgemeine Konventionen
Es sollte keinen Grund geben, nicht wenigstens diese Konventionen zu befolgen :)
Beachten Sie, dass die tatsächlichen Cloud-Ressourcen oft Einschränkungen bei den zulässigen Namen haben. Einige Ressourcen dürfen zum Beispiel keine Bindestriche enthalten, andere müssen in Kamelschreibweise geschrieben werden. Die Konventionen in diesem Buch beziehen sich auf die Terraform-Namen selbst.
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).
Argumente für Ressourcen und Datenquellen
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 AWS VPC-Modul eine einzelne Ressource des Typsaws_nat_gateway
und mehrere Ressourcen des Typsaws_route_table
, daher sollteaws_nat_gateway
this
benannt werden undaws_route_table
sollte beschreibendere Namen haben - wieprivate
,public
oderdatabase
).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 vondepends_on
undlifecycle
, 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, anstattlength
oder andere Ausdrücke zu verwenden.
Code-Beispiele für resource
resource
Verwendung von count
/ for_each
count
/ for_each
Platzierung von tags
tags
Bedingungen in count
count
Variablen
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(...)
odermap(...)
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 wieobject()
, 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 Typnumber
instring
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 einemap()
und manchmal einobject()
. Verwenden Sietomap(...)
, um einemap()
zu erstellen, da es keine Möglichkeit gibt, einobject()
zu erstellen.
Ausgaben
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üraws_subnet
istsubnet
, füraws_vpc
ist esvpc
.{type}
ist ein Typ einer Ressourcenquelle{attribute}
ist ein Attribut, das von der Ausgabe zurückgegeben wird.
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). Siehe Beispiel.Wenn der zurückgegebene Wert eine Liste ist, sollte er einen Pluralnamen haben. Siehe Beispiel.
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überelement(concat(...))
(Legacy-Ansatz für die Version vor 0.13)
Code-Beispiele für output
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:
Last updated