Definition „Infrastructure as Code“

Was ist IaC?

| Autor / Redakteur: LineFeed / Stephan Augsten

Beim IaC-Prinzip abstrahieren Konfigurationsmanagement-Tools die Konfiguration einzelner Hardware- und Software-Komponenten.
Beim IaC-Prinzip abstrahieren Konfigurationsmanagement-Tools die Konfiguration einzelner Hardware- und Software-Komponenten. (© Gorodenkoff - stock.adobe.com)

Infrastructure as Code ist die Fortsetzung der Unix Philosophie mit DevOps-Mitteln. Das Administrationskonzept für IT-Infrastruktur macht die individuelle Installation und Konfiguration von Hard- und Software unabhängig von manueller Interaktion.

Was bedeutet „Infrastructure as Code“?

Mit seiner Struktur und dem Kürzel IaC lehnt sich Infrastructure as Code an die im Cloud-Computing üblichen Begriffsbildungen wie SaaS und insbesondere IaaS an. Infrastructure as a Service beschreibt eine Form, Kunden bestimmte Computer-Ressourcen, also nach außen hin zur Verfügung zu stellen.

Infrastructure as Code hingegen bezieht sich auf die unternehmensinterne Organisation der Bereitstellung und Verwaltung entsprechender Ressourcen. Mit der Formulierung „as Code“ spezifiziert IaC eine bestimmte Sichtweise, die sich nicht unbedingt leicht erschließt.

Wie lässt sich ein System als Quelltext betrachten?

Der Schlüssel dazu sind spezielle Software-Werkzeuge, die Configuration Management Tools. Sie abstrahieren die konkrete Konfiguration einzelner Hardware- und Softwarekomponenten, sodass sich ihre Funktionen in allgemeiner Form definieren und auf unterschiedliche Installationen übertragen lassen.

Die Steuerung dieser Werkzeuge erfolgt allgemein mittels Programmiersprachen und ähnlichen Schnittstellen, die einer Bearbeitung und Verwaltung durch Werkzeuge der Software-Entwicklung offenstehen. Ein Fokus liegt dabei auch auf der Automatisierung der Konfigurationsprozesse.

Eine Werkzeugkategorie der DevOps-Toolchain

Der Begriff Infrastructure as Code (IaC) ist eng verknüpft mit DevOps. Dieses Konzept vereint Software-Entwicklung (Development) und Betrieb (Operations) zu einer Einheit, schließt also auch die Systemadministration mit ein.

Indem IaC die IT-Infrastruktur wie Code behandelt und dies durch geeignete Werkzeuge und Maßnahmen ermöglicht, macht das Konzept die Administration den üblichen Werkzeugen und Vorgehensweisen der Software-Entwicklung zugänglich, beispielsweise die Versionskontrolle. Das wiederum erleichtert die personelle Verknüpfung von Development und Operations zu DevOps. Im gängigen, siebenstufigen Modell der DevOps-Toolchain stellt IaC geeignete Werkzeuge für die sechste Phase, die Konfiguration bereit.

Welche Werkzeuge setzt IaC ein?

Das Cloud-Umfeld, die Virtualisierung und besonders Container-Architekturen wie Docker nutzen den Begriff Orchestrierung für den Prozess der Steuerung und Kontrolle der entsprechenden IT-Infrastruktur. Im Bereich der klassischen Systemadministration ist der Begriff Konfigurationsmanagement-Software für Orchestrierungstools der Cloud-Generation üblich.

Hierzu zählen beispielsweise Ansible, Chef, Salt und Puppet, aber auch ältere Werkzeuge wie CFEngine. Alle lassen sich für IaC einsetzen. Daran zeigt sich bereits, dass dieses Konzept nicht mit Cloud und DevOps aus dem Nichts entstanden ist, sondern seine Wurzeln in der Systemadministration hat.

Traditioneller Ansatz im neuen Gewand

Eine enge Beziehung zwischen Software-Entwicklung und Systemadministration hat gerade im Unix-Umfeld eine lange Tradition. Das Programmieren von Shell-Skripten und die Kenntnis von Skriptsprachen wie Perl oder Python gehören zum elementaren Handwerkszeug eines Systemadministrators. Üblich ist auch die Verwaltung von Konfigurationsdateien mit Versionskontrollsystemen.

Bis zur Einführung von Paketmanagement-Systemen in den 1990er-Jahren zählte zudem das Kompilieren von Anwendungsprogrammen oder sogar des gesamten Betriebssystems aus dem Quelltext zu den gängigen Aufgaben des Administrators. Weitere Ähnlichkeiten finden sich aber auch tiefer in den Konzepten.

Was haben IaC und die Unix-Philosophie gemeinsam?

Infrastructure as Code bevorzugt den Einsatz von Konfigurationsdateien, deren Inhalt von Maschinen direkt auswertbar ist, vor interaktiven Werkzeuge sowie physisch an Hardware-Komponenten vorzunehmenden Einstellungen.

Ähnliche Forderungen finden sich bereits in der ersten, 1978 von Doug Ilroy dokumentierten Version der Unix-Philosophie. Dort heißt es unter Punkt 2: „Don't insist on interactive input“ – „Bestehe nicht auf interaktive Eingaben.“ Auch Punkt 4: „Use Tools in preference to unskilled help to lighten a programming task“ – „Nutze Werkzeuge bevorzugt vor unerfahrener Hilfe, um eine Programmieraufgabe zu vereinfachen“ – lässt eine Präferenz für die Automatisierung erkennen.

