Coden statt konfigurieren
Starr oder veränderbar
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össeren 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 immutable IaC-Infrastruktur. Das heisst aber nicht, dass diese inflexibel ist. Denn Infrastructure as Code heisst, 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.»
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.»
“Nach unserer Erfahrung muss der Einsatz von Infrastructure as Code für Anwender keinesfalls eine Herausforderung darstellen oder gar abschreckend sein.„
Sohini Roy, Produktmanagerin bei Canonical
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 Firmenrechenzentrum 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 grosse 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 Public 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; grosser Funktionsumgang, aber relativ komplexe Architektur; vor allem bei CI/CD-Fachleuten beliebt; Anbindung an andere IaC-Plattformen wie Terraform möglich |
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 |
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; grosser Funktionsumgang, aber relativ komplexe Architektur; vor allem bei CI/CD-Fachleuten beliebt; Anbindung an andere IaC-Plattformen wie Terraform möglich |
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 |