Coden statt konfigurieren

Starr oder veränderbar

von - 21.08.2020
Eine weitere Grundsatzentscheidung betrifft die Art der IaC-Infrastruktur, sprich ob sie variabel (mutable) oder unveränderlich (immutable) sein soll. Der Vorteil des variablen Ansatzes: Eine Entwicklungsabteilung kann beispielsweise die Parameter der IaC-Umgebung an geänderte Anforderungen anpassen, etwa indem sie einen Server mit mehr Rechenleistung oder ein Storage-System mit einer größeren Speicherkapazität konfiguriert. Doch dies kann dazu führen, dass inkonsistente Versionen einer IT-Infrastruktur entstehen und der Aufwand für die Versionskontrolle steigt.
Daher greifen Anwender vorzugsweise zu einer immu­table IaC-Infrastruktur. Das heißt aber nicht, dass diese inflexibel ist. Denn Infrastructure as Code heißt, dass Nutzer bei Bedarf mit geringem Aufwand eine neue, angepasste Umgebung erstellen können. Bedingung ist, dass das Unternehmen Zugang zu Cloud-Technologien und Ansätzen wie Software-
defined Data Center hat: „IaC setzt die Cloud-Technologie voraus“, betont Andreas Jaekel, Head of PaaS Development bei IONOS & Strato. „Wo eine Cloud zum Einsatz kommt, werden mit ziemlicher Sicherheit auch Virtualisierung und Software-defined Networking verwendet.“
Sohin Roy
Sohini Roy
Produktmanagerin bei Canonical
https://canonical.com
Foto: Canonical
„Nach unserer Erfahrung muss der Einsatz von Infrastructure as Code für Anwender keinesfalls eine Herausforderung darstellen oder gar abschreckend sein.“

Auch für „normale“ Data-Center

Infrastructure as Code ist jedoch nicht einer Public oder Private Cloud vorbehalten. „Ich selbst verwende IaC in einer abgemilderten Form auf meinem Notebook“, berichtet beispielsweise Gerald Pfeifer von SUSE. „Es gibt keinen Grund, IaC auf eine Public Cloud zu beschränken.“ Jede Infrastruktur im IT-Umfeld kommt seiner Einschätzung nach für diese Technologie infrage. Allerdings gibt es dabei einige Dinge zu beachten, betont Georg Ember von IBM: „Alles, was für Cloud-Computing entwickelt wurde, und dazu gehört IaC, lässt sich auch ‚On-prem‘, also in einem Firmen­rechenzentrum einsetzen. Das hängt aber von der verwendeten Hardware ab.“ So kommen in Unternehmens-Data-Centern oft andere Systeme zum Einsatz als in einem Cloud-Rechenzentrum. 
Beispiele sind große virtuelle Server, virtualisierte Speichercontroller (SVC) und Tape-Technologien. „Will ein Unternehmen selbst entwickelte IaC-Konzepte durchgängig verwenden, also parallel im eigenen Data-Center und in einer Pu­blic Cloud, ist es ratsam, eine Software-definierte Ebene (SDE) zu verwenden. Diese kann von VMware stammen oder Red Hat kann sie mit OpenShift beisteuern.“
Die SDE sollte sich in beiden Umgebungen ähnlich verhalten und sich möglichst auf dieselbe Weise installieren und warten lassen.
Anbieter von Plattformen und Tools für Infrastructure as Code (Auswahl)

Anbieter

Produkt

Details

AWS

AWS CloudFormation

Tool für Modellierung und Implementierung von Infrastrukturressourcen in Clouds; Automatisierung durch Bereitstellung von Infrastruktur-Ressourcen in wiederholbarer Form; Bereitstellung von Ressourcen über mehrere Accounts und Regionen hinweg möglich; seit Mai 2020 in AWS CodeDeploy integriert, um inkrementelle Datenverkehrsmigrationsstrategie umzusetzen

AWC Cloud Development Kit (CDK)

Software-Entwicklungs-Framework für die Definition von Software-Stacks und der dazugehörigen Hard-ware-Ressourcen; Support von Python, Java, Javascript, .NET, Typescript; CDK erzeugt aus dem Sourcecode ein Template für AWS CloudFormation

Canonical

Cloud-Init

Open-Source-Software für den Start von Services auf VM-Hosts in Cloud-Umgebungen; Beispiele: Einrichten von Directories, Nutzern und speziellen Software-Paketen; Automatisierung durch mehrfach verwendbare Workloads und Templates

Juju

Implementierungs-Tool für Infrastruktur in Public und Private Clouds; Skripte, mit denen sich einzelne Infrastruktur-Komponenten implementieren lassen; inklusive rollenbasierter Zugriffskontrolle (RBAC); keine Software-Agenten nötig

Chef

Chef Effortless Infrastructure Engine

Tool für Configuration Management; integrierte Compliance- und Security-Funktionen, etwa Sicherheitstests; großer Funktionsumgang, aber relativ komplexe Architektur; vor allem bei CI/CD-Fachleuten beliebt; Anbindung an andere IaC-Plattformen wie Terraform möglich

