Suchen

Definition: Mixtur aus IaaS und DevOps Was ist Infrastructure as Code (IaC)?

Infrastructure as Code stellt IT-Infrastrukturleistungen wie Rechenleistung, Speicher und Netzwerk auf Basis von maschinenlesbarem Code zur Verfügung. Die Infrastruktur wird ähnlich wie Software programmiert. Das IaC-Konzept ist eng mit dem DevOps-Konzept und dem Cloud-Computing-Modell Infrastructure as a Service (IaaS) verknüpft.

Firma zum Thema

Infrastructure as Code ist eng verknüpft mit DevOps und Cloud Computing und dient zur Bereitstellung von IT-Infrastrukturleistungen auf Basis von maschinenlesbarem Code.
Infrastructure as Code ist eng verknüpft mit DevOps und Cloud Computing und dient zur Bereitstellung von IT-Infrastrukturleistungen auf Basis von maschinenlesbarem Code.
(Bild: gemeinfrei (© Gerd Altmann) / Pixabay )

Die Abkürzung IaC steht für Infrastructure as Code. Es handelt sich um einen konzeptionellen Ansatz aus dem IT-Umfeld, der die Bereitstellung von Infrastrukturleistungen wie Rechenleistung (Computing), Speicherplatz (Storage) und Netzwerk (Networking) mithilfe von maschinenlesbarem Code ermöglicht. Oft wird IaC auch als programmierbare Infrastruktur bezeichnet.

Zur Bereitstellung von Infrastrukturleistungen müssen keine manuellen Konfigurationsarbeiten ausgeführt werden. Die Infrastruktur wird über Skripte oder Programmfiles beschrieben und automatisiert gemäß den Vorgaben konfiguriert. Das Erstellen der Infrastruktur ist ein mit dem Programmieren von Software vergleichbarer Vorgang.

Infrastructure as Code ist eng mit dem DevOps-Konzept und dem Cloud-Computing-Modell Infrastructure as a Service (IaaS) verknüpft. Vorteile von IaC sind, dass sich Infrastrukturleistungen schneller, kostengünstiger und in beliebigem Umfang bereitstellen, anpassen oder erweitern lassen. Grundlage für Infrastructure as Code bilden virtualisierte Umgebungen und das Cloud Computing. In diesen Umgebungen lassen sich Ressourcen ohne die Notwendigkeit eines manuellen Zugriffs auf die eigentlichen physischen Hardwareressourcen softwaredefiniert verwalten. IaC wird von zahlreichen Cloud-Computing-Anbietern wie Google, Amazon oder Microsoft unterstützt.

Gängige Tools zur Programmierung der Infrastruktur

Zur Programmierung der Infrastruktur kommen Tools wie Terraform, Chef, Puppet, Ansible, Packer, AWS CloudFormation oder der Google Cloud Deployment Manager zum Einsatz. Teils handelt es sich um spezifische Tools für die jeweiligen Cloud-Umgebungen, teils um anbieterübergreifend nutzbare Open-Source-Tools.

Die prinzipielle Funktionsweise von Infrastructure as Code

Um hardwarebasiert Computing-Ressourcen wie Rechenleistung, Speicherplatz oder Netzwerk über maschinenlesbaren Code zu programmieren, ist eine Abstraktionsschicht zwischen Hardware und Konfigurationsmanagementtool notwendig. In der Regel handelt es sich bei diesen Abstraktionsschichten um verschiedene Formen der Virtualisierung. Dem Anwender werden Schnittstellen oder Tools bereitgestellt, über die sich die einzelnen Ressourcen mithilfe einer definierten Code-Sprache programmieren lassen.

Die Programmierung kann je nach Umgebung und Konzept deklarativ oder imperativ erfolgen. Die deklarative Programmierung gibt die genaue Zielumgebung vor, während die imperative Programmierung die auszuführenden Aktionen definiert, um eine gewünschte Zielumgebung zu erstellen. Der Programmcode kann per Push- oder per Pull-Methode umgesetzt werden. Bei der Pull-Methode lädt sich die zu konfigurierende Umgebung den Programmcode selbst von einem Konfigurationsserver. Die Push-Methode sorgt dafür, dass der Konfigurationsserver den Programmcode an die zu konfigurierenden Komponenten überträgt.

Infrastructure as Code im Umfeld des Cloud-Computing-Modells Infrastructure as a Service (IaaS)

Das IaC-Konzept lässt sich zwar grundsätzlich auch in On-Premises-Umgebungen anwenden. Typisch ist die Programmierung von Infrastrukturleistungen per Programmcode allerdings für das Cloud-Computing-Modell Infrastructure as a Service (IaaS). IaC soll die Bereitstellung der IaaS-Ressourcen effizienter gestalten und beschleunigen, da eine manuelle Verwaltung vieler verschiedener Services und Ressourcen im Cloud-Computing-Umfeld kaum mit vertretbarem Aufwand zu leisten ist.

