Was ist IaC (Infrastructure as Code)?

URL kopieren

Mit IaC (Infrastructure as Code) wird die Infrastruktur durch Code – und nicht durch manuelle Prozesse – verwaltet und provisioniert.

Mit IaC lassen sich Konfigurationsdateien erstellen, die Ihre Infrastrukturspezifikationen enthalten, wodurch sich Konfigurationen einfacher bearbeiten und verteilen lassen. Außerdem wird so dafür gesorgt, dass Sie stets dieselbe Umgebung provisionieren. Durch das Kodifizieren und Dokumentieren Ihrer Konfigurationsspezifikationen unterstützt IaC das Konfigurationsmanagement und hilft Ihnen, undokumentierte, ad hoc vorgenommene Konfigurationsänderungen zu vermeiden.

Mehr über das Automatisieren Ihrer Infrastruktur-Workflows erfahren

Versionskontrolle und Automatisierung

Die Versionskontrolle ist ein wichtiger Bestandteil von IaC. Ihre Konfigurationsdateien sollten daher wie andere Software-Quellcode-Dateien unter Quellcodeverwaltung stehen. Das Deployment Ihrer Infrastructure as Code bedeutet auch, dass Sie Ihre Infrastruktur in modulare Komponenten aufteilen können, die dann durch Automatisierung auf unterschiedliche Weise kombiniert werden können.

Durch Automatisieren der Infrastruktur-Provisionierung mit IaC müssen Entwicklungsteams nicht mehr beim Entwickeln oder Bereitstellen einer Anwendung manuell Server, Betriebssysteme, Storage und andere Infrastrukturkomponenten bereitstellen und verwalten. Die Kodifizierung der Infrastruktur bietet Ihnen eine Vorlage für die Provisionierung. Dies kann zwar immer noch manuell durchgeführt werden, ein Automatisierungstool wie Red Hat® Ansible® Automation Platform kann dies jedoch für Sie erledigen.

Für IaC gibt es 2 hilfreiche Ansätze:

Bei einem deklarativen IaC-Ansatz wird der gewünschte Zustand des Systems definiert, einschließlich der benötigten Ressourcen und deren Eigenschaften, und dann von einem IaC-Tool für Sie konfiguriert. 

Bei einem deklarativen Ansatz wird auch der aktuelle Zustand Ihrer Systemobjekte erfasst, wodurch die Verwaltung der Infrastruktur vereinfacht wird.

Ein imperativer IaC-Ansatz definiert die spezifischen Befehle, die zum Erreichen der gewünschten Konfiguration benötigt werden. Diese Befehle müssen dann in der richtigen Reihenfolge ausgeführt werden. 

Viele IaC-Tools verwenden einen deklarativen Ansatz und provisionieren die gewünschte Infrastruktur automatisch. Wenn Sie Änderungen am gewünschten Zustand vornehmen, wendet ein deklaratives IaC-Tool diese automatisch für Sie an. Bei einem imperativen Tool müssen Sie selbst herausfinden, wie diese Änderungen angewendet werden sollen.

IaC-Tools können in beiden Ansätzen eingesetzt werden, zeigen jedoch in der Regel eine Tendenz zu einem der beiden Ansätze.

Guide zu Infrastructure as Code lesen

Red Hat Ressourcen

Die Provisionierung der Infrastruktur war bislang ein zeitaufwendiger und kostspieliger manueller Prozess. Virtualisierung, Container und Cloud Computing sind zur Norm geworden, und auch das Infrastrukturmanagement hat sich von der physischen Hardware in Rechenzentren entfernt. Dies bietet viele Vorteile, bringt aber auch neue Herausforderungen mit sich.

Mit Cloud Computing ist die Anzahl der Infrastrukturkomponenten gestiegen, täglich werden mehr Anwendungen für die Produktion freigegeben. Infolgedessen muss die Infrastruktur häufig hochgefahren, skaliert und wieder heruntergefahren werden. Ohne IaC-Praktiken wird es immer schwieriger, den Umfang moderner Infrastrukturen zu managen.