Google

Google Deployment Manager

Cloud-Service für die automatische Bereitstellung und das Management von IT-Ressourcen auf der Google Cloud Platform; Anforderungen, etwa bezüglich Datenbanken oder Servern, werden in Konfigurationsdatei definiert und mit Deployment Manager erstellt und verwaltet; Unterstützung von Confi Files (YAML) und Templates (Python, Jinja2); Funktion für Simulation der Auswirkungen von Implementierungen und Änderungen

Hashicorp

Hashicorp Terraform

IaC-Framework für automatisiertes IT-Ressourcenmanagement; Funktionen für Planung und Erstellen von IaC-Templates; weitreichende Automatisierungs- und Versionierungsfunktionen; Nutzung derselben Konfigurationen in unterschiedlichen Umgebungen; Basis: Hashicorp Configuration Language (HCL); kein Einsatz von Clients/Server erforderlich; unterstützt Cloud-Umgebungen aller Art

Packer

Werkzeug, mit dem sich Virtual-Machine-Images erstellen lassen, inklusive aller Anwendungen, Libraries und Konfigurationseinstellungen; Einsatzfeld vor allem Erstellen von Images kompletter IT-Systeme

Vagrant

Open-Source-Tool für Erstellen und Management von Virtual Machines; Einsatzgebiet: Software-Verteilung in Entwicklungsumgebungen; Basis sind deklarative Konfigurations-Files; ähnliche Vorgehensweise bei dem Aufsetzen von Docker-Containern

IBM

IBM Cloud Schematics

Bereitstellung der IaC-Plattform Terraform als Cloud-Service; auch Einsatz in Unternehmensrechenzentren möglich; Organisation von IBM-Cloud-Ressourcen mit Hilfe von Arbeitsbereichen, die mit Github-Repositories verbunden sind; Nutzung eigener IaC-Templates oder von Standard-Terraform-Vorlagen

IBM/Red Hat

Ansible

Management von Infrastrukturinstanzen in Cloud-Umgebungen mit Playbooks; diverse Orchestrierungsaufgaben (Einspielen von Hotfixes/Updates im laufenden Betrieb); Option, eigene Module zu entwickeln

Inedo

Otter

Tools für automatisierte Bereitstellung und Konfigurationsmanagement von Servern; Basis: mehrfach verwendbare Konfigurations-Templates; kontiniuierliches Prüfen von Servern auf Konfigurationsänderungen; Dashboard mit Überblick über Status aller Server; hohe Skalierbarkeit; Speicherung von Log-Daten für Audits

IONOS Cloud

Data Center Designer

Grafischer IaC-Editor für das Zusammenstellen eines virtuellen Rechzenzentrums in der IONOS-Cloud; Zusammenstellen von Infrastrukturkomponenten mittels Drag and Drop auf einem Whiteboard, etwa Servern, Storage, Firewalls, Switches und Load-Balancing-Systemen

Microsoft

Azure Resource Manager

Implementierungs- und Management-Service, der auf Azure-Services zugeschnitten ist; Option: Verwaltung von Ressourcen in Form von Gruppen statt als individuelle Infrastruktur-Services; Einsatz deklarativer Templates auf Basis von JSON anstelle von Skripten; zentrales Dashboard für Monitoring von Releases und Builds

Northern Tech

CFEngine

Tool für Konfigurationsmanagement mit langer Historie; unterstützt Verwaltung komplexer IT-Infrastrukturen; Compliance-Funktionen; sowohl als Open-Source- als auch kommerzielle Software verfügbar; automatisches Einspielen von Updates und Änderungen; basiert auf Software-Agents

Pulumi

Pulumi SDK

Open-Source-Tool (Software Development Kit) für Aufsetzen, Implementierung und Verwaltung von Infrastrukturressourcen in Cloud-Umgebungen; Unterstützung von Kubernetes, Containern und Serverless Computing; in Public, Private und Hybrid Clouds verwendbar; unterstützte Programmiersprachen: Node.js, Python, .NET Core, Go

Puppet

Puppet

Werkzeug auf Basis von Client-/Server-Modell für Konfigurationsmanagement; Software-Agenten auf Zielsystemen erforderlich; Überprüfung des Sicherheits- und Compliance-Status von Konfigurationen und der Auswirkung von Code-Änderungen; große Community

Saltstack

Saltstack Enterprise

Tools für automatisierte Verwaltung und Konfiguration von IT-Infrastrukturen; Basis: Python; erhältlich als kostenfreie Open-Source-Version und kostenpflichtige Enterprise Edition; Basis: Client-/Server-Modell; SSH-Modus für Betrieb ohne Software-Agenten; über Salt Cloud Unterstützung von IT-Ressourcen in Cloud-Umgebungen

SUSE

SUSE Manager

System- und Infrastrukturverwaltung für Linux-Systeme in Unternehmens-Data-Centern und Cloud-Umgebungen; Automatisierung von Bereitstellung, Patching und Konfiguration von Linux-Servern, Containern und Virtual Machines

Verwandte Themen