Überblick
Mit IaC (Infrastructure as Code) wird die Infrastruktur durch Code – und nicht durch manuelle Prozesse – verwaltet und provisioniert.
Mit IaC werden Konfigurationsdateien erstellt, die Ihre gesamten Infrastrukturspezifikationen enthalten, wodurch Sie Konfigurationen einfacher bearbeiten und verteilen können. Es stellt außerdem sicher, dass Sie jedes Mal dieselbe Umgebung provisionieren. Indem Ihre Konfigurationsspezifikationen kodifiziert und dokumentiert werden, unterstützt IaC das Konfigurationsmanagement und hilft Ihnen, undokumentierte Ad-hoc-Änderungen der Konfiguration zu vermeiden.
Ein wichtiger Bestandteil von IaC ist die Versionskontrolle. Wie jede andere Software-Quellcodedatei sollten auch Ihre Konfigurationsdateien der Quellkontrolle unterliegen. Durch die Bereitstellung Ihrer Infrastruktur als Code können Sie Ihre Infrastruktur auch in modulare Komponenten aufteilen, die dann durch Automatisierung auf unterschiedliche Weise kombiniert werden können.
Durch eine automatisierte Infrastrukturprovisionierung mit IaC müssen Server, Betriebssysteme, Storage und andere Infrastrukturkomponenten von den Entwicklerinnen und Entwicklern nicht jedes Mal, wenn diese eine Anwendung entwickeln oder bereitstellen, manuell provisioniert und verwaltet werden. Durch die Codierung Ihrer Infrastruktur erhalten Sie eine Vorlage, der Sie bei der Provisionierung folgen können. Dieser Vorgang kann zwar immer noch manuell durchgeführt werden, aber ein Automatisierungstool wie Red Hat® Ansible® Automation Platform kann die Aufgabe für Sie übernehmen.
Deklarativer und imperativer IaC-Ansatz im Vergleich
Es gibt zwei verschiedene IaC-Ansätze: einen deklarativen und einen imperativen IaC-Ansatz.
Bei einem deklarativen 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.
Außerdem wird eine Liste der aktuellen Zustände Ihrer Systemobjekte geführt, wodurch das Herunterfahren der Infrastruktur einfacher zu managen ist.
Bei einem imperativen Ansatz hingegen werden die konkreten Befehle definiert, 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 stellen die gewünschte Infrastruktur automatisch bereit. 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 sind oft für beide Ansätze geeignet, wobei meist ein Ansatz besser funktioniert.
Vorteile von IaC
Die Provisionierung von Infrastruktur war in der Vergangenheit ein zeitaufwändiger und kostspieliger manueller Prozess. Auch wenn physische Hardware in Rechenzentren vielleicht noch ein Bestandteil Ihrer Organisation ist, so hat sich das Infrastrukturmanagement heute mehr auf Virtualisierung, Container und Cloud Computing verlagert.
Durch Cloud Computing ist die Zahl der Komponenten einer Infrastruktur gestiegen, und täglich werden weitere Anwendungen für die Produktion freigegeben. Außerdem muss eine Infrastrukturen heute in der Lage sein, häufig hochgefahren, skaliert und wieder heruntergefahren zu werden. Ohne eine etablierte IaC-Praktik wird es zunehmend schwieriger, den Umfang einer modernen Infrastruktur zu managen.
Mit IaC kann Ihre Organisation IT-Infrastrukturanforderungen besser managen, für mehr Konsistenz sorgen sowie Fehler und manuelle Konfigurationen reduzieren.
Vorteile:
- Geringere Kosten
- Schnellere Deployments
- Weniger Fehler
- Bessere Infrastrukturkonsistenz
- Keine Konfigurationsabweichungen
Ausweitung der IaC-Strategie (Infrastructure as Code) auf Day 2
Basierend auf der strategischen Grundlage von Infrastructure as Code (IaC) beginnen Unternehmen, diese Methoden zu nutzen, um IT-Prozesse in den verschiedenen Phasen des operativen Lifecycles 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 den Betrieb während des gesamten Entwicklungs-Lifecycles zu verfolgen.
IaC Tools
Für IaC können häufig Tools für die Serverautomatisierung und das Konfigurationsmanagement genutzt werden. Daneben gibt es auch Lösungen, die speziell für IaC entwickelt wurden.
Einige beliebte Produkte sind:
- Chef
- Puppet
- Red Hat Ansible Automation Platform
- Saltstack
- Terraform
- AWS CloudFormation
Mit der Ansible Automation Platform lassen sich Betriebssysteme und Netzwerkgeräte provisionieren, Anwendungen bereitstellen und die Konfiguration managen.
Warum ist IaC für DevOps von Bedeutung?
IaC ist ein wichtiger Teil der Implementierung von DevOps-Praktiken und CI/CD (Continuous Integration/Continuous Delivery). Durch IaC wird den Entwicklern der Großteil der Provisionierungsarbeit abgenommen. Sie können ihre Infrastruktur betriebsbereit machen, indem sie ein Skript ausführen.
Auf diese Weise werden Anwendungs-Deployments nicht durch Warten auf die Infrastruktur aufgehalten, und Systemadministratoren müssen keine zeitaufwändigen manuellen Prozesse managen.
CI/CD baut auf eine kontinuierliche Automatisierung und Überwachung in allen Phasen des Anwendungs-Lifecycles, von der Integration und Tests bis hin zu Bereitstellung und Deployment.
Damit eine Umgebung automatisiert werden kann, muss sie konsistent sein. Die Automatisierung der Anwendungsbereitstellung funktioniert nur, wenn die Methoden der Entwickler- und Operations-Teams für das Bereitstellen von Anwendungen oder das Konfigurieren von Umgebungen identisch sind.
Wenn sich Entwickler- und Operations-Team mithilfe eines DevOps-Ansatzes abstimmen, lassen sich Fehler, manuelle Deployments und Inkonsistenzen reduzieren.
Mit IaC können Sie beide Teams aufeinander abstimmen, da beide die gleiche Beschreibung der Anwendungsbereitstellung nutzen können, was einen DevOps-Ansatz unterstützt.
Dabei sollte für jede Umgebung, auch für Ihre Produktivumgebung, derselbe Deployment-Prozess verwendet werden. IaC generiert dieselbe Umgebung – jedes Mal.
Durch IaC entfällt auch die Notwendigkeit, individuelle Deployment-Umgebungen mit speziellen Konfigurationen zu warten, die nicht automatisch reproduziert werden können. Außerdem stellt IaC sicher, dass die Produktivumgebung konsistent bleibt.
Bewährte DevOps-Praktiken werden auch auf die Infrastruktur in IaC angewendet. Eine Infrastruktur kann dieselbe CI/CD-Pipeline durchlaufen wie eine Anwendung während der Softwareentwicklung. Dabei werden die gleichen Tests und die gleiche Versionskontrolle auf den Infrastrukturcode angewendet.
Unternehmensautomatisierung mit DevOps-Methoden
Eine Checkliste mit praktischen Schritten und Best Practices für die Implementierung der Automatisierung.
Warum Red Hat für die Automatisierung?
Mit einem unternehmensweiten Ansatz können Sie nicht nur IT-Prozesse, sondern ganze Technologien, Teams und Organisationen automatisieren.
Die Red Hat® Ansible® Automation Platform umfasst alle erforderlichen Tools zur Implementierung einer unternehmensweiten Automatisierung, darunter Playbooks, eine event-gesteuerte Lösung, ein visuelles Dashboard sowie Analysen. Außerdem verwendet die Ansible Automation Platform Webhooks, um IaC-Workflows zu automatisieren und GitOps-Praktiken zu ermöglichen.
Mit Ansible Playbooks, die in YAML programmiert sind, beschreiben Sie den gewünschten Zustand Ihrer Systeme, die normalerweise der Quellcodeverwaltung unterliegen. Die Ansible Automation Platform übernimmt die Aufgabe, Ihre Systeme in den gewünschten Zustand zu versetzen, und zwar unabhängig vom aktuellen Status.
Mit der Ansible Automation Platform können Sie Ihre Installationen, Upgrades sowie die täglichen Verwaltungsaufgaben wiederholbar und zuverlässig gestalten.
Mit der geeigneten Automatisierungslösung können Sie die Bereitstellung neuer Anwendungen und Services beschleunigen, die Effizienz des IT-Infrastrukturmanagements verbessern und die Produktivität der App-Entwicklung erhöhen.