IaC kann Sie bei den Anforderungen Ihrer IT-Infrastruktur unterstützen, gleichzeitig die Konsistenz verbessern und Fehler sowie manuelle Konfigurationen reduzieren.

Vorteile der Einführung von Infrastructure as Code:

  • Reduzierte Kosten
  • Beschleunigtes Deployment
  • Weniger Fehler
  • Verbesserte Konsistenz der Infrastruktur
  • Verminderter Konfigurationsdrift

Ausweitung der IaC-Strategie auf Day 2-Operationen

Aufbauend auf der strategischen Basis von IaC nutzen Unternehmen diese Praktiken zunehmend, um IT-Prozesse in den einzelnen Phasen des operativen Lifecycle zu automatisieren. 

So wie IaC die Entwicklung, Bereitstellung und Implementierung von Infrastrukturen standardisiert, können IT-Teams OaC (Ops as Code) einsetzen, um das Management und die Verwaltung von Systemen nach deren Implementierung zu kodifizieren. Dieser Ansatz kann dann zu Policy as Code (PaC) erweitert werden, um Governance-, Risiko- und Compliance-Prozesse für Anwendungen und Lösungen zu automatisieren.

Mit den Erfahrungen, die bei der Automatisierung von IaC gewonnen wurden, können IT-Teams dieselben Methoden und Tools nutzen, um einen effizienteren, anpassungsfähigeren Ansatz für Day 2-Operationen zu verfolgen.

Ausweitung von IaC zu PaC

Tools für das Serverautomatisierungs- und Konfigurationsmanagement beschleunigen und optimieren die Einführung von IaC. Es gibt auch Lösungen speziell für IaC. 

Zu den gängigen Tools und Technologien für die IaC-Optimierung gehören:

Die Implementierung von IaC mithilfe eines Automatisierungstools kann Sie auch dabei unterstützen, effizientere und produktivere Workflows zu erstellen und die Einführung einer NetOps-Methodik zu optimieren. Umfassende Plattformen wie Ansible Automation Platform provisionieren Betriebssysteme und Netzwerkgeräte, stellen Anwendungen bereit und verwalten Konfigurationen in verschiedenen Unternehmensumgebungen.

Grundlagen von Ansible erlernen

Infrastructure as Code hat sich zu einem Eckpfeiler moderner IT-Abläufe und DevOps entwickelt und bietet eine Vielzahl realer Anwendungen in verschiedenen Branchen. Wichtige Use Cases und Beispiele für IaC umfassen:

  • Automatisiertes Deployment von Webanwendungen: Eine der häufigsten und wirkungsvollsten Anwendungen von IaC ist die Definition und Provisionierung der für eine Webanwendung erforderlichen Komponenten, einschließlich virtueller Maschinen, Datenbanken, Load Balancer, Firewalls und Netzwerkkonfigurationen.
  • Cloud Deployment: Sie können IaC verwenden, um ihre gesamte Cloud-Umgebung in einer oder mehreren Clouds einzurichten und zu managen. Mit IaC kodifizieren Sie die Cloud-Infrastruktur, um für eine präzise Ressourcenzuweisung, genaue Sicherheitseinstellungen und Compliance zu sorgen. So können Sie Cloud Operationen problemlos skalieren und gleichzeitig strenge Organisationsstandards einhalten.
  • CI/CD-Pipelines (Continuous Integration/Continuous Delivery): IaC ist ein wesentlicher Bestandteil bei der Automatisierung des Softwareentwicklungs-Lifecycles. Bei einem IaC-Ansatz behandeln Sie Infrastrukturänderungen wie Anwendungscode, um ihn der Versionskontrolle zu unterziehen, zu testen und automatisch als Teil von CI/CD-Pipelines bereitzustellen. Entwicklungsteams können Code in Umgebungen testen, die identisch mit der Produktivumgebung sind, wodurch schnellere und zuverlässigere Bereitstellungen ermöglicht werden.
  • Disaster Recovery und Hochverfügbarkeit: IaC verbessert die Disaster Recovery-Funktionen erheblich. Wenn wir Infrastructure as Code als in der Versionskontrolle gespeichert definieren, können wir im Falle eines katastrophalen Ausfalls ganze Umgebungen in einer anderen Region oder Cloud neu erstellen. Dadurch werden RTO (Recovery Time Objectives) und Ausfallzeiten reduziert und die Business Continuity sichergestellt.
  • Hybrid Cloud- und Multi Cloud-Umgebungen: In Hybrid Cloud- und Multi Cloud-Umgebungen werden unterschiedliche Infrastrukturen mithilfe von IaC auf einheitliche Weise verwaltet. Mit IaC-Tools können Sie Ressourcen in verschiedenen Umgebungen konsistent definieren und managen. Das gibt Ihnen Flexibilität und kann Ihre Kosten senken.
  • Automatisierung von Sicherheit und Compliance: IaC bindet Sicherheitskonfigurationen und Compliance-Regeln direkt in Infrastrukturdefinitionen ein. Deployments wenden daher automatisch Sicherheitsrichtlinien wie Firewall-Regeln, IAM-Rollen (Identity Access and Management) und Verschlüsselungseinstellungen an, anstatt sich auf eine manuelle Konfiguration zu verlassen. 

