Hallo und willkommen! Heute werden wir durchgehen, wie man einen Server (auch bekannt als droplet) auf Digital Ocean über Terraform erstellt. Dies ist eine der einfachsten Dinge, die mit Terraform erreicht werden können, aber es veranschaulicht das Verständnis grundlegender Konzepte wie Infrastructure as Code (IaC), Terraform selbst, Terraform-Module, Cloud-Server, grundlegende Netzwerk- und Sicherheitspraktiken.
Den Code aus diesem Tutorial finden Sie hier auf Github.
Ohne weitere Umschweife, lassen Sie uns gleich loslegen 🚀
Um überhaupt etwas mit Terraform machen zu können, müssen wir es zuerst auf unserem System installiert haben. Die Terraform-Dokumentation hat eine hervorragende Liste der verschiedenen Möglichkeiten, Terraform auf verschiedenen Systemen zu installieren. Werfen Sie einen Blick auf diesen Leitfaden hier.
Digital Ocean-Anmeldeinformationen erwerben
Um Terraform zu authentifizieren und zu autorisieren, unseren Server auf Digital Ocean zu erstellen, benötigen wir die entsprechenden Anmeldeinformationen. Terraform benötigt je nach verwendetem Terraform-Provider unterschiedliche Arten von Anmeldeinformationen. Um den Provider zu authentifizieren und zu autorisieren, der für die Anwendung unserer Konfigurationen verantwortlich ist, benötigen wir ein Digital Ocean API Token, das wir von dem untenstehenden Bildschirm erhalten.

Dies befindet sich unter der Webadresse https://cloud.digitalocean.com/account/api/tokens auf einem authentifizierten Digital Ocean-Konto.
Beim Erstellen Ihres API-Tokens auf Digital Ocean stellen Sie sicher, dass der Write-Bereich für Ihr Token aktiviert ist. Terraform kann ohne dies keine Ressourcen für Sie erstellen. Denken Sie auch daran, ein angemessenes Ablaufdatum festzulegen.

Den Digital Ocean Terraform-Provider einrichten
Jetzt, da wir unser API-Token zur Authentifizierung und Autorisierung von Terraform haben, können wir mit der Erstellung unserer Terraform-Konfiguration beginnen. Wir beginnen mit der Erstellung einer Datei namens providers.tf. In dieser Datei werden wir die erforderliche Konfiguration bereitstellen, um den Digital Ocean (digitalocean) Provider einzurichten.
Um mehr über Terraform-Provider zu erfahren, besuchen Sie https://developer.hashicorp.com/terraform/language/providers
Wir beginnen unsere Datei mit folgendem Inhalt:
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 2.0"
}
}
}Dies richtet den terraform block ein. Innerhalb dieses Blocks konfigurieren wir den digitalocean Provider als erforderlichen Provider.
Detaillierte Informationen über den digitalocean Provider finden Sie auf seiner Dokumentationsseite hier https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs
Als nächstes konfigurieren wir den Provider selbst, indem wir den folgenden Code zu unserer providers.tf-Datei hinzufügen:
# Configure the DigitalOcean Provider
provider "digitalocean" {
token = var.do_token
}Dieser Code konfiguriert den digitalocean Provider mit dem Zugriffstoken token. Dies ist dasselbe Token, das wir in Schritt 1 erworben haben.
Als bewährte Methode sollten Sie niemals Kontosecrets als Werte in Ihre Terraform-Konfigurationsdateien einfügen, da dies sie potenziell böswilligen Nutzern sichtbar macht. In unserem obigen Code haben wir unseren API-Schlüssel als Terraform-Variable var.do_token bereitgestellt.
Es gibt mehrere Möglichkeiten, den tatsächlichen Wert unseres API-Schlüssels an Terraform zu übergeben.
- Wir könnten eine Datei
terraform.tfvarserstellen und den Wert unserer Variablen wie folgt ausfüllen:
do_token=real_key_value- Wir könnten eine Umgebungsvariable auf unserem Host-Computer mit dem Namen
TF_VAR_do_tokenerstellen und ihren Wert auf den unseres Schlüssels setzen, wie folgt:
export TF_VAR_do_token=real_key_valueErsetzen Sie real_key_value in jedem Fall durch den entsprechenden Wert für unseren API-Schlüssel.
Mit beiden Methoden kann Terraform den Wert unserer Variablen finden, wenn es unsere Konfiguration ausführt.
Wenn Sie die Werte für Ihre Variablen über eine Datei terraform.tfvars bereitstellen, stellen Sie sicher, dass Sie diese NIEMALS in die Versionskontrolle einchecken. Verwenden Sie diese Datei immer nur lokal.
Wenn keine dieser Methoden verwendet wird, um den Wert an unsere Variable zu übergeben, wird Terraform bei jeder Ausführung unserer Konfiguration an der Eingabeaufforderung nach dem Wert für jede Variable fragen.
Terraform initialisieren
Nachdem wir unseren Provider konfiguriert haben, ist es Zeit, unsere Terraform-Konfiguration zu initialisieren.
Wir tun dies einfach, indem wir den folgenden Befehl in der Befehlszeile ausführen:
terraform initWährend der Initialisierung lädt Terraform die erforderlichen Provider-Dateien in unsere Konfiguration und initialisiert unser Backend.
Um dieses Tutorial einfach zu halten, verwenden wir das Standard-Backend von Terraform, Local. Um mehr über Terraform-Backends zu erfahren, besuchen Sie https://developer.hashicorp.com/terraform/language/settings/backends/configuration
Die Serverbereitstellungskonfiguration einrichten
Nachdem Terraform initialisiert wurde, ist es an der Zeit, tatsächlich die Konfiguration zu erstellen, die unseren Server (auch als droplet in der Digital Ocean-Sprache bezeichnet) bereitstellt.
Wir beginnen mit der Erstellung einer neuen Datei, server.tf. Unsere Konfiguration sieht wie folgt aus:
resource "digitalocean_vpc" "server_vpc" {
name = "server-vpc"
region = var.do_region
ip_range = "10.10.10.0/24"
}
resource "digitalocean_droplet" "server" {
name = "server"
size = "s-1vcpu-1gb"
image = "ubuntu-22-04-x64"
region = var.do_region
vpc_uuid = digitalocean_vpc.server_vpc.id
}Unser Code erstellt zwei Terraform-Ressourcenblöcke. Der erste, eine digitalocean_vpc-Ressource, erstellt das Virtual Private Network, in dem unser Server auf Digital Ocean leben wird.
- Das Attribut
namekonfiguriert den Namen unseres VPC-Netzwerks. - Das Attribut
regionkonfiguriert über die Variablevar.do_region, in welchem Teil der Welt wir unser VPC bereitstellen möchten. - Das Attribut
ip_rangekonfiguriert den bevorzugten IP-Adressbereich für unser Netzwerk. - Das Attribut
vpc_uuidweist unseren Server an, innerhalb des Netzwerksserver-vpc, das wir als ersten Schritt erstellt haben, platziert zu werden.
Der zweite Block erstellt eine Terraform digitalocean_droplet-Ressource und konfiguriert sie mit den Attributen Name, Größe, Bild und Region. Diese Attribute sind erforderlich, um unseren Server auf Digital Ocean zu erstellen.
Wie ihre Namen andeuten;
- Das Attribut
namekonfiguriert den Namen unseres Servers auf Digital Ocean. - Das Attribut
sizekonfiguriert die Kombination aus Prozessor (CPU) und Speicher (RAM) unseres Servers. - Das Attribut
imagekonfiguriert das spezifische Betriebssystem-Image, das wir für unseren Server wünschen. - Das Attribut
regionkonfiguriert den Standort in der Welt, an dem wir unseren Server bereitstellen möchten.
Wie Sie sich wahrscheinlich denken können, können diese Attribute viele andere Werte haben als die, die wir hier angegeben haben. Ein Besuch in der Digital Ocean-Dokumentation wird eine vollständigere Liste von Werten für die weitere Verwendung liefern.
Hier erstellen Sie die Variable var.do_region, die von unseren Ressourcenblöcken benötigt wird. Je nach der Methode, die Sie gewählt haben, um die Variablenwerte an Terraform zu übergeben, müssen Sie eine zweite erstellen.
Fügen Sie die folgende Zeile zu Ihrer terraform.tfvars-Datei hinzu, wenn Sie diesen Weg gewählt haben;
do_region=fra1Oder erstellen Sie eine zusätzliche Umgebungsvariable wie folgt;
export TF_VAR_do_region=fra1HINWEIS: fra1 bezieht sich auf das Digital Ocean-Rechenzentrum in Frankfurt. Besuchen Sie die Digital Ocean-Dokumentation, um mögliche alternative Rechenzentren zu finden.
Die Terraform-Konfiguration anwenden
Es ist Zeit, unsere Terraform-Konfiguration anzuwenden und unsere Ressourcen auf Digital Ocean zu erstellen. Um zu bestätigen, dass wir genau das tun, was wir beabsichtigen, werden wir zuerst den Befehl terraform plan ausführen.
Die Ausgabe dieses Befehls sollte ähnlich wie folgt aussehen;

