28 Fragen und Antworten zu Terraform-Interviews in Echtzeit

Inhaltsverzeichnis

Hier finden Sie 28 Fragen und Antworten, die häufig in Terraform-Interviews gestellt werden, zusammen mit einer Liste und Erläuterung wichtiger Befehle, die im Gespräch relevant sind.

Die zunehmende Verbreitung von Cloud-Technologien hat zu zahlreichen Möglichkeiten im Bereich DevOps geführt. Es ist absehbar, dass Cloud-Technologien ein häufiges Thema in Vorstellungsgesprächen sein werden. Grundkenntnisse in Cloud- und Infrastructure-as-Code (IaC)-Tools sind daher für DevOps-Rollen unerlässlich.

Was ist Terraform?

Terraform ist ein weitverbreitetes IaC-Werkzeug, das von Cloud-Ingenieuren genutzt wird. Es ermöglicht die Definition von Cloud- und On-Premise-Ressourcen in menschenlesbaren Konfigurationsdateien und die anschließende Bereitstellung dieser Ressourcen über Programmierung. Ein besonderes Merkmal von Terraform ist seine Fähigkeit, nicht nur an einen einzelnen Cloud-Anbieter gebunden zu sein, im Gegensatz zu vielen anderen IaC-Tools. Terraform ermöglicht es Ihnen, Ihre Anwendungen auf verschiedenen Cloud-Plattformen gleichzeitig zu betreiben.

Hier ist eine kurze Liste der Technologien, die Terraform unterstützt, falls Sie sich fragen:

Um Ihre Karriere als DevOps-Ingenieur, Cloud-Architekt, Entwickler oder Administrator voranzutreiben, sollten Sie sich mit Terraform-Interviewfragen auseinandersetzen. Wir haben eine Liste der wichtigsten Fragen zusammengestellt, die Ihnen helfen sollen, Ihr Wissen über Terraform zu vertiefen.

Allgemeine Fragen und Antworten zu Terraform-Interviews

#1. Was verstehen Sie unter Terraform?

Terraform ist ein Open-Source IaC-Tool, das von HashiCorp entwickelt wurde. Es wird verwendet, um Ihre Infrastruktur über verschiedene Cloud-Plattformen hinweg zu erstellen, zu aktualisieren, zu löschen und zu versionieren.

#2. Welche Gründe sprechen für die Wahl von Terraform für DevOps?

Der Einsatz von Terraform für die Infrastrukturbereitstellung minimiert das Risiko menschlicher Fehler und verbessert somit die Qualität, Konsistenz und Effizienz sowohl der Cloud- als auch der On-Premise-Infrastruktur. Terraform verwendet die HashiCorp Configuration Language (HCL), die JSON ähnelt und leicht zu erlernen und zu verwenden ist. Im Gegensatz zu anderen IaC-Tools, die von Cloud-Anbietern wie CloudFormation für AWS bereitgestellt werden, kann Terraform mit mehreren Cloud-Plattformen gleichzeitig verwendet werden. Dies reduziert den Bedarf, mehrere IaC-Tools zu lernen, und fördert die Zusammenarbeit.

#3. Wie funktioniert Terraform?

Terraform nutzt Plugins, sogenannte Terraform-Provider, um mit APIs von Cloud-Plattformen zu interagieren und unsere Ressourcen bereitzustellen. Als Endnutzer umfasst der Terraform-Workflow drei Phasen:

Schreiben: Die Infrastruktur wird als Code verfasst.

Planen: Eine Vorschau der geplanten Änderungen wird erstellt, bevor sie angewendet werden.

Anwenden: Die Infrastruktur wird bereitgestellt und die Änderungen werden umgesetzt.

#4. Was verstehen Sie unter der Terraform Cloud?

Die Terraform Cloud ist eine Remote-Umgebung, die für den Terraform-Workflow optimiert ist. Sie bietet Funktionen wie Arbeitsbereiche und Statussperren, die die Zusammenarbeit in großen Teams erleichtern.

#5. Was bedeutet „State“ in Terraform?

Als IaC-Tool benötigt Terraform Informationen über den aktuellen Status der von ihm verwalteten Konfigurationen und Infrastrukturen. Diese Daten speichert Terraform in einer Datei, die als Zustandsdatei bezeichnet wird.

#6. Welchen Vorteil bietet der Terraform State?

Der Terraform State ermöglicht es Terraform, reale Ressourcen mit Ihrer Konfiguration zu verknüpfen, Metadaten zu verfolgen und die Leistung bei der Planung von Änderungen an komplexen Infrastrukturen zu optimieren. Er ist eine zentrale Komponente von Terraform.

#7. Was ist ein Terraform Backend?

Das Terraform Backend ist die Plattform, auf der die Terraform State Snapshots gespeichert werden. Standardmäßig verwendet Terraform ein Backend namens „local“, um den Status als lokale Datei auf Ihrer Festplatte zu speichern. Alle anderen unterstützten Backends sind eine Art von Remote-Speicherdienst.

#8. Was ist ein Provider in Terraform?

