
Aktuelle IT-Infrastrukturen müssen sich an der heute geforderten zunehmenden Agilität des Settings, der Sicherheit der IT-Systeme und der Skalierbarkeit der Architektur messen lassen. Die IT-Abteilung muss also den zunehmenden Innovationsdruck meistern und zugleich den Fachkräftemangel und einen erhöhten Zeitaufwand durch die manuelle Konfiguration von Systemen schultern.
Geht das überhaupt? Gibt es für diese scheinbar nicht handhabbaren Anforderungen eine gangbare Lösung?
Das Konzept von Infrastructure as Code ähnelt den Programmierskripten, die zur Automatisierung von IT-Prozessen verwendet werden. Skripte werden jedoch in erster Linie dazu verwendet, eine Reihe statischer Schritte zu automatisieren, die auf mehreren Servern mehrfach wiederholt werden. Infrastructure as Code verwendet eine übergeordnete Sprache, um vielseitigere und anpassungsfähigere Bereitstellungsprozesse zu codieren.
Zum Beispiel können die Infrastructure-as-Code-Fähigkeiten, die in Konfigurationswerkzeuge enthalten sind, einen MySQL-Server installieren, überprüfen, ob MySQL ordnungsgemäß läuft, ein Benutzerkonto und ein Kennwort erstellen, eine neue Datenbank einrichten und nicht benötigte Datenbanken entfernen.
Der Prozess der codebasierten Infrastrukturautomatisierung ähnelt der Softwaredesignpraxis, bei der Entwickler die Codeversionen sorgfältig kontrollieren, Iterationen testen und den Einsatz einschränken, bis die Software erprobt und für die Produktion freigegeben ist.
Vorteile von Infrastructure as Code
Softwareentwickler können Code für die Bereitstellung und den Einsatz von IT-Infrastruktur und Anwendungen verwenden, anstatt sich in einer DevOps-Umgebung auf Systemadministratoren verlassen zu müssen. Ein Entwickler kann einen Infrastructure-as-Code-Prozess schreiben, um eine neue Anwendung zur Qualitätssicherung oder zum experimentellen Einsatz bereitzustellen und zu implementieren, bevor der Betrieb für den Live-Einsatz in der Produktion übernommen wird.
Wenn das Infrastruktur-Setup als Code geschrieben ist, kann es die gleiche Versionskontrolle, automatisiertes Testen und andere Schritte einer Pipeline für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) durchlaufen, die Entwickler für Anwendungscode verwenden.
Ein Unternehmen kann sich dafür entscheiden, Infrastructure as Code mit Containern zu kombinieren, die die Anwendung von der Infrastruktur auf Betriebssystemebene abstrahieren. Da das Betriebssystem und die Hardwareinfrastruktur automatisch bereitgestellt und die Anwendungen darauf gekapselt werden, erweisen sich diese Technologien als komplementär für verschiedene Bereitstellungsziele wie Test, Staging und Produktion.
Trotz ihrer Vorteile birgt Infrastructure as Code potenzielle Nachteile…
…oder gewisse Herausforderungen. Es erfordert zusätzliche Tools, wie zum Beispiel ein Konfigurationsmanagementsystem, das Lernkurven und Raum für Fehler bietet.
Jegliche Fehler können sich schnell über die gesamte Infrastruktur ausbreiten, daher ist es unerlässlich, die Versionskontrolle zu überwachen und umfassende Vorabtests durchzuführen.
Wenn Administratoren Konfigurationen außerhalb der festgelegten Infrastructure-as-Code-Templates ändern, kann es zu einem sogenannten Konfigurationsdrift kommen. Es ist daher wichtig, Infrastructure as Code vollständig in die Systemadministration, den IT-Betrieb und die DevOps-Praktiken mit gut dokumentierten Richtlinien und Verfahren zu integrieren.
Die Herausforderung
Alles auf der Welt hat bedingt Nachteile – aber viel wichtiger ist die Herausforderung, die IaC mit sich bringt, zu bewältigen.
Die Nutzung von infrastrukturnaher Programmierung und die Entwicklung von Software-Paketen, die die Automatisierung von wiederkehrenden, in Teilen oftmals statischen Aktionen beispielsweise im Netzwerk ermöglichen, ist ein wichtiger Faktor, um die Effizienz der Netzwerk-Infrastrukturen zu erhöhen und deren Administration zu vereinfachen. Automatisierte Prozesse innerhalb der Netzwerke, die auf Basis von Software modelliert werden, erhöhen darüber hinaus die Möglichkeiten auf Veränderungen reagieren zu können. Diese Veränderungen können beispielsweise aus den operativen Abläufen heraus entstehen, aber auch durch veränderte Geschäftsanforderungen oder Geschäftsprozesse ausgelöst sein.
Ansätze und Methoden
Infrastructure-as-Code-Tool können deklarativ und imperativ sein.
Ein deklarativer Programmierungsansatz umreißt den gewünschten, beabsichtigten Zustand der Infrastruktur, nennt aber nicht explizit die Schritte zum Erreichen dieses Zustands. SQL ist eine allgemein bekannte deklarative Programmiersprache. Auch AWS Cloud-Formation Templates oder Ansible Playbooks werden zum Beispiel im deklarativen Stil von Infrastructure as Code geschrieben.
Im Gegensatz dazu definiert ein imperativer Ansatz Befehle, die es der Infrastruktur ermöglichen, den gewünschten Zustand zu erreichen. Objektorientierte Sprachen, wie C++ und Java, können für die imperative Programmierung verwendet werden.
Bei beiden Ansätzen wird Infrastructure as Code auf einem Template konfiguriert, wobei der Benutzer die für jede Komponent ein der zu betrachtenden Infrastruktur benötigten Ressourcen angibt. Das Template wird verwendet, um entweder zu verifizieren, dass ein System richtig konfiguriert ist, oder um es in die entsprechende Konfiguration zu bringen.
Infrastructure as Code Tools
Infrastructure as Code Tools konfigurieren und automatisieren die Bereitstellung der Infrastruktur. Diese Tools können die Bereitstellung von Infrastruktur mit Orchestrierungsfunktionalität automatisch ausführen. Sie können auch zuvor bereitgestellte Systeme konfigurieren und überwachen.
Infrastructure as Code Tools erzwingen das Setup aus dem Template über Push- oder Pull-Methoden. Bei der Push-Methode sendet ein zentralisierter Server die gewünschte Konfiguration an ein bestimmtes System oder bestimmte Systeme. Die Pull-Methode wird durch eine Anfrage an einen zentralisierten Server von einem System oder mehreren Systemen in der Infrastruktur initiiert.
Die Tools sind in der Regel standardmäßig für die Push- oder Pull-Bereitstellung von Code ausgelegt, können aber für bestimmte Instanzen eingerichtet werden, um das jeweils andere zu tun. Diese Tools sollten auch in der Lage sein, Änderungen am Code rückgängig zu machen, wie im Falle unerwarteter Probleme bei einer Aktualisierung.
Beispiele für Infrastructure as Code Tools sind AWS Cloud-Formation, Red Hat Ansible, Chef, Puppet, SaltStack und HashiCorp Terraform. Einige Tools basieren auf einer domänenspezifischen Sprache (DSL), während andere ein Standard-Template-Format verwenden, wie zum Beispiel YAML und JSON.
Der Einstieg in diese softwaregestützte Infrastruktur-Modellierung bzw. „Infrastructure as Code“ ist für viele Netzwerk-Abteilungen und die IT-Verantwortlichen jedoch oftmals schwierig umzusetzen.
Die erforderlichen Vorgehensweisen müssen erst entwickelt werden und die Mitarbeiter müssen sich die nötigen Kompetenzen aneignen, Werkzeuge identifizieren und bedienen können. Erst dann kann die praktische Umsetzung der Mehrwerte der Software-Komponenten in realen Projekten erprobt werden.
Der Lösungsansatz
Durch die Unterstützung von erfahrenen IT-Beratern, die bereits mehrere infrastrukturnahe Software-Entwicklungen durchgeführt haben und dies in Projekten erfolgreich umsetzen konnten, kann die Lernkurve bei der Einführung und Umsetzung von Softwareentwicklungen effizienter und schneller durchschritten werden. Um sich der Thematik der Softwareentwicklung im Netzwerkbereich zu nähern, die Rahmenparameter und die Anforderungen bewerten zu können, unterstützt Controlware die Kunden mit abgestimmten Beratungsdienstleistungen. Controlware bietet den Kunden in der ersten Stufe dieser Dienstleistungen einen Einführungs- bzw. Orientierungsworkshop an.
Dieser Workshop wird in Form einer Onsite-Präsentation oder eines Webinars durchgeführt. Die Zielsetzung des Workshops ist die Vermittlung der im Zusammenhang mit der Softwareentwicklung für Netzwerk-Infrastrukturen gebräuchlichen Terminologien, der Markttrends sowie des technologischen Grundverständnisses für die Umsetzung von Softwareentwicklungsprojekten. Ein Überblick über mögliche Software-Werkzeuge und -Entwicklungskonzepte runden den Workshop ab. Als Ergebnis erhält der Kunde die Präsentationsunterlagen im PDF-Format zur internen weiteren Verwendung.

Schlagwörter: ControlwareInfrastructure as CodeNetzwerk