Terraform hat im Moment die größte Verbreitung bei den IaC tools. Trotz der kleineren Probleme bei der Benutzung ist es immer noch flexibel genug, um beinahe alle Anforderungen, die man an ein IaC Tool haben kann, abzudecken.
init
, plan
, apply
und destroy
und kannst erklären was diese machenState
ist und kannst beschreiben wie dieser funktioniertState
? Kannst du dir eine Alternative Lösung vorstellen?State
importiert werden können
terraform plan
erstellt wird?terraform plan
ausgegeben wurde?Provider
istProvider
erstellen?Modul
istresource
in Terraform abhängig vom Wert einer bool
Variable erstellt werden?map
)?loops
, die nicht direkt etwas mit dem Erstellen von Ressourcen zu tun haben?Dynamic Blocks
variables
und locals
outputs
sind und für was man diese verwendetdata source
und für was kannst du diese einsetzen?replaced
) werden
Wie immer gilt: Du musst nicht alle Inhalte lesen/durcharbeiten. Entscheidend ist, dass du am Ende Terraform verwenden kannst und verstehst, wie es funktioniert. Dein Mentor hilft dir dabei, das zu überprüfen.
After checking out the basics, you might want to have a look at the blogpost series from Gruntwork, which gives you more in-practice insights.
Afterwards or during reading the blogposts you might want to look at these:
Am besten erstellst du dir ein Git Repository und jeweils einen Merge Request für jede Aufgabe. Verwende den Docker Provider Show archive.org snapshot für diese Aufgaben.
Erstelle ein Terraform Modul, das bei dir lokal
Nginx
Show archive.org snapshot
container startet. Das Modul soll eine input variable mit Namen containers
vom type number
haben. Abhängig vom konfigurierten Wert werden entsprechend viele Container gestartet.
Erstelle eine weitere input variable port_mapping
. Der Typ soll object
sein und die Konfiguration der Portmappings für die Container zu deinem Hostsystem ermöglichen. Verwende die Variable und prüfe, ob du über dein Portmapping mit den Nginx Containern kommunizieren kannst.
Entferne die variable port_mappings
und konfiguriere containers
als type map(object)
. Das Objekt soll die Konfiguration folgender Parameter erlauben:
Weise passende Variabeltypen zu. Anschließend erstellst du für jedes Objekt in dieser map
einen Container. Als Name wird der key
des elements in der map
verwendet.
Erstelle einen output
der eine map
enthält. Die map soll folgendermaßen aussehen:
<container_a_id> = {
ip = <ip_of_container_a>
}
<container_b_id> = {
ip = <ip_of_container_b>
}