Provider in Terraform sind Plugins, die es Terraform ermöglichen, mit Cloud-Anbietern, SaaS-Anbietern und anderen APIs zu interagieren. Wenn wir beispielsweise Terraform zur Bereitstellung von Infrastruktur in AWS verwenden möchten, müssen wir einen AWS-Provider in unseren Konfigurationsdateien deklarieren.

#9. Wer pflegt Terraform-Provider?

Provider werden unabhängig von Terraform selbst vertrieben. Als Terraform-Nutzer kann jeder eigene Provider entwickeln. Einige Standardprovider werden von HashiCorp offiziell betreut.

#10. Was ist Sentinel?

Sentinel ist ein Policy-as-Code-Tool, mit dem sich Standardkonfigurationen für von Terraform bereitgestellte Ressourcen durchsetzen lassen. Es kann von Unternehmen für Compliance- und Governance-Zwecke eingesetzt werden.

#11. Was sind Module in Terraform?

Ein Terraform-Modul ist ein Container für mehrere Ressourcen, die zusammen verwendet werden, um Ressourcen bereitzustellen und zu konfigurieren. Sie können zum Beispiel ein „VPC-Modul“ erstellen, das eine Standard-VPC und andere Ressourcen wie Subnetze und Internet-Gateways bereitstellt. Module können öffentlich über die öffentliche Modulregistrierung und privat über die private Modulregistrierung geteilt werden.

#12. Welchen Vorteil bietet der Einsatz von Modulen in Terraform?

Terraform-Module ermöglichen es, eine logische Abstraktion für eine Gruppe von Ressourcen zu schaffen. Durch die Verwendung von Modulen können wir eine Standardkonfiguration für Ressourcen pflegen und wiederverwenden. Module können versioniert und mit Teammitgliedern geteilt werden, um Ressourcen standardmäßig bereitzustellen.

#13. Was ist die Private Module Registry?

Die Private Module Registry, eine Funktion der Terraform Cloud, ermöglicht es, Terraform-Module organisationsweit zu teilen.

Fortgeschrittene Fragen und Antworten zu Terraform-Interviews

#14. Wie können wir Daten von einem Modul in ein anderes exportieren?

Daten können aus einem Modul exportiert werden, indem Ausgabeblöcke in den Modulkonfigurationsdateien definiert werden. Diese Daten können dann als Parameter an das Zielmodul übergeben werden.

#13. Wie können Sie Abhängigkeiten in Terraform definieren?

Terraform verfügt über ein integriertes Abhängigkeitsmanagement. Es gibt zwei Arten von Abhängigkeiten zwischen Ressourcen: implizite und explizite Abhängigkeiten.

Implizite Abhängigkeiten werden, wie der Name schon sagt, automatisch von Terraform erkannt. Dies ist der Fall, wenn der Output einer Ressource A in Ressource B verwendet wird. Terraform erkennt automatisch, dass Ressource B erst nach Ressource A erstellt werden muss.

Explizite Abhängigkeiten können in Fällen angegeben werden, in denen zwei Ressourcen intern voneinander abhängig sind, ohne Ausgaben gemeinsam zu nutzen. Dies kann mit dem Parameter „depends_on“ im Konfigurationsblock erfolgen.

#14. Was sind Provisioner in Terraform?

Provisioner sind Terraform-Ressourcen, die zum Ausführen von Skripten im Rahmen der Ressourcenerstellung oder -löschung verwendet werden. Es gibt zwei Arten von Provisionern in Terraform:

  • local-exec: Führt ein Skript auf dem Computer aus, auf dem Terraform läuft.
  • remote-exec: Führt ein Skript auf einer Remote-Ressource aus, nachdem diese erstellt wurde.

Provisioner sollten in Terraform nur als letztes Mittel eingesetzt werden.

#15. Was ist der externe Datenblock in Terraform?

Ähnlich wie der `local-exec` Provisioner kann der externe Datenblock zum Ausführen von Skripten auf dem Computer, auf dem Terraform ausgeführt wird, verwendet werden. Der Unterschied zwischen einem Provisioner und dem externen Datenblock liegt darin, dass die Skripte im externen Datenblock Daten im JSON-Format zurückgeben können, während Provisioner keine Ausgaben liefern. Es ist wichtig zu beachten, dass externe Datenblöcke auch als letztes Mittel dienen und nicht verwendet werden sollten, wenn es eine bessere Alternative gibt.

#16. Wie können zwei Personen, die die Terraform Cloud verwenden, zwei verschiedene Infrastruktursätze mit dem gleichen Arbeitsverzeichnis erstellen?

Durch die Verwendung unterschiedlicher Arbeitsbereiche. Diese Benutzer können Terraform-Ausführungen in zwei separaten Arbeitsbereichen starten. Jeder Arbeitsbereich hat eine eigene Zustandsdatei. Solange es keine Überschneidungen zwischen den Ressourcen gibt, können beide Benutzer erfolgreich zwei verschiedene Infrastruktursätze mit demselben Code bereitstellen.

#17. Was passiert, wenn mehrere Ingenieure gleichzeitig mit der Bereitstellung von Infrastruktur unter Verwendung derselben Zustandsdatei beginnen?

