Zum Hauptinhalt springen
BLOG

IaC Toolbox: Die besten Tools und Techniken

Sebastian UllrichSebastian Ullrich
2023-08-01
6 Min.

Für eine Einführung in Infrastructure-as-Code empfehlen wir Ihnen den ersten Teil unserer Blogreihe.

Wenn man sich mit moderner IT-Infrastruktur, Cloud, DevOps und Infrastructure-as-Code auseinandersetzt, kann es verwirrend sein, zwischen den verschiedenen Tools und Anwendungsfällen wie Terraform und Pulumi sowie Konfigurationsmanagement-Tools wie Ansible, Chef oder Puppet zu unterscheiden. Daher ist es wichtig, den Unterschied zwischen Infrastruktur als Code, Infrastrukturprovisionierung und Konfigurationsmanagement zu verstehen.

Grundlagen

Zunächst einige begriffliche Grundlagen aus einem Infrastrukturstandpunkt betrachtet:

IT-Infrastruktur besteht aus einer Kombination aus Hardware- und Softwarekomponenten. (Server, Storage, Netzwerk, Firewall-Geräte, Router usw.)

Provisionierung ist der Prozess der Erstellung von Infrastruktur und deren Bereitstellung für Endbenutzer.

Konfiguration ist der Prozess Zusammenstellung und Einstellung der bereitgestellten IT-Infrastrukturressourcen. Zum Beispiel die Installation und Konfiguration einer Datenbank auf einem Server oder die Konfiguration eines Firewall-Geräts.

Automatisierung bezieht sich auf den Prozess der Umsetzung von wiederkehrenden Aufgaben, Prozessen oder Abläufen. Zum Beispiel die per Code automatisierte Installation von Nginx auf einem Server.

Orchestrierung ist der Prozess der Koordination mehrerer Automatisierungen. Die Ausgabe einer Automatisierung kann als Eingabe für eine andere Automatisierung verwendet werden. Zum Beispiel benötigen Sie zum Bereitstellen eines Servers ein Netzwerk. Eine Automatisierung wird also Netzwerkressourcen bereitstellen, und eine andere wird ihre Ausgabe verwenden, um Server bereitzustellen.

Mit der Einführung von Cloud-Computing ist die Bereitstellung von Infrastruktur einfach geworden, da die meisten komplexen Konfigurationen durch die Cloud-Anbieter mithilfe von Virtualisierung und softwaredefiniertem Networking abstrahiert werden. Sie können Netzwerke, Server und Storage in wenigen Minuten API-gesteuert bereitstellen. Alle Cloud-Anbieter stellen APIs bereit, damit können Sie Programmiersprachen verwenden, um Ihre IT-Infrastruktur zu verwalten, sowie die Konfiguration der bereitgestellten Ressourcen mithilfe von Code konfigurieren.

Wenn Sie Code verwenden, um die Infrastruktur bereitzustellen und zu konfigurieren, wird dies als Infrastructure-as-Code (IaC) bezeichnet. Einfach ausgedrückt: Kodierung der Infrastrukturprovisionierung und -konfiguration.

Provisionierung vs Konfiguration

Die unten stehende Tabelle bietet einen Überblick über die gängigsten Provisionierungs-Tools wie Terraform, Pulumi, AWS CDK, AWS CloudFormation, Microsoft ARM, Microsoft Bicep und Google Cloud Deployment Manager. Diese Tools unterstützen die Automatisierung von Infrastruktur für eine Vielzahl von Cloud-Umgebungen, einschließlich AWS, Azure und Google Cloud.

Von deklarativen Sprachen bis hin zur Verwendung von bekannten Programmiersprachen bieten diese Tools eine breite Palette von Funktionen und Flexibilität, um Infrastrukturen aufzubauen und zu verwalten. Egal, ob Sie sich für eine Multi-Cloud-Strategie entscheiden oder spezifisch auf einen Cloud-Anbieter ausgerichtet sind, es gibt ein geeignetes Tool, das Ihren Anforderungen gerecht wird.

Zusätzlich zu den in der Tabelle dargestellten Tools ist es wichtig zu beachten, dass es noch eine Vielzahl weiterer Tools zu Infrastructure-as-Code gezählt werden können. In diesem Artikel konzentrieren wir uns hauptsächlich auf Infrastructure-as-Code-Tools, die für das Provisioning von Infrastrukturressourcen entwickelt wurden. Es ist jedoch auch wichtig, die Abgrenzung zu anderen Arten von Tools im Bereich des Infrastrukturmanagements zu verstehen. Neben den Provisioning-Tools gibt es auch Configuration Management Tools, die sich auf die Konfiguration und Verwaltung von Softwarekomponenten innerhalb der Infrastruktur konzentrieren.

Configuration Management Tools wie Ansible, Chef, Puppet oder Salt bieten Mechanismen zur automatisierten Installation, Konfiguration und Aktualisierung von Software auf Infrastrukturressourcen. Sie spielen eine entscheidende Rolle bei der Verwaltung der Software-Konfiguration und -Zustände auf den bereitgestellten Ressourcen.
PROTOS-Visual-8-1024x267.pngEs ist wichtig zu beachten, dass beide Arten von Tools oft in Kombination eingesetzt werden, um eine umfassende Automatisierung und Verwaltung der Infrastruktur zu ermöglichen. Während Configuration Management Tools sich auf die Softwareebene konzentrieren, ermöglichen Infrastructure-as-Code-Provisioning-Tools die Automatisierung und Verwaltung der zugrunde liegenden Infrastruktur, auf der die Software ausgeführt wird.

Übersicht der Infrastructure-as-Code Tools für AWS, Azure und GC

