Compute Engine-Ressourcen mit Terraform bereitstellen

HashiCorp Terraform ist ein IaC-Tool (Infrastructure as Code), mit dem Sie eine Cloud-Infrastruktur bereitstellen und verwalten können. Terraform bietet Plug-ins, die als Anbieter bezeichnet werden und mit denen Sie mit Cloud-Anbietern und anderen APIs interagieren können. Sie können den Terraform-Provider für Google Cloud verwenden, um Google Cloud-Ressourcen wie Compute Engine bereitzustellen und zu verwalten.

So funktioniert Terraform

Terraform hat eine deklarative, konfigurationsorientierte Syntax, mit der Sie die Infrastruktur beschreiben können, die Sie in Ihrem Google Cloud-Projekt bereitstellen möchten. Nachdem Sie diese Konfiguration in einer oder mehreren Terraform-Konfigurationsdateien erstellt haben, können Sie die Konfiguration mit der Terraform-Befehlszeile auf Ihre Compute Engine-Ressourcen anwenden.

In den folgenden Schritten wird die Funktionsweise von Terraform erläutert:

  1. Sie beschreiben die Infrastruktur, die Sie bereitstellen möchten, in einer Terraform-Konfigurationsdatei. Sie müssen keinen Code schreiben, der beschreibt, wie die Infrastruktur bereitgestellt wird. Terraform stellt die Infrastruktur für Sie bereit.
  2. Sie führen den Befehl terraform plan aus, der Ihre Konfiguration auswertet und einen Ausführungsplan generiert. Sie können den Plan prüfen und bei Bedarf Änderungen vornehmen.
  3. Anschließend führen Sie den Befehl terraform apply aus, der die folgenden Aktionen ausführt:

    1. Es stellt Ihre Infrastruktur basierend auf Ihrem Ausführungsplan bereit, indem die entsprechenden Compute Engine APIs im Hintergrund aufgerufen werden.
    2. Es wird eine Terraform-Zustandsdatei erstellt, eine JSON-Datei, die die Ressourcen in Ihrer Konfigurationsdatei den Ressourcen in der realen Infrastruktur zuordnet. Terraform verwendet diese Datei, um den aktuellen Status Ihrer Infrastruktur zu erfassen und zu bestimmen, wann Ressourcen erstellt, aktualisiert und gelöscht werden müssen.
    3. Wenn Sie anschließend terraform apply ausführen, verwendet Terraform die Zuordnung in der Zustandsdatei, um die vorhandene Infrastruktur mit dem Code zu vergleichen und bei Bedarf Aktualisierungen vorzunehmen:

      • Wenn ein Ressourcenobjekt in der Konfigurationsdatei definiert, aber in der Zustandsdatei nicht vorhanden ist, erstellt Terraform es.
      • Wenn ein Ressourcenobjekt in der Zustandsdatei vorhanden ist, aber eine andere Konfiguration als die Konfigurationsdatei hat, aktualisiert Terraform die Ressource entsprechend Ihrer Konfigurationsdatei.
      • Wenn ein Ressourcenobjekt in der Zustandsdatei mit der Konfigurationsdatei übereinstimmt, lässt Terraform die Ressource unverändert.

Terraform-basierte Leitfäden für Compute Engine

In der folgenden Tabelle sind alle Terraform-basierten Anleitungen und Tutorials für die Compute Engine aufgeführt:

