Wie vermeide ich Wiederholungen mit Terraform?

Wie vermeide ich Wiederholungen mit Terraform?

Ich habe gerade angefangen, mit Terraform zu spielen, und als Ausgangspunkt habe ich Ressourcen aus unserem vSphere-Cluster importiert – nur eine einfache Testumgebung, die ich eingerichtet habe, um mit einigen Ansible-Sachen zu spielen.

Ich habe festgestellt, dass ich mich sehr oft wiederhole und frage mich, ob es einen besseren Weg gibt, das zu tun. Ich bin mir nicht sicherModulepasst zu dem, was ich suche, und die Ressourcen, die ich wiederhole, sind nicht identisch, also bin ich nicht sicher, ob eine gerade Schleife funktioniert.

Im Grunde möchte ich Ressourcenstandards festlegen, die ich dann bei Bedarf erweitern/überschreiben kann. Ein kurzes fiktives Beispiel, das zeigt, was ich erreichen möchte:

resource_defaults "vsphere_virtual_machine" {
  resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
  datastore_id     = "${data.vsphere_datastore.datastore.id}"

  num_cpus = 2
  memory   = 1024                                                                                                      guest_id = "other3xLinux64Guest"                                                                                   
  network_interface {
    network_id = "${data.vsphere_network.network.id}"                                                                  }

  disk {
    label = "disk0"
    size  = 20
  }
}

resource "vsphere_virtual_machine" "node1" {
  name             = "terraform-test"
}

resource "vsphere_virtual_machine" "doublenet" {
  name             = "terraform-test-2"
  network_interface {
    network_id = "${data.vsphere_network.other_network.id}"
  }                                                                                                                  
}

resource "vsphere_virtual_machine" "bigdisk" {
  name             = "terraform-test-3"
  disk {
    label = "disk0"
    size  = 100
  }
}

Weiß jemand, wie ich mein Ziel erreichen kann?

UPDATE: Jetzt, da ich etwas mehr Erfahrung mit Terraform habe, sind Module genau das, was ich machen wollte. Ich wusste nur nicht, dass ich Parameter übergeben kann! Ich werde versuchen, es näher zu erläutern, wenn ich Gelegenheit dazu habe. Ich habe vor Kurzem etwas Ähnliches gemacht und indem ich Datenstrukturen an das Modul übergeben habe, konnte ich die ähnlichen, aber unterschiedlichen Instanzen wie beabsichtigt erstellen.

Antwort1

Terraform-Modulesind das, was Sie im Falle einer Duplizierung wollen. Diese kapseln bestimmte Ressourcen mit Standardwerten, die Sie häufig verwenden, sodass Sie einen Satz von Ressourcen mit minimalem Aufwand wiederverwenden können, anstatt sie erneut zu schreiben.

DerTerraform-Modulregistrierungumfasst einige vorgefertigte Module für die größeren Anbieter, wo Sie einige vorhandene ausprobieren oder - wenn Ihr Anbieter nicht unterstützt wird - sich ein besseres Bild davon machen können, wie ein Modul verwendet und gestaltet werden sollte.

verwandte Informationen