Das Schaubild zeigt eine Übersicht der gängigsten Infrastructure-as-Code Tools zur Provisionierung auf den drei großen public cloud Plattformen und ihrer Codingsprachen. Weitere Details zu jedem Tool sind in der Tabelle zu finden.
PROTOS - Übersicht gängigste IaC Tools.pngEs gibt viele beliebte und weit verbreitete Infrastructure-as-Code-Tools, die von Entwickler:innen und DevOps-Teams verwendet werden, um ihre Infrastruktur automatisiert zu erstellen und zu verwalten. Die Wahl des besten Tools hängt von den spezifischen Anforderungen, den Zielsystemen und den Vorlieben des Teams ab. Hier finden Sie einige der wichtigsten und meist genutzten Tools:

Terraform

HashiCorp Terraform ist ein Infrastruktur-als-Code-Tool, mit dem Sie sowohl Cloud- als auch On-Premise-Ressourcen in von Benutzern lesbaren Konfigurationsdateien definieren können, die Sie versionieren, wiederverwenden und teilen können. Sie können somit einen konsistenten Arbeitsablauf für die Bereitstellung und Verwaltung Ihrer gesamten Infrastruktur über den gesamten Lebenszyklus hinweg nutzen. Terraform kann sowohl Low-Level-Komponenten wie Rechen-, Speicher- und Netzwerkressourcen als auch High-Level-Komponenten wie DNS-Einträge und SaaS-Funktionen verwalten.

Anbieter:

Alle Cloud Anbieter
Multi Cloud
Hybrid Cloud

Sprache:

HashiCorp Configuration Language (HCL)
JSON compatibleHybrid Cloud

test

AWS CDK

AWS CDK ist ein Open-Source-Framework, mit dem AWS-Cloud-Ressourcen unter Verwendung der Programmiersprache Ihrer Wahl modelliert und bereitgestellt werden können. Es ermöglicht Ihnen, die Anwendungsinfrastruktur mit TypeScript, Python, Java oder .NET zu modellieren. Im Hintergrund verwendet das Framework AWS CloudFormation, um Ressourcen auf sichere und wiederholbare Weise bereitzustellen.

Anbieter:

AWS

Sprachen:

TypeScript, JavaScript, Python, Java, C#, Go

Pulumi

Pulumi ist ein Open-Source-Infrastructure-as-Code-Tool, die es Ihnen ermöglicht, mit gängigen Programmiersprachen und Tools eine Cloud-Infrastruktur aufzubauen, bereitzustellen und zu verwalten.
Im Gegensatz zu Terraform, das über eine eigene Sprache und Syntax für die Definition von Infrastruktur als Code verfügt, verwendet Pulumi echte Sprachen. Sie können Konfigurationsdateien in Python, JavaScript oder TypeScript schreiben. Mit anderen Worten: Sie sind nicht gezwungen, eine neue Programmiersprache zu lernen, nur um die Infrastruktur zu verwalten.

Anbieter:

AWS, Microsoft Azure, Google Cloud Platform, Kubernetes, VMware etc. 

Sprachen:

TypeScript, Python, JavaScript, Go, .NET (C#)

AWS Cloud Formation

AWS CloudFormation ist eine Service zur Bereitstellung einer AWS-Infrastruktur mithilfe von Code. Es ermöglicht Ihnen die Modellierung einer Sammlung von zusammenhängenden Ressourcen, sowohl von AWS als auch von Drittanbietern, um sie schnell und konsistent bereitzustellen.

Anbieter:

AWS

Sprachen:

JSON, YAML

Microsoft Bicep

Bicep ist eine domänenspezifische Sprache (DSL), die eine deklarative Syntax für die Bereitstellung von Azure-Ressourcen verwendet. In einer Bicep-Datei definieren Sie die Infrastruktur, die Sie in Azure bereitstellen möchten, und verwenden diese Datei dann während des gesamten Entwicklungslebenszyklus, um Ihre Infrastruktur wiederholt bereitzustellen. Ihre Ressourcen werden auf eine einheitliche Weise bereitgestellt.
Bicep bietet eine prägnante Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet eine erstklassige Authoring-Erfahrung für Ihre Infrastructure-as-Code-Lösungen in Azure.

Anbieter:

Microsoft Azure

Sprachen:

Bicep, JSON

Google Cloud Deployment Manager

Google Cloud Deployment Manager ist ein Dienst für die Bereitstellung von Infrastrukturen, der die Erstellung und Verwaltung von Google Cloud-Ressourcen automatisiert. Mit diesem Dienst können Sie flexible Vorlagen und Konfigurationsdateien erstellen und diese für die Erstellung von Bereitstellungen mit mehreren Diensten (Cloud Storage, Compute Engine, Cloud SQL, usw.) verwenden.
Google Cloud Deployment Manager stellt Ihnen auch Sprachen wie Jinja oder Python zur Verfügung, mit denen Sie die gewünschten Ressourcen definieren können. Auf diese Weise können Sie eine deklarative Sprache verwenden, um die Ressourcen zu definieren, und dies wird Ihnen helfen, ihre Eigenschaften und Granularität festzulegen.

Anbieter:

Google Cloud Platform

Sprachen:

Python, Jinja2

Häufig gestellte Fragen zu IaC und Konfigurationsmanagement

Sebastian Ullrich

Sebastian Ullrich

Geschäftsführer

Zu seinen Schwerpunkten gehörte neben dem strategischen Auf- und Ausbau von Unternehmen zudem die Akquise und Vorbereitung von Unternehmenszusammenschlüssen sowie die Projektleitung in Cloud und IT-Infrastrukturprojekten. Parallel dazu absolvierte Andreas Sass das berufsbegleitende Masterstudium ‚Leadership in Digitaler Kommunikation‘ an der Universität der Künste Berlin und der Universität St. Gallen mit Auszeichnung.
LinkedIn Profil