Mit dem richtigen Code lassen sich eine Vielzahl verschiedener Ressourcen schnell und automatisiert gemäß den spezifischen Anforderungen erstellen, verändern oder erweitern. Nahezu alle Cloud-Computing-Anbieter von IaaS-Leistungen stellen entsprechende Schnittstellen oder Tools für die Programmierung der Infrastruktur per maschinenlesbarem Code zur Verfügung.

Infrastructure as Code und DevOps

Eng verknüpft ist IaC mit dem DevOps-Konzept. Der Begriff DevOps setzt sich aus den beiden Wörtern Development und Operations zusammen. Das DevOps-Konzept sorgt für eine engere Verknüpfung von Software-Entwicklung (Development) und IT-Betrieb (Operations). Ziel von DevOps ist es, die Zusammenarbeit von Systemadministration und Software-Entwicklung effizienter zu gestalten und dadurch zu verbessern.

Infrastructure as Code passt perfekt zu diesem Ansatz, da die Programmierung der Infrastrukturleistungen die Systemadministration den Softwareentwicklern zugänglich macht. Die Aufgabenbereiche Entwicklung und Betrieb nähern sich fachlich wie personell einander an. Entwickler erhalten mehr Möglichkeiten, die Infrastruktur zu beeinflussen und Operations ist enger in den Entwicklungsprozess der Software eingebunden. Neue Software lässt sich automatisiert auf speziell hierfür per Programmcode bereitgestellten Ressourcen in den operativen Betrieb überführen. Das Deployment der Software und die Anpassung der Infrastruktur wird in einem einzigen integrierten Prozess realisiert und dadurch wesentlich effizienter, schneller und kostengünstiger.

Tools für Infrastructure as Code

Es existieren zahlreiche IaC-Tools. Teilweise handelt es sich um spezifische Tools zur Programmierung der Infrastrukturleistungen einer bestimmten Cloud-Computing-Umgebung, teilweise um Open-Source-Tools, die mit den Services verschiedener Anbieter nutzbar sind. Kommen Cloud-Computing-Ressourcen verschiedener Anbieter zum Einsatz, sind Tools für ein anbieterübergreifendes Management der Ressourcen zu bevorzugen. In der Regel unterstützen die Cloud-Computing-Anbieter verschiedene IaC-Tools und -Sprachen.

Bekannte und häufig verwendete IaC-Tools sind:

  • Puppet (auch auf Basis von Ruby),
  • Packer, ebenfalls von HashiCorp, zum Einsatz.

Vorteile von Infrastructure as Code

Das Konzept Infrastructure as Code und die Bereitstellung von Infrastrukturservices über maschinenlesbaren Code bietet zahlreiche Vorteile. Einzelne Hardwarekomponenten müssen nicht mehr aufwendig manuell konfiguriert werden, sondern lassen sich über einen Programmcode automatisiert, schnell, flexibel und in großer Zahl gemäß den individuellen Anforderungen bereitstellen.

Mit dem gleichem Code können viele verschiedene Maschinen fehlerfrei und in gleicher Qualität dimensioniert und konfiguriert werden. Die Kosten zur Konfiguration der Infrastruktur sinken, gleichzeitig ist die Umgebung flexibler und leichter zu skalieren. Durch eine engere Verknüpfung von Betrieb und Softwareentwicklung (DevOps) verkürzen sich Entwicklungsprozesse und die Zusammenarbeit der Prozessbeteiligten verbessert sich.

Weitere Vorteile von Infrastructure as Code sind:

  • Hardware-Setups und Ressourcen werden wie Software testbar
  • selbst komplexe Änderungen der Infrastruktur lassen sich nach der Erstellung des Codes binnen kürzester Zeit durchführen
  • Veränderungen der Ressourcen sind zu beliebigen Zeiten unabhängig vom verfügbaren Personal automatisiert durchführbar
  • das Risiko manueller Bedien- oder Tippfehler lässt sich reduzieren
  • Downtimes der Infrastruktur während der Änderungen oder Anpassungen reduzieren sich
  • einmal erstellter Programmcode kann beliebig oft wiederverwendet werden
  • Infrastrukturservices lassen sich wie Software mithilfe einer Versionsverwaltung managen - Services und Ressourcen sind in beliebigen Versionen wiederherstellbar
  • Infrastructure as Code und Infrastructure as a Service ergänzen sich im Cloud-Computing-Umfeld perfekt
  • Infrastrukturen lassen sich beliebig duplizieren - beispielsweise für Betriebs-, Staging- oder Testumgebungen
  • Tools ermöglichen die anbieterübergreifende Programmierung von Infrastrukturleistungen mit gleicher Programmiersprache

(ID:46374412)

Über den Autor