From 2f56a6eae5d6c84dc64559e935d24f88f66af23e Mon Sep 17 00:00:00 2001 From: AlexanderWiechert Date: Thu, 15 Feb 2024 11:00:38 +0100 Subject: [PATCH] extend dynamic ressource creation --- .../if-else-statements-in-terraform.md | 65 +++++++++++++++++++ dynamische-resourcen/{index.md => yaml.md} | 4 +- 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 dynamische-resourcen/if-else-statements-in-terraform.md rename dynamische-resourcen/{index.md => yaml.md} (93%) diff --git a/dynamische-resourcen/if-else-statements-in-terraform.md b/dynamische-resourcen/if-else-statements-in-terraform.md new file mode 100644 index 0000000..994882d --- /dev/null +++ b/dynamische-resourcen/if-else-statements-in-terraform.md @@ -0,0 +1,65 @@ +--- +layout: home +title: If/ Else-Anweisungen in Terraform +subtitle: Was tun, wenn man resourcen dynamisch erstellen muss? +--- + +If/ Else-Anweisungen sind bedingte Anweisungen, die Entscheidungen basierend auf einem bekannten Zustand oder einer bekannten Variable treffen. + +Mit Terraform können Sie diese if/else-Anweisungen mithilfe von a ausführen, ternary operationdie in vielen Programmiersprachen als if/else-Anweisungen in Kurzform beliebt geworden sind. + +Wo eine Sprache etwas Ähnliches schreiben würde wie: +``` +let truthy = false +if (something == "value") { + truthy = true +} else { + truthy = false +} +``` + +Die ternäre Alternative wäre: +``` +let truthy = something == "value" ? true : false +``` + +Oder noch vereinfachter: +``` +let truthy = something == "value" +``` + +## If/Else in Terraform – Verwendung eines Ternärs + +Da Terraform nur die Möglichkeit bietet, ein Ternär zu verwenden, könnte Folgendes verwendet werden: +``` +vpc_config { + subnet_ids = (var.env == "dev") ? [data.aws_subnets.devsubnets.ids[0]] : [data.aws_subnets.prodsubnets.ids[0]] +} +``` +Sie können es besser lesbar machen, indem Sie es in mehrere Zeilen aufteilen. + +Beachten Sie, dass Sie zum Hinzufügen eines mehrzeiligen Ternärs die Anweisung in Klammern setzen müssen(...) +``` +vpc_config { + subnet_ids = ( + (var.env == "dev") ? + [data.aws_subnets.devsubnets.ids[0]] : + [data.aws_subnets.prodsubnets.ids[0]] + ) +} +``` +## Hinzufügen mehrerer If/Else-Anweisungen in einem einzigen Block +Das oben Gesagte funktioniert gut, wenn Sie eine einzelne Bedingung haben. Wenn Sie jedoch mehrere Bedingungen benötigen, müssen Sie Folgendes tun: + +``` +vpc_config { + subnet_ids = ( + (var.env == "dev") ? + [data.aws_subnets.devsubnets.ids[0]] : + (var.env == "uat" ? + [data.aws_subnets.uatsubnets.ids[0]] : + [data.aws_subnets.prodsubnets.ids[0]] + ) + ) +} +``` \ No newline at end of file diff --git a/dynamische-resourcen/index.md b/dynamische-resourcen/yaml.md similarity index 93% rename from dynamische-resourcen/index.md rename to dynamische-resourcen/yaml.md index 885a6d2..2820604 100644 --- a/dynamische-resourcen/index.md +++ b/dynamische-resourcen/yaml.md @@ -1,7 +1,7 @@ --- layout: home -title: Dynamische Resourcen -subtitle: Was tun, wenn man resourcen dynamisch erstellen muss? +title: Dynamische aus Yaml Dateien erstellen +subtitle: Was tun, wenn man Ressourcen dynamisch erstellen muss? --- # Beispiele