Was ist 'Infrastruktur als Code' (Infrastructure as Code)?
Vereinfacht ausgedrückt bedeutet Infrastructure as Code ( IaC ) die Verwendung von Code zur Verwaltung und Bereitstellung von Infrastruktur (Netzwerke, virtuelle Maschinen, Load-Balancer, Cluster, Dienste und Verbindungstopologie) in einem beschreibenden Modell anstelle manueller Prozesse.
Mit IaC, definieren Konfigurationsdateien Ihre Infrastruktur, was auch die Bearbeitung, gemeinsame Nutzung und Wiederverwendung von Konfigurationen erleichtert. Durch die Kodifizierung Ihrer Infrastruktur stellen Sie jedes Mal dieselbe Umgebung bereit, wenn Sie nicht dokumentierte Ad-hoc-Konfigurationsänderungen vermeiden.
Schematics nutzt Open-Source Ansible und Terraform, um eine leistungsfähige Gruppe von IaC-Tools als Service für die Programmierung Ihrer Cloudinfrastruktur bereitzustellen. Mit Schematics können Sie diese umfangreiche Gruppe von IaC-Automatisierungsfunktionen verwenden, um Stacks von Cloudressourcen zu erstellen, ihren Lebenszyklus zu verwalten, Änderungen an ihren Konfigurationen zu verwalten, Ihre App-Workloads bereitzustellen und day-2-Operationen auszuführen.
Vorteile von Infrastructure as Code
Die Einführung eines IaC Ansatzes für die Infrastrukturbereitstellung löst viele gängige Probleme bei der Bereitstellung von Infrastruktur und bietet mehrere Vorteile. Schematics ermöglicht es Ihnen, diese Vorteile zu nutzen, ohne dass Sie Ihre eigenen IaC Tools installieren, ausführen und verwalten müssen.
-
Zuverlässigkeit und Konsistenz: Neue Umgebungen oder Infrastruktur werden zuverlässig bereitgestellt. Manuelle Prozesse führen zu Fehlern. Mit IaC werden dieselben Konfigurationen immer und immer wieder implementiert, ohne Unterschiede. IaC verbessert die Konsistenz zwischen Umgebungen und Implementierungen.
-
Geschwindigkeit: IaC ermöglicht Ihnen die schnelle Einrichtung Ihrer gesamten Infrastruktur durch Automatisierung. Sie wenden es auf alle Umgebungen an, von der Entwicklung bis zur Produktion, Staging, Qualitätssicherung und mehr. Dies kann zu geringeren Kosten führen, da die Zeit für die Implementierung, Verwaltung und Verwaltung von Umgebungen abnimmt.
-
Verfolgung und Verantwortlichkeit: Änderungen an der vorhandenen Infrastruktur werden im Code vorgenommen und die Änderungen werden verfolgt. Wie jede Quellcodedatei verfügen Sie über die vollständige Rückverfolgbarkeit der an einer Konfiguration vorgenommenen Änderungen.
-
Umgebungsabweichung erkennen und korrigieren: Wenn ein Teil der Infrastruktur manuell außerhalb des Codes geändert wird, kann er bei der nächsten Ausführung wieder in den gewünschten Status versetzt werden. Die Abweichungserkennung ist ein Feature der Arbeitsbereiche von Schematics.
Bewährte Verfahren
Bei der Einführung von IaC für die Bereitstellung und das Konfigurationsmanagement gibt es eine Reihe von empfohlenen Verfahren. Diese Praktiken werden bei der Verwendung von Schematics vollständig unterstützt.
Alles in IaC kodifizieren
Alle Infrastruktur-Spezifikationen sollten explizit in einer Konfigurationsdatei kodiert werden, zum Beispiel als Terraform-Konfigurationen oder Ansible playbooks. Die Konfigurationsdateien sind die einzige Wahrheitsquelle Ihrer Infrastrukturspezifikation und beschreiben, welche Infrastrukturkomponenten in ihrer Konfiguration verwendet werden?
Dokumentation minimieren
IaC ist die Dokumentation. Mit IaC stellen die Konfigurationsdateien die Dokumentation dar und sind immer aktuell, was den Aufwand reduziert. Die übrige Dokumentation bezieht sich auf den Prozess. Code in einem Versionssteuerungssystem verwalten.
IaC-Konfigurationsdateien sollten in einem Versionssteuerungssystem (VCS) wie GitHub oder GitLabaufbewahrt werden. Dies stellt ein Prüfprotokoll für Codeänderungen bereit, bietet aber auch die Möglichkeit, zusammenzuarbeiten oder Änderungen zu prüfen und zu testen, bevor sie in den Live-Modus wechseln.
Mit diesem Verfahren können Sie potenzielle Änderungen an Ihren Systemen ohne großen Aufwand verfolgen, verwalten und zurücksetzen-mit verbesserter Rückverfolgbarkeit und Transparenz.
Testen
Eine der Praktiken, die IaC von der Softwareentwicklung übernommen hat, ist das Testen. Rigorose Tests der Infrastrukturkonfiguration spielen eine Rolle bei der Reduzierung von Problemen nach der Implementierung. In Kombination mit Versionssteuerungssystemen können Tests automatisch ausgelöst werden, wenn der Code geändert wird.
Mit Continuous Integration (CI) kann die Konfiguration der Vorlageninfrastruktur in mehreren Umgebungen wie development, UAT, QA oder production mit minimalen Änderungen effektiv implementiert
werden.
Modulare Infrastruktur
Die Aufteilung der Infrastruktur in Module ermöglicht Wiederverwendung, verbesserte Zuverlässigkeit und einen einfacheren Übernahmepfad. Ähnlich der Verwendung von Modulen und Paketen in Programmiersprachen. Im Folgenden sind die Vorteile dieses Verfahrens aufgeführt.
- Häufig verwendete Konfigurationen können als Module codiert und in Umgebungen mehrfach wiederverwendet werden.
- Die Zuverlässigkeit steigt, da Module getestet und im Laufe der Zeit mit dem Einsatz gehärtet werden können.
- Die Zusammensetzung aus wiederverwendbaren Modulen senkt die Qualifikationsbarriere für die IaC-Akzeptanz.
- Änderungen sind einfacher auf Modulebene vorzunehmen und zu testen.
- Das Änderungsrisiko verringert sich, wenn Konfigurationsänderungen lokalisiert werden.
Nutzung der Terraform IBM Module
Terraform IBM Module(TIM) bieten produktionsfertige, wiederverwendbare Infrastrukturkomponenten, die speziell für IBM Cloud entwickelt wurden. Diese Module folgen den Best Practices für Infrastructure-as-Code und reduzieren die Komplexität der Bereitstellung gängiger IBM Cloud Dienste erheblich.
Erkunden Sie die Terraform IBM Module, um vorgefertigte Module für VPC-Infrastruktur, Sicherheitsdienste, Beobachtbarkeit und mehr zu entdecken. Jedes Modul wird von IBM Cloud Experten gründlich getestet und gewartet, um Zuverlässigkeit und die Einhaltung bewährter Sicherheitsverfahren zu gewährleisten.
Deklarative im Vergleich zu imperativen Ansätzen für IaC
Bei der Einführung von IaC, ist ein Aspekt, der zu berücksichtigen ist, welcher Ansatz bei den Werkzeugen verfolgt wird. Es gibt zwei verschiedene Stile, deklarativ oder zwingend, auch manchmal als prozedurale beschrieben.
Ein deklarativer Ansatz definiert den Sollstatus des Systems, einschließlich der Ressourcen, die Sie benötigen, und aller Eigenschaften, die sie haben sollten, und das Tool konfiguriert für Sie. Das Tool selbst bestimmt die Operationen, um von einem beliebigen Ausgangspunkt in den gewünschten Status zu gelangen.
Ein unbedingter Ansatz definiert stattdessen die spezifischen Befehle, die für die gewünschte Konfiguration erforderlich sind, und diese Befehle müssen dann in der richtigen Reihenfolge ausgeführt werden.
Chef wird als ein zwingendes Werkzeug angesehen. Terraform wird als deklarativ eingestuft. Ansible ist deklarativ, kann aber auch mit imperativen Befehlen verwendet werden.
Deklaratives Terraform-und Lifecycle-Management
Schematics unterstützt sowohl Terraform als auch Ansible als IaC Tools mit Schematics Arbeitsbereichen und Aktionen. Wenn Lebenszyklusmanagement wichtig ist und Umgebungen regelmäßig auf- und abgebaut werden, empfiehlt sich die Verwendung von Terraform mit Schematics workspaces. Terraform speichert den aktuellen Status Ihrer bereitgestellten Cloud-Infrastruktur und Schematics kann Ihre Infrastruktur in umgekehrter Reihenfolge der Abhängigkeiten ohne manuelle Eingriffe entfernen.
Idempotence
Ein Vorteil des deklarativen Ansatzes von Terraform und Ansible ist idempotence. Idempotent-Aufgaben können mehrfach mit demselben Endergebnis ausgeführt werden. Unabhängig vom vorherigen Status oder Startort beim Neustart nach
Fehlern sind die bereitgestellte Infrastruktur und die Konfiguration immer identisch. Dieser Aspekt ist der Schlüssel zur Gewährleistung der Konsistenz und Wiederholbarkeit von Umgebungen, die mit Schematics bereitgestellt werden.
Die Verwendung eines Tools und der verwendeten Module haben Auswirkungen auf idempotency. Im Allgemeinen werden Terraform-und Ansible-Module als idempotent geschrieben. Mit beiden Tools können wir Code schreiben, der kein idempotentes
Ergebnis liefert. In diesem Fall kann die Konfiguration vom Sollzielstatus abweichen. Bei Terraform ist diese Form der Drift wahrscheinlich, wenn null-resources verwendet werden, um die Providerfunktionalität mit angepassten
Scripts zu erweitern, die nicht idempotent sind.
Die Unveränderlichkeit ist ein IaC-Verfahren, das das Risiko einer Abweichung vom Zielstatus minimiert.
Unveränderlich
Eine unveränderliche Infrastruktur bezieht sich auf die Verwaltung von Services und Softwareimplementierungen, bei denen Ressourcen wie Container oder virtuelle Maschinen ersetzt und nicht geändert werden (mithilfe von Scripts). Der Hauptwunsch hier nach Unveränderlichkeit ist die Vermeidung von Konfigurationsdrift. Inkonsistenzen, die durch lokale oder manuelle Änderungen oder Unterschiede in der Reihenfolge automatisierter Operationen entstehen. Änderungen, die es schwieriger machen, Probleme zu debuggen und zu beheben und die Supportkosten zu erhöhen
Um die Unveränderlichkeit zu gewährleisten und Abweichungen zu beseitigen, sollten alle Änderungen über die Schematics IaC-Konfiguration vorgenommen und Ressourcen wie VSIs erneut bereitgestellt werden, wenn sie aktualisiert werden müssen.
Nächste Schritte
Jetzt, wo Sie mehr über IaC, wissen, sollten Sie die Verwendung von IaC in Schematics überprüfen:
- Weitere Informationen zu den Open-Source-Tools in Schematics
- Erkunden Sie diese Anwendungsfälle.
- Beschleunigen Sie die Bereitstellung mit Terraform IBM Modules(TIM)