Gemeinsamkeiten finden sich speziell auch in Punkt 3: „Design and build software, even operating systems, to be tried early“ – „Entwirf und baue Software sowie Betriebssysteme so, dass sie früh ausprobiert werden können.“; wenn sich auch die Interpretation von „early“ gewandelt hat. Hieß es 1978 noch „ideally within weeks“, erreichte die Einführung des DevOps-Konzepts 2009 bei flickr bereits 10 Auslieferungen am Tag.

Der „Continuous Delivery“-Ansatz verspricht sogar eine Softwarebereitstellung zu jedem beliebigen Zeitpunkt. IaC sichert in diesem Zusammenhang eine ausreichend schnelle und skalierbare Konfiguration der neu ausgelieferten Software, muss aber schon bei der Software-Entwicklung zumindest so weit berücksichtigt werden, dass der Einsatz durch das Softwaredesign nicht verhindert wird. Eine ausschließlich interaktiv konfigurierbare Applikation wäre beispielsweise unzugänglich für eine automatisierte Installation und Administration mittels Konfigurationsmanagementsoftware.

Kein DevOps ohne IaC – kein IaC ohne DevOps

Die Verknüpfung von Development und Operations für einen effizienteren Ressourceneinsatz erfordert Mittel, die eine Automatisierung von Bereitstellung und Management der IT-Infrastruktur ermöglichen. Geeignete Mittel sind in der Software-Entwicklung bereits vorhanden. Umgekehrt setzt die Interpretation von Infrastruktur als Quelltext eine enge Zusammenarbeit zwischen der Software-Entwicklung und dem Betrieb der IT-Infrastruktur voraus.

Einerseits muss das Betriebs-Team für die Bereitstellung und die Administration mit Werkzeugen der Software-Entwicklung vertraut sein. Andererseits die Entwicklung den Einsatz von Konfigurationsmanagement- und Automatisierungstools beim Software-Design vorsehen. Als Gewinn stellt die Umsetzung des Konzepts Infrastructure as Code gesteigerte Performance, Kostenreduktion und Risikominimierung durch den Ausschluss von Fehlerquellen in Aussicht.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Kubernetes-Monitoring über New Relic Infrastructure

Komplexität von Container Clustern reduzieren

Kubernetes-Monitoring über New Relic Infrastructure

Verlässt man sich bei Kubernetes vollständig auf die automatisierte Orchestrierung, führt dies mitunter zu weniger Kontrolle und Transparenz. Abhilfe kann die On-Host-Integration mit der New Relic Infrastructure schaffen. lesen

Microservice-Debugging unter AWS

Analyse von verteilten Anwendungen

Microservice-Debugging unter AWS

„Wir haben eine komplexe Microservices-Architektur in AWS aufgebaut und möchten diese gerne debuggen. Welche Empfehlungen und Services existieren für die Analyse von komplexen verteilten Systemen?“ lesen

Low-Code-Sicherheit in der Public Cloud

OutSystems startet Sicherheitsservice Sentry

Low-Code-Sicherheit in der Public Cloud

Der Low-Code-Anbieter OutSystems liefert mit Sentry einen Sicherheitsdient für sein Public-Cloud-Angebot. Neben Intrusion Detection und Zugriffskontrolle gehört dazu der Rund-um-die-Uhr-Support durch ein Security Operations Center. lesen

Container helfen beim Testen verteilter Software

Testing Infrastructure as Code

Container helfen beim Testen verteilter Software

Der Einsatz von Containern vereinfacht nicht nur das produktive Deployment verteilter Software-Komponenten. Auch beim Erstellen einer Testinfrastruktur bietet die Technologie völlig neue Möglichkeiten. lesen

Was ist Puppet?

Definition „Puppet (Software)“

Was ist Puppet?

Puppet ist ein Open-Source-Projekt mit Enterprise-Unterstützung. Das Admin-Tool erlaubt die automatisierte Konfiguration von Computern und Servern sowie der darauf installierten Dienste. Das Einsatzfeld reicht vom Einzel-Server bis hin zu großen Rechner-Verbundsystemen. lesen

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation, Teil 4

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation erlaubt es, Infrastruktur nach dem „Infrastructure as Code“-Prinzip per JSON- oder YAML-Vorlagen zu definieren. Mit dem Tool CloudFormer lassen sich bereits vorhandene Ressourcen zwecks einfacherer Reproduzierung sogar in CloudFormation-Vorlagen konvertieren. lesen

Serverless Computing unter OpenShift

Red Hat integriert OpenWhisk-Technologie

Serverless Computing unter OpenShift

Auf Basis von Apache OpenWhisk will Red Hat die OpenShift-Plattform um Serverless-Computing-Funktionen erweitern. Das Function-as-a-Service-Angebot wird dabei in Konkurrenz zu Amazon und Google positioniert. lesen

Was ist SaltStack?

Definition „Salt“

Was ist SaltStack?

Das DevOps-Toolset SaltStack oder kurz Salt dient der automatisierten Steuerung und Überwachung die Infrastruktur. Die Orchestrierung von Cloud-Ressourcen, Containern und virtuellen Servern ist dabei ebenso möglich wie manuelle Remote-Ausführung und Konfigurationsmanagement. lesen

Red Hat stärkt Cloud-native Development

Eclipse Che 2018 und OpenShift.io

Red Hat stärkt Cloud-native Development

Red Hat kündigt zwei Neuerungen an: SaaS-Plattform OpenShift.io wird frei zugänglich, die Container-Entwicklungsumgebung Eclipse Che fest ins Portfolio integriert. Beide Lösungen sollen den Schritt hin zur Entwicklung in der Cloud vereinfachen. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45368704 / Definitionen)