Terraform auf dem Mac einrichten und mit gridscale verwenden

In diesem Tutorial werde ich dich begleiten und dir zeigen, wie du Terraform auf dem Mac Rechner installieren kannst und mit Hilfe von Terraform ganz einfach sowohl neue Server, als auch Storages im gridscale Panel erstellen kannst.

Mit Terraform kannst du deine Infrastruktur als Code darstellen. Dies ermöglicht Prozesse zu automatisieren und zu beschleunigen, wodurch weniger Fehler entstehen können als bei einer manuellen Einrichtung. Die Infrastruktur des Servers ist darüber leichter zu skalieren und mehrfach verwendbar. Weiterhin ist es möglich, den Zustand der Infrastruktur zu sichern und auch die Konfigurationsdateien als Dokumentation anzubieten. Ein weiterer Vorteil besteht darin, dass Terraform plattformunabhängig einsetzbar ist. Zudem gibt die Anwendung vor jeder Ausführung an, welche Änderungen es vornehmen wird. Dies ermöglicht dem Nutzer die Ausführung falscher Konfigurationen zu unterbinden.

Vorbereitung

Download und Installation von Terraform

Da dieses Tutorial auf gridscale basiert, benötigst du einen Account. Solltest du noch keinen besitzen, empfehle ich dir, dich als erstes unter folgendem Link zu registrieren.

Folgend die Installations-Anleitung für Terraform, welche unaufwändig über den “Paket-Manager” Homebrew gelingt. Solltest du dies noch nicht auf deinem Rechner installiert haben, ist dies der erste Schritt.
Hierfür öffnest du auf deinem Rechner das Mac Terminal und führst dort folgenden Befehl aus:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nun kannst du mit Hilfe von Homebrew Terraform unkompliziert installieren. Dafür gibst du ganz einfach diesen Befehl ein:

$ brew install terraform

Die Installation kann ein bisschen dauern. Ob die Installation erfolgreich war, kannst du mit

$ terraform version 

überprüfen. Bei erfolgreicher Durchführung wird die aktuelle Version zurückgegeben. Schließe dafür am besten das aktuelle Terminal und führe dies in einem neuen Terminal aus, damit Terraform im PATH verfügbar ist.

Es ist auch möglich Terraform über die Webseite von HashiCorp zu installieren. Zu deren Downloadseite gelangst du über diesen Link. Hier lädst du dir das Paket für den MacOS runter.

Anmerkung: Du solltest nach dem Download mit Hilfe der Checksumme überprüfen, ob das Paket korrekt geladen wurde. Wie dies möglich ist wird auf der Downloadseite von HashiCorp selbst erklärt.

gridscale Terraform provider

Als nächstes zeige ich dir, wie du das notwendige Binärprogramm für die Verwendung mit gridscale erhalten kannst und wie du an Beispiele gelangst, die dir einen ersten Einblick in die Verwendung mit gridscale als Provider verschaffen. Außerdem zeige ich dir in diesem Schritt, in welchem Pfad sich das Binärprogramm befinden muss, damit es korrekt funktioniert.

Du erstellst den gewünschten Ordner mit folgenden Befehl:

$ mkdir -p ~/.terraform.d/plugins/darwin_amd64/ 

Wechsel nun in das Verzeichnis ~/.terraform.d/plugins/darwin_amd64/ mit folgender Anweisung im Terminal:

$ cd ~/.terraform.d/plugins/darwin_amd64/ 

Hiermit lädst du nun das Binärprogramm über die URL herunter.

Hier kannst du die aktuellste Version herunterladen.

Solltest du die Datei in einem anderen Verzeichnis heruntergeladen haben, ist das kein Problem. Dann wechselst du über das Terminal in dieses Verzeichnis, wo sich das heruntergeladene Binärprogramm befindet und bewegst es in das richtige Verzeichnis mit:

$ mv _downloaded_file_ ~/.terraform.d/plugins/darwin_amd64/terraform_provider_gridscale 

Du wirst höchstwahrscheinlich feststellen, dass du noch nicht die notwendigen Rechte haben wirst, das Binärprogramm nutzen zu können. Dies änderst du mit dem Befehl:

$ chmod 755 ~/.terraform.d/plugins/darwin_amd64/terraform-provider-gridscale 

Jetzt wechselst du in das Verzeichnis ~/.terraform.d und führst folgenden git Befehl aus, um die Beispiele direkt in dieses Verzeichnis zu klonen:

$ git clone git@github.com:gridscale/terraform_examples.git 