IaC ist ein wichtiger Teil der Implementierung von DevOps-Praktiken und CI/CD (Continuous Integration/Continuous Delivery). IaC reduziert den Aufwand für die Provisionierungsarbeit für Entwicklungsteams, die stattdessen ein Skript ausführen können, um die Infrastruktur bereitzustellen. So werden Anwendungsbereitstellungen nicht durch die Infrastruktur verzögert, und Systemadministrationsteams müssen keine zeitaufwendigen manuellen Prozesse managen. 

CI/CD basiert auf kontinuierlicher Automatisierung und Überwachung während des gesamten Anwendungs-Lifecycles, von der Integration und dem Testen bis hin zur Bereitstellung und zum Deployment. Damit eine Umgebung automatisiert werden kann, muss sie konsistent sein. Anwendungsbereitstellungen können nicht automatisiert werden, wenn das Entwicklungsteam Anwendungen auf eine bestimmte Weise bereitstellt oder konfiguriert und das Betriebsteam anders vorgeht.

Wenn sich Entwicklungs- und Operations-Teams durch einen DevOps-Ansatz abstimmen, lassen sich Fehler, manuelle Deployments und Inkonsistenzen reduzieren. Mit IaC können Sie Entwicklung und Betrieb aufeinander abstimmen, da beide Teams dieselbe Beschreibung der Anwendungsbereitstellung verwenden können, wodurch ein DevOps-Ansatz unterstützt wird.

Zur Maximierung der Implementierung von IaC sollten Sie für sämtliche Umgebungen, einschließlich Ihrer Produktivumgebung, denselben Deployment-Prozess verwenden. Da IaC stets dieselbe Umgebung generiert, entfällt die Notwendigkeit, individuelle Deployment-Umgebungen zu verwalten. Die Vermeidung einmaliger Konfigurationen, die nicht automatisch reproduziert werden können, sorgt für die Konsistenz der Produktivumgebung.

Sie können Best Practices für DevOps auch auf die Infrastruktur in IaC anwenden. Die Infrastruktur kann dieselbe CI/CD-Pipeline durchlaufen wie eine Anwendung bei der Softwareentwicklung, wobei dieselben Tests und Versionskontrollen auf den Infrastrukturcode angewendet werden.

