Definition Was ist Infrastructure as Code?

Redakteur: Michael Hase

Bei Infrastructure as Code (IaC) handelt es sich um einen Ansatz für die automatisierte Bereitstellung von IT-Infrastruktur. Dabei wird sie nicht manuell konfiguriert, sondern wie Software programmiert.

Firmen zum Thema

Grundlagenwissen zum IT-Business
Grundlagenwissen zum IT-Business
(Bild: © adiruch na chiangmai - Fotolia.com)

Der Begriff Infrastructure as Code drückt bereits das Wesentliche aus: Infrastruktur wird nicht als ein mehr oder weniger komplexes Konstrukt verstanden, das aus Hardware- und Software-Komponenten zusammengefügt ist, sondern sie wird wie eine reine Software-Architektur behandelt. Rechenleistung, Speicher- und Netzwerkressourcen werden dabei über maschinenlesbaren Code automatisiert mit den gewünschten Parametern bereitgestellt. Dazu beschreibt man die einzelnen Bestandteile der IT-Umgebung ebenso wie ihre Abhängigkeiten mit Hilfe von Templates, sodass sie gemäß den Vorgaben ohne manuellen Eingriff konfiguriert werden. Infrastruktur wird also wie Software programmiert, statt sie auf klassische Weise zu implementieren.

Dieses Vorgehen bietet gegenüber der herkömmlichen Systemintegration nicht nur den Vorteil der größeren Geschwindigkeit. Einmal erstellte Vorlagen lassen sich auch beliebig oft wiederverwenden und führen immer zum gleichen Zielzustand. Definierte Standards für Compliance und Security werden zuverlässig eingehalten. Zudem sind versehentliche Fehler, wie sie bei manueller Konfiguration mitunter passieren, so gut wie ausgeschlossen. Da der Aufbau von Infrastruktur auf ähnliche Weise abläuft wie die Entwicklung von Software, können Verfahren, die sich dort bewährt haben, wie Testing und Versionskontrolle auch bei IaC angewendet werden. Somit lassen sich Änderungen an Templates lückenlos nachverfolgen und bei Bedarf einfach wieder rückgängig machen.

Wurzeln im Configuration Management

IaC wird häufig genutzt, um Cloud-Architekturen aufzubauen und zu verwalten. Dabei kommt der Ansatz auch in DevOps-Szenarien zum Einsatz, um die Bereitstellung spezifischer Umgebungen für Entwicklung, Testing, Staging und Produktion zu automatisieren. Historisch betrachtet reicht der Ansatz aber weit in die Zeit zurück, bevor die Cloud aufkam. Seine technologischen Wurzeln liegen im Configuration Management. Als erstes IaC-Tool gilt das Open-Source-Produkt CFEngine, das bereits 1993 vorgestellt wurde und der Konfiguration von Unix-Servern diente. Auch jüngere Tools wie Puppet, Chef, Saltstack oder Ansible wurden entwickelt, um Server automatisiert zu konfigurieren. Sie entstanden zwischen 2005 und 2012 als Open-Source-Projekte, hinter denen kommerzielle Firmen stehen. Ansible wurde 2015 von Red Hat, Chef und Salt im Jahr 2020 von Progress beziehungsweise VMware übernommen.

Vom Prinzip her basieren die Werkzeuge auf einer Sprachsyntax, mit der man den ­Zustand von Servern definiert, der dann beliebig vielen Maschinen zugewiesen werden kann. Dabei verfolgen die einen Lösungen einen deklarativen Ansatz, bei dem der erwünschte Konfigurationszustand beschrieben und durch die Software herbeigeführt wird, während die anderen instruktiv vorgehen und die einzelnen Befehlsschritte vorgeben.

Von der Konfiguration zur Orchestrierung

Eine Ebene über den Konfigurations- sind die Orchestrierungs-Tools angesiedelt, mit denen die Bereitstellung von Infrastrukturstacks (Server, Storage, Netzwerk, Firewall, Loadbalancer, Datenbanken etc.) automatisiert wird. Sie koordinieren das Zusammenspiel zwischen den Systemgruppen. Konfigurationswerkzeuge verfügen bis zu einem gewissen Grad ebenfalls über Orchestrierungsfunktionen. In der Praxis werden oft beide Arten von Tools zusammen eingesetzt. Eine verbreitete Orchestrierungslösung ist das Open-Source-Produkt Terraform, hinter dem die Firma Hashicorp steht. Mit AWS Cloudformation, Azure Resource Manager und Google Cloud Deployment Manager bieten die Hyperscaler vergleichbare Tools an, deren Einsatz aber auf anbieterspezifische Umgebungen beschränkt ist. Um Hybrid- oder Multi-Cloud-Szenarien zu managen, sind Anwender auf unabhängige Lösungen wie Terraform angewiesen.

(ID:47025470)