Leitfaden Details
Compute Engine-Instanz erstellen und starten Hier erfahren Sie, wie Sie eine VM-Instanz erstellen.
VM mit lokalen SSDs erstellen Hier erfahren Sie, wie Sie eine VM mit lokalem SSD-Speicher erstellen.
Laufwerk-Snapshots erstellen Hier erfahren Sie, wie Sie Standard-Snapshots erstellen, um regelmäßig Daten von Laufwerken zu sichern.
Laufwerk mit Klonen duplizieren Erläutert das Erstellen von zonalen Laufwerksklonen eines vorhandenen Laufwerks.
Synchron replizierte Laufwerke erstellen und verwalten Erläutert das Erstellen und Verwalten von replizierten Laufwerken
Spot-VMs erstellen und verwenden Hier erfahren Sie, wie Sie Spot-VMs erstellen und verwalten. Spot-VMs sind VM-Instanzen, die überschüssige Compute Engine-Kapazität darstellen. Spot-VMs sind wesentlich günstiger als der On-Demand-Preis für Standard-VMs.
SSH-Schlüssel zu VMs hinzufügen Beschreibt, wie Sie SSH-Schlüssel zu VM-Instanzen hinzufügen, die OS Login und VMs mit metadatenbasierten SSH-Schlüsseln verwenden.
Shutdown-Skripts ausführen Hier erfahren Sie, wie Sie Shutdown-Scripts erstellen und ausführen, die Befehle ausführen, bevor eine VM-Instanz beendet oder neu gestartet wird.
Reservierung für ein Einzelprojekt erstellen Hier erfahren Sie, wie Sie eine Reservierung für ein einzelnes Projekt erstellen, die nur von VM-Instanzen im selben Projekt genutzt werden kann.
Instanzvorlagen erstellen Hier erfahren Sie, wie Sie Instanzvorlagen erstellen und verwalten.
Anhand von Zeitplänen skalieren Hier erfahren Sie, wie Sie Skalierungspläne für eine vorhandene MIG erstellen. Mit dem zeitplanbasierten Autoscaling lässt sich die Verfügbarkeit von Arbeitslasten verbessern, da die Kapazität anhand der erwarteten Last im Voraus geplant werden kann.
Nichtflüchtigen Speicher zu VM hinzufügen Erläutert, wie Sie ein leeres zonales Persistent Disk-Volume ohne Startfunktion erstellen und an Ihre VM anhängen.
OS Login einrichten ERläutert, wie Sie OS Login einrichten.
Nicht-Bootlaufwerk an eine VM anhängen Hier erfahren Sie, wie Sie ein zonales Laufwerk ohne Bootfunktion an Ihre VM anhängen.
VM mit einem vom Nutzer verwalteten Dienstkonto erstellen Erläutert das Erstellen einer VM-Instanz, die für die Verwendung eines nutzerverwalteten Dienstkontos konfiguriert ist. Ein Dienstkonto ist eine spezielle Art von Konto, das in der Regel von einer Anwendung oder einer Computing-Arbeitslast für autorisierte API-Aufrufe verwendet wird.
Größe eines nichtflüchtigen Speichers erhöhen Erläutert das Erhöhen der Größe eines nichtflüchtigen Speichers.
Virtuelle Anzeigen auf einer VM aktivieren Beschreibt, wie Sie virtuelle Bildschirme auf einer VM-Instanz aktivieren.
MIG in einer einzelnen Zone erstellen Informationen zum Erstellen einer verwalteten Instanzgruppe (MIG) in einer einzelnen Zone. Durch das Platzieren aller VMs Ihrer MIG in einer einzelnen Zone wird die Latenz minimiert. Dies ist für bestimmte Arbeitslasten nützlich, z. B. Batch-Arbeitslasten.
VM-Instanz mit einem benutzerdefinierten Hostnamen erstellen Hier erfahren Sie, wie Sie eine VM-Instanz mit einem benutzerdefinierten Hostnamen erstellen.
Anwendungsbasierte Systemdiagnose und automatische Reparatur einrichten Beschreibt, wie Sie eine anwendungsbasierte Systemdiagnose für die automatische Reparatur von VMs in einer MIG einrichten.
MIG erstellen, die VMs auf Abruf verwendet Beschreibt, wie Sie eine MIG erstellen, die VM-Instanzen auf Abruf verwendet. VMs auf Abruf sind nützlich, wenn Ihre Arbeitslast Unterbrechungen tolerieren kann und Sie von den Kosteneinsparungen profitieren möchten, die mit VMs auf Abruf verbunden sind.
VMs zu einer MIG hinzufügen und daraus entfernen Beschreibt, wie Sie VMs zu einer MIG hinzufügen und daraus entfernen.
MIG mit aktiviertem Autoscaling erstellen Beschreibt, wie Sie eine automatisch skalierte MIG erstellen, die VMs anhand der durchschnittlichen CPU-Auslastung in der Gruppe automatisch hinzufügt und entfernt.
MIG mit zustandsorientierten Laufwerken erstellen Beschreibt, wie Sie eine MIG erstellen, die VM-Instanzen auf Abruf verwendet. VMs auf Abruf sind nützlich, wenn Ihre Arbeitslast Unterbrechungen tolerieren kann und Sie von den Kosteneinsparungen profitieren möchten, die mit VMs auf Abruf verbunden sind.
SQL Server-VM-Instanzen erstellen Hier erfahren Sie, wie Sie Microsoft SQL Server-VM-Instanzen erstellen. Microsoft SQL Server ist ein Datenbanksystem, das auf Windows Server und einigen Linux-Distributionen ausgeführt wird. SQL Server auf Compute Engine eignet sich gut als Teil des Back-Ends für Ihre Anwendungen, als flexible Entwicklungs- und Testumgebung oder zusätzlich zu Ihren lokalen Systemen für die Datensicherung und Notfallwiederherstellung.
Zuweisung von Betriebssystemrichtlinien erstellen Hier erfahren Sie, wie Sie eine Zuweisung von Betriebssystemrichtlinien erstellen. Sie können Betriebssystemrichtlinien verwenden, um konsistente Softwarekonfigurationen über virtuelle Linux- und Windows-Maschineninstanzen hinweg zu erhalten.
Zustandsorientierte Metadaten in MIGs konfigurieren Hier erfahren Sie, wie Sie zustandsorientierte Metadaten in MIGs konfigurieren. Mit Instanz-Metadaten können Sie Attribute für Ihre Anwendungen festlegen und über den Metadatenserver mit diesen Anwendungen kommunizieren.
Zustandsorientierte nichtflüchtige Speicher in MIGs konfigurieren Hier erfahren Sie, wie Sie zustandsorientierte nichtflüchtige Speicher in MIGs konfigurieren. Wenn Sie nichtflüchtige Speicher zustandsorientiert konfigurieren, profitieren Sie von automatischen Reparaturen und automatischen Updates der VM-Instanzen, wobei der Status der Laufwerke beibehalten wird.
Zustandsorientierte IP-Adressen in MIGs konfigurieren Beschreibt, wie zustandsorientierte IP-Adressen in MIGs konfiguriert werden. Durch das Konfigurieren zustandsorientierter IP-Adressen in einer MIG sorgen Sie dafür, dass IP-Adressen beibehalten werden, wenn VM-Instanzen in der Gruppe automatisch repariert, aktualisiert und neu erstellt werden.
Zielverteilungsform für VMs in einer regionalen MIG festlegen Erläutert das Festlegen einer Zielverteilungsform für VMs.
MIG mit VMs in mehreren Zonen in einer Region erstellen Beschreibt, wie Sie eine MIG erstellen, deren VMs auf mehrere Zonen in einer Region verteilt sind. Durch das Verteilen der Anwendungslast auf mehrere Zonen wird Ihre Arbeitslast vor Zonenausfällen geschützt.
Proaktive Umverteilung von VMs in einer regionalen MIG deaktivieren und wieder aktivieren Hier erfahren Sie, wie Sie die proaktive Umverteilung von VMs in einer regionalen MIG deaktivieren und wieder aktivieren. Wenn Sie in einer regionalen MIG eine gleichmäßige Anzahl von VM-Instanzen in den ausgewählten Zonen in der Region beibehalten möchten, verwenden Sie die proaktive Umverteilung von Instanzen. Mit dieser Konfigurationsoption bleiben Anwendungen im Falle eines Ausfalls auf Zonenebene maximal verfügbar.