Ein Blick unter die Ausgabe zeigt die Ausgabe 2 to add, 0 to change, 0 to destroy. Das bedeutet, dass alles in Ordnung ist, da wir zwei Ressourcen hinzufügen, keine ändern und keine zerstören werden.
Wenn unsere Ausgabe mit der oben abgebildeten übereinstimmt, können wir terraform apply ausführen, um unsere Konfiguration anzuwenden.
Ein Bestätigungsbildschirm sollte ähnlich dem untenstehenden angezeigt werden, auf den wir mit yes antworten sollten.

Bei Erfolg sollten wir eine Ausgabe ähnlich der folgenden von Terraform erhalten;

HURRAYY!! 🎉 🎉 Sie haben erfolgreich einen Server auf Digital Ocean über Terraform bereitgestellt.
Herzlichen Glückwunsch zur Erstellung Ihres Servers auf Digital Ocean durch Infrastructure as Code. Es ist wichtig, dass Sie daran denken, den Server zu zerstören, wenn er nicht mehr verwendet wird, um unerwartete Kosten für Ihre Zahlungsinformationen zu vermeiden.
Führen Sie den Befehl terraform destroy aus und bestätigen Sie mit yes, um Ihren Server zu zerstören, sobald Sie ihn nicht mehr benötigen.
Ich hoffe, Sie fanden diesen Beitrag hilfreich! Bis zum nächsten Mal!!
Mehr lesen
Self-Hosting-Projekt (DevOps-Infra from Scratch)
Ein umfassender Leitfaden zum Aufbau einer selbstgehosteten DevOps-Infrastruktur von Grund auf mit Terraform, Ansible und Docker.
Implementierung des Terraform-Kern-Workflows in Zusammenarbeit über Github Pull Requests, Actions, Bot, Environments & ein Remote-Backend.
Implementieren Sie einen kollaborativen Terraform-Workflow unter Verwendung von GitHub Actions, Pull Requests und einem Remote-Backend für Produktionsteams.
Auto-Deploy von Jenkins auf einem Remote-Server (mit kostenlosem SSL) über Ansible (HowTo)
Erfahren Sie, wie Sie einen selbst gehosteten Jenkins-Server mit kostenlosen, sich automatisch verlängernden SSL-Zertifikaten mithilfe von Ansible automatisch bereitstellen können.
