# Infrastructure as Code (IaC)

Geht es um IT-Infrastruktur, führt mittlerweile kaum ein Weg an virtualisierter, per Software steuerbarer Hardware vorbei. Punktgenau lassen sich Speicher-, Server- und Netzwerk-Ressourcen oder gar komplette Rechenzentren **zusammenstellen** und **jederzeit skalieren**, ohne dass hierfür ein manueller Zugriff auf die jeweiligen Geräte erforderlich ist. Dank [Infrastructure-as-a-Service](https://www.ionos.at/digitalguide/server/knowhow/iaas-infrastructure-as-a-service/ "IaaS: Infrastructure-as-a-Service")-Providern kann die zugrundeliegende, softwaredefinierte Hardware sogar kostengünstig **gemietet** werden, was Inhouse-Infrastruktur gänzlich entbehrlich macht.

Anspruchsvoll bleibt das Management der verschiedenen Ressourcen dennoch – insbesondere aufgrund der **stetig steigenden Ansprüche an IT-Infrastruktur** und der Tatsache, dass häufig gleichzeitig auf die Dienste mehrerer unterschiedlicher IaaS-Anbieter zurückgegriffen wird. Einen immer höheren Stellenwert nimmt daher das Prinzip „Infrastructure as Code“ ein, das auch unter der Bezeichnung „programmierbare Infrastruktur“ bekannt ist.

## Was ist Infrastructure as Code (IaC)?

Bei Infrastructure as Code, oder kurz IaC, handelt es sich um ein **IT-Paradigma**, demgemäß nicht nur Software, sondern auch die zur Ausführung benötigte **Infrastruktur** wie Speicherplatz (Storage), Rechenpower oder Netzwerkressourcen in Computersprache beschrieben wird. Es geht prinzipiell also darum, auch **Hardware-Strukturen als ausführbaren Code zu programmieren**, der sich jederzeit problemlos anpassen, duplizieren, löschen und versionieren lässt. Dabei baut das Infrastructure-as-Code-Konzept auf modernen **Cloud-Technologien** wie [Virtualisierung](https://www.ionos.at/digitalguide/server/konfiguration/virtualisierung/ "Virtualisierung") und **softwaredefiniertem Ressourcen-Handling** auf, die ein solches Hardware-Management ohne manuellen Zugriff auf die zugrundeliegenden Geräte erst möglich machen.

Definition: Infrastructure as Code Infrastructure as Code: Infrastructure as Code (IaC) ist ein Paradigma in der Informationstechnik, das die **Beschreibung von Hardware in maschinenlesbarem Code** vorsieht. Auf diese Weise lassen sich der Aufbau und das Management von IT-Infrastruktur in hohem Maße automatisieren, um punktgenau auf wechselnde bzw. neue Anforderungen reagieren zu können.

## Was ist die Zielsetzung von Infrastructure as Code?

Die Ansprüche an Software-Produkte sind in den vergangenen Jahren rapide gestiegen. Daraus resultierende Konsequenzen sind z. B. immer **kürzer werdende Entwicklungszyklen** und ein Streben nach maximaler **Verfügbarkeit und Flexibilität**. Neben einer optimierten Code-Entwicklung zählt daher auch die ständige Verbesserung und intensive Pflege der zugrundeliegenden Hardware-Infrastruktur zu den Eckpfeilern für ein erfolgreiches, stabiles und vor allem konkurrenzfähiges Gesamtkonstrukt. An dieser Stelle kommt Infrastructure as Code ins Spiel, denn das Konzept „programmierbare Infrastruktur“ ist speziell dafür entwickelt worden, die **Qualität und Effizienz von Infrastrukturen zu erhöhen**. Zu den elementaren Zielen und Aufgaben von IaC zählen dabei u. a.:

- manuelle Prozesse so weit wie möglich zu **automatisieren**
- die **Grenzen** zwischen Anwendungen und den Umgebungen, in denen sie ausgeführt werden, aufzuheben
- einen flexiblen **Workflow** zu schaffen, der die unternehmensweite Zusammenarbeit für alle, die am Entwicklungsprozess beteiligt sind, vereinfacht
- Bewegungen von Inhalten und Änderungen jederzeit **transparent** und detailliert nachvollziehbar zu machen
- Hardware-Set-ups in gleichem Maße „**testbar**“ wie Software zu machen

## Wie setzt sich Infrastructure as Code von bisherigen Ansätzen ab?

Im **klassischen, nichtvirtualisierten Umfeld** sind sämtliche Ressourcen immer **direkt an physische Hardware** gebunden, was nicht nur eine wenig flexible Infrastruktur zur Folge hat, sondern auch mit einer Menge Handarbeit bei jeglichen Änderungen am Set-up verbunden ist.

Mit der **Virtualisierung von Server-Hardware, Speicher und Netzwerkstrukturen** hat sich diese Ausgangslage erheblich geändert: Dank der Technologie haben Provider die Möglichkeit, Kunden **zentral regulierbare Ressourcen** anzubieten, ohne hierfür dedizierte Hardware zuweisen zu müssen. Das sorgt zum einen für eine deutlich höhere Ausfallsicherheit, da etwa defekte Hardware umgehend ersetzt werden kann. Zum anderen ist auch das Hinzubuchen neuer Ressourcen bzw. das Zurückfahren bereits gemieteter Ressourcen für beide Seiten deutlich einfacher.

[YouTube video](https://www.youtube.com/watch?v=FZR0rG3HKIk)Einen Schritt weiter als gewöhnliche virtualisierte Infrastrukturen gehen **softwaredefinierte (Software Defined) Umgebungen**. Diese zeichnen sich dadurch aus, dass die Steuerlogik komplett aus den einzelnen Hardware-Komponenten abstrahiert und in eine **zentrale Steuersoftware** implementiert wird. Provider und Kunden können diese Steuereinheit dank entsprechender Schnittstellen und Tools problemlos ansteuern und IT-Strukturen ganz individuell zusammenstellen sowie **punktgenau** skalieren. Zudem profitieren beide Seiten von einer erhöhten Leistungsfähigkeit der Hardware, da diese nicht für die Datenverarbeitung zuständig ist.

Hinweis Bei softwaredefinierten Services haben Sie die Wahl zwischen Einzelpaketen wie Software Defined Storage (Speicher), Software Defined Computing (Rechenpower) oder [Software Defined Networking](https://www.ionos.at/digitalguide/server/knowhow/software-defined-networking/ "Software Defined Networking") (Netzwerkstrukturen) und dem Komplettpaket [Software Defined Data Center](https://www.ionos.at/digitalguide/server/knowhow/software-defined-data-center/ "Software Defined Data Center") (Rechenzentrum).

Infrastructure as Code bedient sich der zuvor genannten Techniken, indem es das softwaregesteuerte Management der jeweiligen virtualisierten Ressourcen automatisiert, um das Potential der Cloud optimal auszuschöpfen. Damit ist IaC nicht als Alternative, sondern als **Ergänzung bzw. Optimierung softwaredefinierter Infrastruktur** zu verstehen.

## Welche Vorteile und Nachteile hat Infrastructure as Code?

Infrastructure as Code trägt entscheidend dazu bei, die Anforderungen agiler Software-Entwicklung zu erfüllen. Erforderliche Änderungen an der Infrastruktur sind dank fertig konfigurierter Skripte in einem **Tempo** vollzogen, das Sie bei manueller Administration schlichtweg nicht erreichen können. Dabei spielt es keinerlei Rolle, ob die Anpassungen mitten in der Nacht, am Wochenende oder an einem Feiertag zu realisieren sind. Darüber hinaus **sinkt das Fehlerpotenzial** – insbesondere bei Administrationsschritten, die es häufig zu wiederholen gilt –, da Eingabe- und Tippfehler ausgeschlossen sind. Zusätzlich zur hohen Geschwindigkeit und der geringen Fehleranfälligkeit punktet Infrastructure as Code gegenüber manueller Administration durch folgende Vorteile:

- **Hohe Effizienz**: IaC bietet die Möglichkeit, den Großteil des Ressourcenmanagements zu automatisieren und trägt damit entscheidend zur Optimierung des Software Development Life Cycles (SDLC), also des gesamten Entwicklungsprozesses, bei.
- **Wiederverwendbarkeit**: Sobald der Code für eine Infrastruktur geschrieben ist, lässt er sich jederzeit und so oft wie gewünscht ausführen, um diese Infrastruktur umzusetzen. Gleiches gilt z. B. auch für Sandbox-Umgebungen während der Entwicklungsphase(n).
- **Versionsverwaltung**: Wo Code ist, ist auch Versionsverwaltung möglich – und so erlaubt Infrastructure as Code die Dokumentation und Verfolgung jeglicher Änderungen, die an einer Infrastruktur vorgenommen werden. Das hat u. a. den Vorteil, dass sich ein vorangegangenes Set-up ohne Probleme wiederherstellen lässt.
- **Minimierung von Kosten/Aufwand**: Die Automatisierung der Infrastrukturverwaltung spart eine Menge Aufwand und Kosten, die wiederum in andere Bereiche investiert werden können.

Der zuletzt genannte Vorteil, Kosten und Zeit einzusparen, ist allerdings nicht ohne Einschränkungen zu nennen. Auf eine gut programmierte Infrastructure-as-Code-Umgebung trifft diese Tatsache zwar zu – allerdings darf der Aufwand, der mit ihrer **Konzeption und Umsetzung** verbunden ist, nicht außer Acht gelassen werden: So bedeutet das IaC-Modell für viele verantwortliche Administratoren große Umstellungen, denn ohne ein umfassendes **Verständnis von Cloud-Architektur-Konzepten** sowie ohne **Know-how in Programmiersprachen** wie Java, Node.js, Python usw. und im **Umgang mit APIs** ist der Umstieg auf eine automatisierte Infrastruktur bzw. deren Realisierung kaum möglich. Gerade zu Beginn ist daher mit vergleichsweise hohen Kosten und einem hohen Einarbeitungsaufwand zu rechnen.

[YouTube video](https://www.youtube.com/watch?v=olSsG4ZVwsQ)## IaC-Tools: Wichtige Stützen bei der Programmierung von Infrastructure as Code

Bereits eingangs ist thematisiert worden, dass Unternehmen in den meisten Fällen auf die Dienste mehrerer verschiedener IaaS-Provider setzen. Das hat zur Folge, dass Administratoren sich mit den Eigenheiten und vor allem mit den unterschiedlichen Schnittstellen der jeweiligen Plattformen auseinandersetzen müssen. Alternativ bieten **spezielle IaC-Tools bzw. -Frameworks** eigene Konfigurationssprachen, die ein **anbieterübergreifendes Management der Ressourcen** ermöglichen und genaue Kenntnisse über die angesprochenen APIs überflüssig machen. Einige der beliebtesten Lösungen sind:

- **Terraform**: Grundsätzlich Open Source lässt sich das von HashiCrop entwickelte [Terraform](https://www.ionos.at/digitalguide/server/tools/was-ist-terraform/) in seiner Basisversion kostenfrei herunterladen und nutzen. Zwei kostenpflichtige Editionen bieten Features für Einrichtungen und Organisation sowie für die Arbeit im Team.
- **AWS CloudFormation**: CloudFormation ist das hauseigene IaC-Tool der Amazon Web Services (AWS) und als solches quasi unverzichtbar für alle, die mit AWS-Produkten wie ELB, S3 oder EFS arbeiten. Für die Nutzung fallen keine zusätzlichen Gebühren an, sodass Nutzer lediglich die gebuchten Ressourcen zahlen.
- **Google Cloud Deployment Manager**: Was CloudFormation für AWS ist, ist der Deployment Manager für die Google-Cloud-Plattform. Wer seine IaaS-Ressourcen also aus dem Hause Google bezieht, kann diese mit dem kostenlosen Tool bequem über zentrale Konfigurations-Dateien in der Auszeichnungssprache YAML verwalten.
- **Chef Infra**: Chef Infra ist die IaC-Lösung des US-amerikanischen Unternehmens Chef. Seit April 2019 unter der freien Apache-2.0-Lizenz stehend, wird Chef Infra u. a. von Facebook genutzt. Zu den unterstützten Plattformen zählen Google Cloud, Microsoft Azure, Amazon EC2 und [OpenStack](https://www.ionos.at/digitalguide/server/tools/was-ist-openstack/ "Was ist OpenStack?").
- **Red Hat Ansible Tower**: Das Infrastructure-as-Code-Werkzeug Ansible gehört seit 2015 zum Portfolio der Software-Schmiede Red Hat. Es bietet ein visuelles Dashboard, eine eigene Kommandozeile und eine leistungsstarke REST-API. Die beiden verfügbaren Pakete „Standard“ und „Premium“ sind allerdings kostenpflichtig.

## Infrastructure as Code: Beispiele

Der Infrastructure-as-Code-Ansatz ist für alle Unternehmen interessant, die komplexe Anwendungen entwickeln und betreiben und aus diesem Grund auf ebenso umfassende und leistungsstarke Infrastruktur angewiesen sind. Entscheidende **Gründe, auf die Programmierung von Infrastruktur zurückzugreifen**, sind:

- die Nutzung einer großen **Menge** an IaaS-Ressourcen
- Infrastruktur ist bei vielen **verschiedenen Providern bzw. Plattformen** gemietet
- Infrastruktur bedarf regelmäßiger **Anpassungen**
- eine gute **Dokumentation** der Infrastruktur-Änderungen ist gefragt
- eine optimale **Zusammenarbeit** von Administratoren und Entwicklern ist gewünscht

Auch wenn Unternehmen grundsätzlich eigene IaC-Konfigurationsdateien programmieren könnten und dies sicherlich zum Teil auch tun, gehört der Einsatz der oben genannten **Tools bzw. Frameworks** wohl bei allen Administratoren, die mit IaC arbeiten, zum Alltag. Anstelle von konkreten Infrastructure-as-Code-Beispielen zeigen daher folgende Clips zum Abschluss, wie sich Infrastruktur-Code mit den **praktischen IaC-Werkzeugen** (hier: AWS CloudFormation und Terraform) programmieren lässt.

[YouTube video](https://www.youtube.com/watch?v=JSfqUCIK_OA) [YouTube video](https://www.youtube.com/watch?v=-NvaoN9xvGU)


This is a markdown version of: [https://www.ionos.at/digitalguide/server/knowhow/infrastructure-as-code/](https://www.ionos.at/digitalguide/server/knowhow/infrastructure-as-code/) for AI/LLM consumption.