Wie bei den meisten technischen Einführungen, die einen kulturellen Wandel mit sich bringen, beginnt eine erfolgreiche IaC-Implementierung mit einem stufenweisen Ansatz und klaren Zielen. Wenn Teams klein mit einer nicht kritischen Komponente oder Umgebung anfangen, können sie lernen und Vertrauen gewinnen, bevor sie komplexere Systeme in Angriff nehmen. Definieren Sie klare Geschäftsziele wie die Senkung von Kosten oder die Beschleunigung des Deployments, damit Teams ihren Erfolg während der gesamten Implementierung messen können. 

Best Practices für einen IaC-Ansatz

Eine grundlegende Best Practice beim Einführen eines IaC-Ansatzes besteht darin, die Infrastruktur wie Anwendungscode zu behandeln. Dies bedeutet die Anwendung von Best Practices wie:

  • Versionskontrolle für alles nutzen: Dies fördert die kollaborative Entwicklung, das Nachverfolgen von Änderungen und das Rollback auf frühere stabile Zustände. Innerhalb der Versionskontrolle empfiehlt es sich, Verzweigungsstrategien (wie Feature-Verzweigungen), Peer-Code-Reviews (über Pull-Anfragen) und aussagekräftige Commit-Meldungen zu verwenden.
  • Infrastruktur modular und wiederverwendbar gestalten: Teilen Sie die Infrastruktur in ihre kleinsten, wiederverwendbaren Komponenten auf. Dadurch können Sie Duplizierung reduzieren, die Verwaltbarkeit verbessern und das Verständnis und die Verwaltung in verschiedenen Projekten und Umgebungen erleichtern.
  • Tests automatisieren: Integrieren Sie IaC mit den Tests, die Sie normalerweise für Anwendungscode durchführen würden, in eine CI/CD-Pipeline, damit Infrastrukturänderungen vor dem Deployment validiert werden.
  • Konfigurationsdrift reduzieren: Versuchen Sie, nach Möglichkeit eine „unveränderliche Infrastruktur“ zu schaffen: Anstatt Änderungen an bestehenden Servern vorzunehmen, stellen Sie neue Server mit der jeweiligen aktualisierten Konfiguration bereit und entfernen die alten. Dies kann Konfigurationsdrift erheblich reduzieren und Rollbacks vereinfachen.
  • Klare Rollen, Zuständigkeiten und Genehmigungs-Workflows definieren für Änderungen an IaC: Implementieren Sie PaC, um Governance-, Risiko- und Compliance-Prozesse für Anwendungen und Lösungen zu automatisieren.

Herausforderungen bei der Einführung von IaC

Die Einführung von IaC kann häufige und besondere Herausforderungen mit sich bringen:

  • Die Automatisierung manueller Abläufe kann sich als sehr komplex erweisen: IaC-Tools und -Konzepte können für Teams, die an manuelle Abläufe gewöhnt sind, einen Lernprozess bedeuten. Dies kann zu Widerstand und verlangsamter Einführung führen. Der Übergang von manuellen Konsoleninteraktionen zum Code erfordert eine umfassende Denkweise.
  • Sicherheitsschwachstellen: Hartkodierte Secret-Informationen, zu permissive IAM-Rollen in Vorlagen oder Schwachstellen in Basis-Images können sich leicht in Ihrer Infrastruktur propagieren und Sicherheitsrisiken mit sich bringen.
  • Fehlende Standardisierung: Ohne klare Richtlinien kann es vorkommen, dass Teams IaC auf uneinheitliche Weise implementieren, was zu fragmentierten Praktiken, Code-Duplizierung und Wartungsproblemen führt. Dies zeigt sich häufig in unterschiedlichen Namenskonventionen, Modulstrukturen oder Deployment-Patterns.
  • Kultureller Widerstand: Die Einführung einer so umfassenden Strategie wie IaC stellt ein Unternehmen vor die Herausforderung, tief sitzende Gewohnheiten zu überwinden und eine Code-First-Denkweise zu fördern. Sie erfordert eine starke Akzeptanz durch die Führungskräfte, eine kontinuierliche Kommunikation von Vorteilen und eine Kultur, die das Experimentieren und Lernen fördert.
  • Debuggen einer komplexen Pipeline: IaC reduziert zwar Fehler, aber auftretende Fehler zu beheben, ist möglicherweise schwieriger zu beheben als diejenigen, die bei manuellen Prozessen auftreten. Dies gilt insbesondere für Teams, für die IaC neu ist.
  • Verwaltung von Legacy-Infrastruktur: Die Integration von IaC in bestehende Legacy-Infrastrukturen kann komplex und zeitaufwendig sein, da sie häufig Reverse Engineering oder schrittweises Refactoring erfordert.

