In dieser Anleitung erfahren Sie, wie Sie Terraform verwenden, um mit Terraform einen einfachen Webserver in Compute Engine zu erstellen.
In dieser Anleitung tun Sie Folgendes:
- Mit Terraform eine VM in Google Cloud erstellen.
- Starten Sie einen einfachen Python Flask-Server.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Vorbereitung
Bereiten Sie sich auf die Anleitung vor.
Projekt auswählen oder erstellen
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Berechtigungen einrichten
Prüfen Sie, ob Sie die erforderlichen Compute Engine-Berechtigungen für Ihr Nutzerkonto haben:
compute.instances.*
compute.firewalls.*
Weitere Informationen zu Rollen und Berechtigungen
API aktivieren
Enable the Compute Engine API.
Cloud Shell starten
Cloud Shell ist eine virtuelle Compute Engine-Maschine.
Die Dienstanmeldedaten, die dieser virtuellen Maschine zugeordnet sind, erfolgen automatisch. Daher müssen Sie keinen Dienstkontoschlüssel einrichten oder herunterladen.
Terraform ist in Cloud Shell integriert und Cloud Shell authentifiziert Terraform automatisch, sodass Sie mit weniger Einrichtungsaufwand beginnen können.
Compute Engine-VM erstellen
Zuerst definieren Sie die Einstellungen der VM in einer Terraform-Konfigurationsdatei. Anschließend führen Sie Terraform-Befehle aus, um die VM in Ihrem Projekt zu erstellen.
Verzeichnis erstellen
Erstellen Sie in Cloud Shell ein neues Verzeichnis. Erstellen Sie in Ihrem neuen Verzeichnis eine main.tf
-Datei für die Terraform-Konfiguration. Der Inhalt dieser Datei beschreibt alle Google Cloud-Ressourcen, die im Projekt erstellt werden sollen.
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
Virtual Private Cloud-Netzwerk und Subnetz erstellen
In diesem Abschnitt erstellen Sie ein VPC-Netzwerk (Virtual Private Cloud) und ein Subnetz für die Netzwerkschnittstelle der VM.
Fügen Sie der Datei main.tf
die folgende Terraform-Ressource hinzu:
Compute Engine-VM-Ressource erstellen
In diesem Abschnitt erstellen Sie eine einzelne Compute Engine-Instanz, auf der Debian ausgeführt wird. In dieser Anleitung verwenden Sie den kleinsten Maschinentyp, der verfügbar ist. Später können Sie ein Upgrade auf einen größeren Maschinentyp durchführen.
Fügen Sie der Datei main.tf
die folgende Terraform-Ressource google_compute_instance
hinzu.
Der Beispielcode legt die Google Cloud-Zone auf us-west1-a
fest. Sie können dies in eine andere Zone ändern.
Terraform initialisieren
An diesem Punkt können Sie terraform init
ausführen, um die erforderlichen Plug-ins hinzuzufügen und das Verzeichnis .terraform
zu erstellen.
terraform init
Ausgabe:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
Terraform-Konfiguration validieren
Optional können Sie den bisher erstellten Terraform-Code validieren. Führen Sie terraform plan
aus, wodurch Folgendes ausgeführt wird:
- Überprüft, ob die Syntax von
main.tf
korrekt ist - Zeigt eine Vorschau der Ressourcen an, die erstellt werden
terraform plan
Ausgabe:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
Wenden Sie die Konfiguration an
Führen Sie zum Erstellen der VM terraform apply
aus.
terraform apply
Geben Sie bei Aufforderung yes
ein.
Terraform ruft Google Cloud APIs auf, um die neue VM einzurichten. Die neue VM finden Sie auf der Seite "VM-Instanzen".
Webserver in Google Cloud ausführen
Als Nächstes erstellen Sie eine Webanwendung, stellen diese auf der VM bereit und erstellen eine Firewallregel, um Clientanfragen an die Webanwendung zuzulassen.
Benutzerdefinierte Firewallregel für SSH hinzufügen
Mit der Firewallregel default-allow-ssh
im Netzwerk default
können Sie eine SSH-Verbindung zur VM herstellen. Wenn Sie Ihre eigene benutzerdefinierte Firewallregel verwenden möchten, können Sie die folgende Ressource am Ende der Datei main.tf
hinzufügen:
Führen Sie terraform apply
aus, um die Firewallregel zu erstellen.
SSH-Verbindung zur VM herstellen
Prüfen Sie, ob alles korrekt eingerichtet ist. Stellen Sie dazu eine SSH-Verbindung zur VM her.
Gehen Sie auf die Seite VM-Instanzen.
Suchen Sie die VM mit dem Namen
flask-vm
.Klicken Sie in der Spalte Verbinden auf SSH.
Für die ausgeführte VM wird ein "SSH im Browser"-Terminalfenster geöffnet.
Weitere Informationen finden Sie unter Verbindung zu VMs herstellen.
Flask-Anwendung erstellen
Sie erstellen für diese Anleitung eine Python Flask-Anwendung, sodass Sie eine einzelne Datei haben, die Ihren Webserver und die Testendpunkte beschreibt.
Erstellen Sie im "SSH im Browser"-Terminal eine Datei mit dem Namen
app.py
.nano app.py
Fügen Sie der Datei
app.py
folgendes hinzu:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')
Führen Sie
app.py
aus.python3 app.py
Flask stellt Traffic standardmäßig auf
localhost:5000
bereit.Öffnen Sie eine zweite SSH-Verbindung:
- Gehen Sie auf die Seite VM-Instanzen.
- Suchen Sie die VM mit dem Namen
flask-vm
und klicken Sie auf SSH.
Führen Sie in der zweiten SSH-Verbindung
curl
aus, um zu bestätigen, dass die Begrüßung, die Sie inapp.py
konfiguriert haben, zurückgegeben wird.curl http://0.0.0.0:5000
Die Ausgabe dieses Befehls lautet
Hello Cloud
.
Port 5000 auf der VM öffnen
Um von Ihrem lokalen Computer eine Verbindung zum Webserver herzustellen, muss die VM Port 5000 öffnen. Mit Google Cloud können Sie Ports mit Firewallregeln in Traffic öffnen.
Fügen Sie die folgende Terraform-Ressource google_compute_firewall
am Ende der Datei main.tf
hinzu:
Führen Sie in Cloud Shell terraform apply
aus, um die Firewallregel zu erstellen.
Ausgabevariable für die Webserver-URL hinzufügen
Fügen Sie am Ende von
main.tf
eine Terraform-Ausgabevariable hinzu, um die Webserver-URL auszugeben:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }
Führen Sie
terraform apply
aus.terraform apply
Geben Sie bei Aufforderung
yes
ein. Terraform gibt die externe IP-Adresse und den Port 5000 der VM so auf dem Bildschirm aus:Web-server-URL = "http://IP_ADDRESS:5000"
Sie können jederzeit
terraform output
ausführen, um diese Ausgabe zurückzugeben:terraform output
Klicken Sie auf die URL aus dem vorherigen Schritt und Ihnen wird die Nachricht "Hello Cloud!" angezeigt.
Dies bedeutet, dass der Server ausgeführt wird.
Fehlerbehebung
Wenn eine erforderliche API nicht aktiviert ist, gibt Terraform einen Fehler zurück. Die Fehlermeldung enthält einen Link zum Aktivieren der API. Nachdem Sie die API aktiviert haben, können Sie
terraform apply
noch einmal ausführen.Wenn Sie keine Verbindung zu Ihrer VM über SSH herstellen können, gehen Sie so vor:
- Achten Sie darauf, die SSH-Firewallregel hinzuzufügen.
- Achten Sie darauf, dass die VM das Argument
tags = ["ssh"]
enthält.
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie alle erstellten Elemente löschen, sodass keine weiteren Kosten anfallen.
Mit Terraform können Sie alle in der Konfigurationsdatei definierten Ressourcen mit dem Befehl terraform destroy
entfernen:
terraform destroy
Geben Sie yes
ein, damit Terraform Ihre Ressourcen löschen kann.