Cloudformation / Serverless vs Terraform in AWS

Aug 25 2020

Ich möchte die Notwendigkeit von Werkzeugen wie Terraform verstehen. Wenn wir eine Cloudformation-Vorlage zur Verfügung haben und alle AWS-Services damit erstellen / aktualisieren können, was bringt es, einen Service wie Terraform zu verwenden? Bitte vorschlagen.

Antworten

Marcin Aug 25 2020 at 15:56

CloudFormation (CFN) und Terraform (CF) sind beide Entwicklungstools für Infrastruktur als Code (IaC).

Allerdings CFN ist nur für AWS . Sie können es nicht mit Azure, GCP oder anderen Elementen außerhalb des AWS-Ökosystems verwenden. Im Gegensatz dazu ist TF wolkenunabhängig . Sie können es nicht nur für mehrere Cloud-Anbieter verwenden, sondern auch für die Arbeit mit Nicht-Cloud-Produkten wie Docker, verschiedenen Datenbanken und sogar Domino-Pizza, wenn Sie möchten.

Der Hauptvorteil von TF besteht also darin, dass Sie es , sobald Sie es nur einmal gelernt haben , auf eine Reihe von Cloud-Anbietern anwenden können. CFN ist nur in AWS nützlich. Wenn Sie CFN nicht mehr verwenden, müssen Sie etwas Neues lernen, um mit anderen Clouds arbeiten zu können.

Es gibt auch Unterschiede in der Funktionsweise von TF und CFN. Beide haben ihre Stärken und Wochenenden . Beispielsweise:

  • Bei der Bereitstellung mit CFN können alle Ressourcen zusammen mit dem Quellcode der Vorlage an einem zentralen Ort in AWS angezeigt werden. Während es bei TF keinen solchen Ort gibt. Wenn Sie sich bei der AWS-Konsole anmelden, wissen Sie nicht, was von TF erstellt wurde, welcher Quellcode verwendet wurde usw.

  • TF hat Schleifen und komplexe Datenstrukturen und -bedingungen, CFN nicht.

  • CFN verfügt über Erstellungsrichtlinien und Aktualisierungsrichtlinien, TF nicht.

  • Sie können den Zugriff auf CFN mithilfe von CFN-Richtlinien und IAM-Richtlinien steuern. Mit TF können Sie nicht dasselbe tun, da es außerhalb von AWS "lebt".

1 Blokje5 Aug 25 2020 at 15:56

Es gibt mehrere Gründe, warum Sie Terraform anstelle von CloudFormation wählen sollten:

  1. Vendor Agnostic: Möglicherweise müssen Sie in Zukunft Ihre Cloud-Infrastruktur migrieren. Dies kann verschiedene Gründe haben (z. B. Kosten, Einhaltung gesetzlicher Vorschriften usw.). Mit Terraform können Sie weiterhin dasselbe Tool zum Bereitstellen der neuen Infrastruktur verwenden. Durch den intelligenten Einsatz von Terraform-Modulen können Sie sogar große Teile Ihrer Infrastruktur als Code-Repository im Griff behalten.
  2. Unterstützung für andere Tools: Dies baut ebenfalls ein wenig auf dem vorherigen Punkt auf, aber Terraform kann viel mehr als nur AWS-Ressourcen bereitstellen. Sie können beispielsweise Terraform verwenden, um die Bereitstellung eines EC2-Computers zu koordinieren, der dann mit Ansible konfiguriert wird. Oder Sie können Terraform verwenden, um Anwendungen auf Ihrem Kubernetes-Cluster bereitzustellen. Während CloudFormation benutzerdefinierte Ressourcen durch die Erstellung benutzerdefinierter Lambdas unterstützt, ist die Wartung ziemlich aufwändig.
  3. Breiteres Ökosystem: Aufgrund der Open Source-Natur von Terraform gibt es ein riesiges Ökosystem von Tools, mit denen Sie alle Arten von Problemen lösen können, z. B. das Testen der Infrastruktur als Code oder das kontinuierliche Erstellen von Konformitäten.
  4. Wohl eine bessere Sprache: Persönlich denke ich, dass Terraform für Infrastruktur als Code besser geeignet ist als CloudFormation. Terraform bietet viel mehr Flexibilität in der Sprache (HCL) und das Modulsystem ermöglicht eine wesentlich bessere Kompositionsfähigkeit als in CloudFormation.