Hiermit ist die Vorbereitung abgeschlossen.

Bist du bereit zu starten?

Oder hast du noch Fragen? Lasse dir jetzt dein Konto erstellen oder dich in einem persönlichen Gespräch beraten.

Anwendungsbeispiel

Nun werde ich dir an einem Beispiel zeigen, wie du mit Hilfe von Terraform Server, Storage und Netzwerk auf einmal erstellen kannst. Die anderen Beispiele funktionieren nach demselben Prinzip, sind aber Anwendungsbeispiele um die entsprechenden Ressourcen einzeln zu erstellen. Mit diesen kannst du im Anschluss weiter arbeiten.

Zuerst navigierst du über das Terminal zu folgendem Verzeichnis:

$ cd ~/.terraform.d/terraform-examples/single-server/complete 

In diesem Verzeichnis führst du als erstes diesen Befehl aus:

$ terraform init 

Im Anschluss nun diesen Befehl:

$ terraform apply 

Darauffolgend wirst du nach deinem API-Token und deiner UUID gefragt:

Über folgenden Link navigierst du zum Menüpunkt “API-Keys” innerhalb des gridscale Panels und erzeugst deinen API-Token über den Button “API-Token erzeugen”. Hier findest du auch an derselben Stelle deine UUID. Beides gibst du nun im Terminal ein und bestätigst deine Eingaben mit „yes“ am Ende. Nun müsste dir ein Text ausgegeben werden mit den entsprechenden Konfigurationen und Server, Storage und Netzwerk sollten jetzt in deinem Panel existieren.

Damit du nicht jedes Mal deine UUID und deinen API Token eingeben musst, gibt es zwei Möglichkeiten (Verwendung von Umgebungsvariablen oder Konfigurationsdatei) diese Informationen einmal im Rechner zu hinterlegen, um diesen Prozess zu automatisieren.

Möglichkeit: Konfigurationsdatei

Du erstellst in dem Ordner- in dem sich deine auszuführende Datei befindet, eine weitere Datei mit der Endung .tf (bspw. provider.tf). In diese Datei kopierst du folgende Codezeilen und ersetzt die Texte innerhalb der Anführungszeichen mit deiner UUID und deinem API-Token:

Provider „gridscale“ { 
    uuid = „deine uuid“ 
    token = „dein Token“ 
} 

Anschließend musst du in der Datei server.tf die oberste Zeile mit provider „gridscale“ {} entfernen, da sonst ein Konflikt mit der zuvor erstellten Datei zustande kommt, in der unser Provider schon angegeben ist.

Nun kannst du erneut über das Terminal zu diesem Verzeichnis navigieren und die beiden Befehle terraform init und terraform apply ausführen und wirst feststellen, dass du nur noch die Ausführung mit einem „yes“ bestätigen musst.

Es ist aber auch möglich, die Informationen direkt in dem server.tf file zu ergänzen, anstatt eine neue Datei zu erstellen. Hierbei behältst du die oberste Zeile und ergänzt die Zeilen mit der uuid und dem token innerhalb der geschweiften Klammern.

Möglichkeit: Umgebungsvariablen

Bei dieser Methode musst du keine extra Datei anlegen mit den oben gezeigten Codezeilen. Somit ist es auch nicht mehr notwendig die oberste Zeile in der server.tf Datei zu entfernen. Du musst hierfür das Terminal öffnen und folgenden Befehle eingeben:

$ export GRIDSCALE_UUID=deine uuid $ export GRIDSCALE_TOKEN=dein token 

Wenn du nun env im Terminal ausführst, sollten dir deine Umgebungsvariablen angezeigt werden, ebenso wie deine gerade erstellen Variablen.

Entfernen kannst du deine Variablen wieder, indem du statt export den Befehl unset verwendest.

$ unset GRIDSCALE_UUID $ unset GRIDSCALE_TOKEN 

Bei dieser Variante solltest du aber bedenken, dass die hinzugefügten Umgebungsvariablen nach dem Schließen des Terminals nicht mehr erhalten bleiben und du dies nach einem Neustart des Terminals wiederholt durchführen musst.

Sollte man die erstellte Infrastruktur nicht mehr benötigen, kann man diese auch wieder entfernen, mit:

$ terraform destroy

Du solltest nun in der Lage sein, eigenständig mit anderen Beispielen vertraut zu werden und eigene Konfigurationsdateien zu erstellen. Ich wünsche dir viel Spaß bei der weiteren Verwendung mit Terraform und gridscale!