Terraform verfügt über eine Funktion namens „State Locking“. Diese Funktion stellt sicher, dass während einer Ausführung keine Änderungen an der Zustandsdatei vorgenommen werden, und verhindert so, dass die Zustandsdatei beschädigt wird. Es ist wichtig zu beachten, dass nicht alle Terraform-Backends die Funktion zum Sperren des Status unterstützen. Sie sollten das richtige Backend wählen, wenn diese Funktion erforderlich ist.

#18. Was ist eine Null-Ressource in Terraform?

Eine Terraform-Null-Ressource ist eine Konfiguration, die wie ein regulärer Terraform-Ressourcenblock funktioniert, aber keine Ressourcen erstellt. Dies mag seltsam und unnütz erscheinen, kann aber in verschiedenen Situationen hilfreich sein, um Einschränkungen in Terraform zu umgehen.

#19. Wie können Sie denselben Provider in Terraform mit unterschiedlichen Konfigurationen verwenden?

Durch die Verwendung des `alias`-Arguments im Provider-Block.

#20. Sie haben eine Terraform-Konfigurationsdatei ohne Ressourcen. Was passiert, wenn Sie den Befehl `terraform apply` ausführen?

Terraform wird alle Ressourcen zerstören. Ein Leerlauf mit dem Befehl `terraform apply` ist das gleiche wie das Ausführen von `terraform destroy`.

#21. Was passiert, wenn eine Ressource in Terraform erfolgreich erstellt wurde, aber während der Bereitstellung ein Fehler auftritt?

Dies ist ein unwahrscheinliches Szenario, aber wenn es doch passiert, wird die Ressource als beschädigt markiert und kann durch einen erneuten Lauf von Terraform neu erstellt werden.

#22. Welcher Wert der `TF_LOG`-Variablen liefert die ausführlichste Protokollierung?

`TRACE` ist die ausführlichste Einstellung und der Standardwert für die Variable `TF_LOG`.

#23. Wie können Sie bestehende Ressourcen unter Terraform-Management importieren?

Durch den Befehl `terraform import`.

#24. Welcher Befehl kann verwendet werden, um eine Vorschau des Terraform-Ausführungsplans zu sehen?

Der Befehl `terraform plan` generiert den Ausführungsplan für Änderungen, die Terraform an der Infrastruktur vornehmen wird.

#25. Welcher Befehl kann verwendet werden, um den Terraform State mit der tatsächlichen realen Infrastruktur zu synchronisieren?

Der Befehl `terraform apply -refresh-only` wird verwendet, um den Terraform State mit der tatsächlichen Infrastruktur abzugleichen. Dies ist die neue Alternative zum veralteten Befehl `terraform refresh`.

#26. Welcher Befehl wird verwendet, um beim Einsatz von Terraform Cloud zwischen Arbeitsbereichen zu wechseln?

Der Befehl `terraform workspace select ` wird verwendet, um einen anderen Arbeitsbereich auszuwählen.

#27. Welcher Befehl wird verwendet, um die Syntaxvalidierung für Terraform-Konfigurationsdateien durchzuführen?

Der Befehl `terraform validate` dient dazu, zu prüfen, ob eine Konfiguration syntaktisch gültig und intern konsistent ist.

#28. Welcher Befehl wird verwendet, um neue Arbeitsbereiche in der Terraform Cloud zu erstellen?

Der Befehl `terraform workspace new ` wird verwendet, um einen neuen Arbeitsbereich zu erstellen.

Einige andere wichtige Terraform-Befehle für technische Interviews

  • `terraform init`: Initialisiert Remote-Backends und lädt Provider und Remote-Module herunter, die in Ihrer Konfiguration definiert sind.
  • `terraform init -upgrade`: Wird verwendet, um die vorhandenen heruntergeladenen Provider zu aktualisieren.
  • `terraform plan`: Generiert den Ausführungsplan für die Erstellung oder Aktualisierung der Infrastruktur.
  • `terraform apply`: Erstellt oder aktualisiert die Infrastruktur nach Anforderung einer Bestätigung durch den Benutzer.
  • `terraform apply -auto-approve`: Erstellt oder aktualisiert die Infrastruktur; die Phase der Benutzergenehmigung wird übersprungen.
  • `terraform destroy`: Löscht die Infrastruktur nach Anforderung einer Bestätigung durch den Benutzer.
  • `terraform destroy -auto-approve`: Löscht die Infrastruktur; die Phase der Benutzergenehmigung wird übersprungen.
  • `terraform fmt`: Durchsucht das aktuelle Verzeichnis nach Konfigurationsdateien und formatiert diese gemäß dem kanonischen HCP-Stil.
  • `terraform fmt -recursive`: Durchsucht das aktuelle Verzeichnis sowie dessen Unterverzeichnisse nach Konfigurationsdateien und formatiert diese gemäß dem kanonischen HCP-Stil.
  • `terraform show`: Liefert eine für Menschen lesbare Ausgabe einer Status- oder Plandatei.

Ich hoffe, diese Informationen helfen Ihnen, einen Job im Bereich Terraform zu finden.