Mit einem unternehmensweiten Ansatz können Sie nicht nur IT-Prozesse, sondern ganze Technologien, Teams und Organisationen automatisieren. 

Red Hat Ansible Automation Platform umfasst die Tools, die zur Implementierung einer unternehmensweiten Automatisierung benötigt werden, darunter Playbooks, ein visuelles Dashboard, eine Event-gesteuerte Lösung sowie Analysen. Außerdem verwendet sie Webhooks, um IaC-Workflows zu automatisieren und GitOps-Verfahren zu ermöglichen.

Mit Ansible Playbooks, die in YAML programmiert sind, beschreiben Sie den gewünschten Zustand Ihrer Systeme, die normalerweise der Versionskontrolle unterliegen. Ansible Automation Platform übernimmt die Aufgabe, Ihre Systeme in den gewünschten Zustand zu versetzen, und zwar unabhängig vom aktuellen Status. 

Mit Ansible Automation Platform können Sie Installationen, Upgrades sowie die täglichen Verwaltungsaufgaben wiederholbar und zuverlässig gestalten.

Mit einer Subskription für Ansible Automation Platform können Sie neue Anwendungen und Services schneller bereitstellen, die IT-Infrastruktur effizienter verwalten und die Produktivität bei der Anwendungsentwicklung steigern. Außerdem erhalten Sie Zugang zu zertifizierten Inhalten durch unser robustes Partnernetzwerk, gehostete Management-Services und technischen Lifecycle-Support, damit Ihre Teams Automatisierung im gesamten Unternehmen erstellen, verwalten und skalieren können.

Mehr über Red Hat Ansible Automation Platform erfahren

 

Die integrierten Funktionen von Red Hat Ansible Automation Platform wirken wie ein sofort einsatzbereiter Beschleuniger. Sie sind der De-facto-Standard, den auch viele unserer Anbieter und Partner zum Schreiben von Skripts nutzen, um ihre Technologie zu installieren, zu konfigurieren und zu verwalten.

Story ansehen

Hub

Der offizielle Red Hat Blog

Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.

Red Hat Testversionen

Unsere kostenlosen Testversionen unterstützen Sie dabei, praktische Erfahrungen zu sammeln, sich auf eine Zertifizierung vorzubereiten oder zu bewerten, ob ein Produkt die richtige Wahl für Ihr Unternehmen ist.

Weiterlesen

Was ist ein Webhook? Event-Driven API-Automatisierung

Lernen Sie, was Webhooks sind und wie sie automatisierte, eventgesteuerte API-Aktionen auslösen – für schnelle Reaktionen und effiziente Systemintegration.

Red Hat Ansible Automation Platform: Deployment-Optionen

Erfahren Sie, wie Sie die Red Hat Ansible Automation Platform flexibel in der Cloud oder On-Premise bereitstellen – gemanagt oder selbst-gemanagt.

Was ist Even-Driven Automation? IT-Workflow-Automatisierung

Erfahren Sie, wie Sie mit eventgesteuerte Automatisierung effektiver auf sich ändernde Bedingungen reagieren und so wiederholende Routineaufgaben reduzieren.

Ressourcen zu Automatisierung und Management

Ausgewähltes Produkt

  • Red Hat Ansible Automation Platform

    Eine Plattform für die Implementierung unternehmensweiter Automatisierung - unabhängig davon, in welcher Phase der Automatisierung Sie sich befinden.

Verwandte Artikel