Blog von Obi Madu
Zurück zu allen Artikeln
InfrastructureDevOpsProjects

Einen Server auf Digital Ocean über Terraform bereitstellen (HowTo)

Eine Schritt-für-Schritt-Anleitung zur Bereitstellung eines DigitalOcean-Droplets mit Terraform und grundlegenden Infrastructure as Code-Praktiken.

Einen Server auf Digital Ocean über Terraform bereitstellen (HowTo)

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.

Obtain a Digital Ocean API Token

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.

create new DO API Token

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.tfvars erstellen 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_token erstellen und ihren Wert auf den unseres Schlüssels setzen, wie folgt:
export TF_VAR_do_token=real_key_value

Ersetzen 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 init

Wä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 name konfiguriert den Namen unseres VPC-Netzwerks.
  • Das Attribut region konfiguriert über die Variable var.do_region, in welchem Teil der Welt wir unser VPC bereitstellen möchten.
  • Das Attribut ip_range konfiguriert den bevorzugten IP-Adressbereich für unser Netzwerk.
  • Das Attribut vpc_uuid weist unseren Server an, innerhalb des Netzwerks server-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 name konfiguriert den Namen unseres Servers auf Digital Ocean.
  • Das Attribut size konfiguriert die Kombination aus Prozessor (CPU) und Speicher (RAM) unseres Servers.
  • Das Attribut image konfiguriert das spezifische Betriebssystem-Image, das wir für unseren Server wünschen.
  • Das Attribut region konfiguriert 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=fra1

Oder erstellen Sie eine zusätzliche Umgebungsvariable wie folgt;

export TF_VAR_do_region=fra1

HINWEIS: 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;

Output of Terraform Plan Operation

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.

Confirm Terraform Apply

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

Terraform Apply Success

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!!