Wenn Sie eine Frage haben, muss ich eine Liste der GCP-Recheninstanzen bereitstellen. Wie kann ich for_each durch die "vms" in dieser Objektliste wie dieser schleifen?
"gcp_zone": "us-central1-a",
"image_name": "centos-cloud/centos-7",
"vms": [
{
"hostname": "test1-srfe",
"cpu": 1,
"ram": 4,
"hdd": 15,
"log_drive": 300,
"template": "Template-New",
"service_types": [
"sql",
"db01",
"db02"
]
},
{
"hostname": "test1-second",
"cpu": 1,
"ram": 4,
"hdd": 15,
"template": "APPs-Template",
"service_types": [
"configs"
]
}
]
}
if
,for
oderwhile
Aussagen. Sie können diese jedoch bis zu einem gewissen Grad simulieren, in einigen Fällen dank dercount
Eigenschaft. Lesen Sie diesen ausgezeichneten Artikel über das Reproduzieren von Bedingungen oder Schleifen mit Terraform : blog.gruntwork.io/…for_each
Blöcke verwenden: 0.12.6 Changelog . Für das, was es wert ist, wenn / else-Bedingungen jetzt für einige Versionen in Terraform sind: Terraform-Dokumente: Bedingte AusdrückeAntworten:
Scheint, als hätte ich gefunden, was ich tun soll. Wenn Sie nicht die Karten von Karten, sondern die Liste der Karten übergeben, können Sie einen solchen Code verwenden
Es wird die tatsächliche Anzahl der Instanzen erstellt, und wenn Sie beispielsweise die mittlere von drei entfernen (wenn Sie drei erstellen :)), entfernt terraform das, was wir gefragt haben.
quelle
Ab Terraform 0.12 können Sie for_each mit folgenden Modulen verwenden:
modules / google_compute_instance / variables.tf
modules / google_compute_instance / main.tf
servers.tf
Natürlich können Sie beliebig viele Variablen hinzufügen und im Modul verwenden.
quelle
Die Verwendung des
for_each
Blocks ist ziemlich neu und es gibt nicht zu viel Dokumentation. Einige der besten Informationen stammen aus ihrem Ankündigungsblog: https://www.hashicorp.com/blog/hashicorp-terraform-0-12-preview-for-and-for-each/Lesen Sie auch den Abschnitt Dynamische Blöcke in der Dokumentation: https://www.terraform.io/docs/configuration/expressions.html#dynamic-blocks
Wie Ihr Beispiel aussieht, benötigen Sie für jede erstellte Instanz eine Reihe von Werten, damit Sie eine Karte mit Karten erhalten:
Unten sehen Sie ein Beispiel, das ich mit Terraform 0.12.12 erstellt habe:
Ausgabe des Terraformplans:
quelle