Terraform-Module und -Blueprints für Compute Engine

Mithilfe von Modulen und Blueprints können Sie die Bereitstellung und Verwaltung von Google Cloud-Ressourcen in großem Maßstab automatisieren. Ein Modul ist ein wiederverwendbarer Satz von Terraform-Konfigurationsdateien, der eine logische Abstraktion von Terraform-Ressourcen erstellt. Ein Blueprint ist ein Paket aus bereitstellbaren und wiederverwendbaren Modulen sowie eine Richtlinie, die eine bestimmte Lösung implementiert und dokumentiert.

In der folgenden Tabelle sind alle Module und Blueprints aufgeführt, die sich auf die Compute Engine beziehen:

Modul oder Entwurf Details
terraform-google-vm Sammlung spezieller Untermodule, die Sie als Bausteine zum Bereitstellen von VMs in Google Cloud verwenden können.
terraform-google-startup-scripts Stellt eine Bibliothek mit nützlichen Startskripts zum Einbetten in VMs bereit
terraform-google-container-vm Stellt Container auf Compute Engine-Instanzen bereit

Terraform-Ressourcen für Compute Engine

Ressourcen sind die grundlegenden Elemente der Terraform-Sprache. Jeder Ressourcenblock beschreibt ein oder mehrere Infrastrukturobjekte, z. B. virtuelle Netzwerke oder Compute-Instanzen.

In der folgenden Tabelle sind die Terraform-Ressourcen aufgeführt, die für Compute Engine verfügbar sind:

Terraform-Ressourcen Datenquellen

Nächste Schritte