In meinem letzten Beitrag über die Terraform-Eingabevalidierung habe ich über die Verwendung der Funktion file zur Erstellung von Eingabebestätigungen gesprochen. Diese Methode eignet sich zwar hervorragend, wenn Sie komplexe Prüfungen durchführen müssen, bei denen das Ergebnis von mehreren Variablen abhängt, aber Terraform ermöglicht es Ihnen auch, Validierungen zu Ihren Variablendefinitionen selbst hinzuzufügen. In diesem Beitrag gebe ich Ihnen einige Beispiele, wie Sie diese Funktion nutzen können.
Beschränkungen
Als die Validierungsoption zum ersten Mal in Terraform CLI v0.13.0 auftauchte, war ich wirklich begeistert. Ich hoffte, dass wir endlich unsere benutzerdefinierten Assertions loswerden könnten, die auf der Funktion file basieren, über die ich hier gesprochen habe. Leider musste ich feststellen, dass die Validierungen mit Einschränkungen verbunden sind. Bevor wir also loslegen, werde ich Sie über diese Einschränkungen informieren, damit Sie vorab entscheiden können, ob dies für Ihren Anwendungsfall geeignet ist.
Referenzbegrenzung
Wenn Sie Ihren Validierungscode schreiben, können Sie nur den an Ihre Variable übergebenen Inhalt mit fest kodierten Zeichenketten vergleichen. Dies schränkt Sie bei der Erstellung komplexer Validierungen ein, bei denen Sie auch an eine andere Variable übergebene Werte vergleichen müssen.
Keine Variablen in error_message erlaubt
Sie dürfen keine Variablen im Feld error_message verwenden. Das macht es unmöglich, eine detaillierte Fehlermeldung anzuzeigen. Terraform teilt Ihnen den Inhalt der Eingabevariablen nicht mit und da die Verwendung von Variablen nicht erlaubt ist, ist es auch nicht möglich, dies dem Benutzer selbst anzuzeigen.
Keine dynamische Unterstützung
Obwohl es ein offenes Ticket gibt, um dynamic zu den Validierungsregeln hinzuzufügen, wird es derzeit nicht unterstützt. Dies erschwert die Erstellung von Validierungen für Variablen mit einem Objekttyp oder einer Map.
Einfache Überprüfungen
Da wir nun die Einschränkungen kennen, können wir damit beginnen, unsere eigenen Validierungen zu schreiben. Wenn wir uns die
variable "prefix" {
type = string
description = "The prefix used for the GCP projects"
validation {
condition = can(regex("^w+$", var.project_prefix))
# Not allowed due to the use of a variable:
# error_message = "Invalid value [${var.prefix}]. The prefix value can only contain letters and numbers."
error_message = "The prefix value can only contain letters and numbers."
}
validation {
condition = length(var.project_prefix) > 2 && ength(var.project_prefix) <= 6
# Not allowed due to the use of a variable:
# error_message = "Invalid value [${var.prefix}]. The prefix value should contain at least 3 characters and can not contain more than 6 characters"
error_message = "The prefix value should contain at least 3 characters and can not contain more than 6 characters"
}
}
Validierung komplexer Typen
Verfasst von

Lotte-Sara Laan
Unsere Ideen
Weitere Blogs
Contact



