Startseite

Themen

Infrastruktur als Code

Siehe "Was ist Infrastructure as Code?"
Schwarzer und blauer Hintergrund
infrastructure-as-code

Infrastructure as Code (IaC) automatisiert die Bereitstellung der Infrastruktur und ermöglicht es Ihrem Unternehmen, Cloud-Anwendungen mit höherer Geschwindigkeit, geringerem Risiko und geringeren Kosten zu entwickeln, bereitzustellen und zu skalieren.

Warum Infrastructure as Code (IaC)?

Infrastructure as Code (IaC) verwendet eine übergeordnete beschreibende Codierungssprache um die Einrichtung der IT\-Infrastruktur automatisieren . Diese Automatisierung macht es für Entwickler überflüssig, Server, Betriebssysteme, Datenbankverbindungen, Speicher und andere Infrastrukturelemente jedes Mal manuell bereitzustellen und zu verwalten, wenn sie eine Softwareanwendung entwickeln, testen oder bereitstellen möchten.

In einer Zeit, in der es für ein Unternehmen nicht ungewöhnlich ist, jeden Tag Hunderte von Anwendungen in der Produktion bereitzustellen – und in der die Infrastruktur als Reaktion auf die Anforderungen von Entwicklern und Benutzern ständig hoch- und heruntergefahren, heruntergefahren und skaliert wird – ist es für ein Unternehmen unerlässlich, die Infrastruktur zu automatisieren, um Kosten zu kontrollieren, Risiken zu reduzieren. und reagieren schnell auf neue Geschäftsmöglichkeiten und Wettbewerbsbedrohungen. IaC macht diese Automation möglich.

IaC ist auch eine wesentliche DevOps-Praxis, die für einen wettbewerbsfähigen Softwarebereitstellungslebenszyklus unerlässlich ist. Es ermöglicht DevOps-Teams, die Infrastruktur schnell auf die gleiche Weise zu erstellen und zu versionieren, wie sie den Quellcode versionieren, und diese Versionen zu verfolgen, um Inkonsistenzen zwischen IT-Umgebungen zu vermeiden, die zu ernsthaften Problemen während der Bereitstellung führen können..

Sai Vennam nimmt das Erscheinungsbild der IaC im folgenden Video "What is Infrastructure as Code?" genauer unter die Lupe:

Infrastruktur als Code Vorzüge

Die Bereitstellung herkömmlicher IT ist ein zeitaufwändiger und kostspieliger Prozess, der die physische Einrichtung der Hardware, die Installation und Konfiguration der Betriebssystemsoftware und die Verbindung zu Middleware, Netzen,, Speicher usw. durch Fachpersonal erfordert.

Virtualisierung und cloudnative Entwicklung beseitigen das Problem der physischen Hardwareverwaltung und ermöglichen es Entwicklern, ihre eigenen virtuellen Server oder Container bei Bedarf bereitzustellen. Die Bereitstellung einer virtualisierten Infrastruktur lenkt jedoch immer noch den Fokus der Entwickler von der Codierung ab, erfordert immer noch, dass sie die Bereitstellungsarbeit für jede neue Bereitstellung wiederholen, und bietet keine einfache Möglichkeit, Umgebungsänderungen zu verfolgen und Inkonsistenzen zu vermeiden, die sich auf Bereitstellungen auswirken.

Infrastructure as Code (IaC) ist der letzte Schritt, der es Entwicklern ermöglicht, eine vollständig dokumentierte, versionierte Infrastruktur durch Ausführen eines Skripts effektiv zu "bestellen". Die Vorzüge sind genau das, was Sie sich vorstellen können:

  • Schnellere Produktions-/Markteinführungszeit: Die IaC-Automatisierung beschleunigt den Prozess der Bereitstellung von Infrastruktur für Entwicklung, Tests und Produktion (und bei Bedarf für die Skalierung oder den Abbau der Produktionsinfrastruktur) erheblich. Da es alles kodifiziert und dokumentiert, kann IaC sogar die Einrichtung traditioneller Infrastruktur automatisieren , die sonst durch zeitintensive Prozesse gesteuert werden könnte (wie Ziehen eines Tickets).
  • Verbesserte Konsistenz – weniger "Konfigurationsabweichung": Konfigurationsabweichungen treten auf, wenn Ad-hoc-Konfigurationsänderungen und -aktualisierungen zu einer nicht übereinstimmenden Entwicklungs-, Test- und Bereitstellungsumgebung führen. Dies kann zu Problemen bei der Bereitstellung, Sicherheitslücken und Risiken bei der Entwicklung von Anwendungen und Diensten führen, die strenge gesetzliche Compliance-Standards erfüllen müssen. IaC verhindert Abweichungen, indem es jedes Mal die gleiche Umgebung bereitstellt..
  • Schnellere, effizientere Entwicklung :Durch die Vereinfachung der Bereitstellung und die Sicherstellung der Infrastrukturkonsistenz kann IaC jede Phase des Softwarebereitstellungslebenszyklus zuverlässig beschleunigen. Entwickler können rasch Sandkästen bereitstellen und kontinuierliche Integration/ zusammenhängende Bereitstellung (CI/CD) Umgebungen. QA kann schnell Full-Fidelity-Testumgebungen bereitstellen. Die Unternehmensaktivitäten können schnell eine Infrastruktur für Sicherheits- und Benutzerakzeptanztests bereitstellen. Und wenn der Code die Tests bestanden hat, können die Anwendung und die Produktionsinfrastruktur, auf der sie ausgeführt wird, in einem Schritt bereitgestellt werden.
  • Schutz vor Abwanderung: Um die Effizienz in Organisationen ohne IaC zu maximieren, wird die Bereitstellung in der Regel an einige wenige qualifizierte Ingenieure oder IT-Mitarbeiter delegiert. Wenn einer dieser Spezialisten die Organisation verlässt, müssen andere manchmal den Prozess rekonstruieren. IaC stellt sicher, dass die Bereitstellung von Informationen immer bei der Organisation verbleibt.
  • Niedrigere Kosten und verbesserter ROI: Neben der drastischen Reduzierung des Zeitaufwands, des Aufwands und der fachspezifischen Fähigkeiten, die für die Bereitstellung und Skalierung der Infrastruktur erforderlich sind, können Unternehmen mit IaC die nutzungsbasierte Kostenstruktur von Cloud Computing optimal nutzen. Es ermöglicht Entwicklern auch, weniger Zeit für Klempnerarbeiten und mehr Zeit für die Entwicklung innovativer, geschäftskritischer Software aufzuwenden.
Unveränderliche Infrastruktur vs. veränderlich Infrastruktur

Eine wichtige Entscheidung bei der Automatisierung der Infrastruktur mit Infrastructure as Code (IaC) und bei der Auswahl einer IaC-Lösung ist die Frage, ob eine veränderliche oder unveränderliche Infrastruktur eingerichtet werden soll.

Veränderliche Infrastruktur ist Infrastruktur , die geändert oder aktualisiert werden kann, nachdem sie ursprünglich bereitgestellt wurden. Die veränderliche Infrastruktur gibt Entwicklungsteams die Flexibilität, Ad-hoc-Serveranpassungen vorzunehmen, um beispielsweise den Entwicklungs- oder Anwendungsanforderungen besser gerecht zu werden oder auf ein aufkommendes Sicherheitsproblem zu reagieren. Es untergräbt jedoch auch einen wichtigen IaC-Vorteil – die Fähigkeit, die Konsistenz zwischen Bereitstellungen oder innerhalb von Versionen aufrechtzuerhalten – und kann die Verfolgung von Infrastrukturversionen erheblich erschweren.

Aus diesen Gründen werden die meisten IaC als unveränderliche Infrastruktur implementiert – Infrastruktur, die nach der ursprünglichen Bereitstellung nicht mehr geändert werden kann. Wenn unveränderliche Infrastruktur geändert werden muss, muss diese durch neue Infrastruktur ersetzt werden. Da neue Infrastrukturen schnell in der Cloud eingerichtet werden können – insbesondere mit IaC – ist eine unveränderliche Infrastruktur viel praktikabler und praktischer, als es sich anhört.

Unveränderliche Infrastruktur bringt IaC zu einem nächsten logischen Schritt, der IaC im Wesentlichen abhärtet, um die Vorteile, die es bietet, weiter zu gewährleisten. Das alles aber beseitigt Konfigurationsabweichung und macht es noch einfacher, Konsistenz zwischen Test - und Bereitstellungsumgebung zu verwalten. Es erleichtert auch die Wartung und Nachverfolgung von Infrastrukturversionen und das sichere Zurücksetzen auf irgendeine Version, wenn dies erforderlich ist.

Deklaratives vs. Imperatives Konzept

Bei der Wahl einer IaC-Lösung ist es auch wichtig, den Unterschied zwischen einem deklarativen und einem imperativen Konzept zur Infrastrukturautomation zu verstehen.

In den meisten Organisationen ist das deklarative Konzept — auch bekannt als das funktionale Konzept — die beste Lösung . .Beim deklarativen Ansatz geben Sie den gewünschten Endzustand der Infrastruktur an, die Sie bereitstellen möchten, und die IaC-Software übernimmt den Rest – das Hochfahren der virtuellen Maschine (VM) oder des Containers, das Installieren und Konfigurieren der erforderlichen Software, das Auflösen von System- und Softwareabhängigkeiten und das Verwalten der Versionskontrolle. Der größte Nachteil der deklarative Methode besteht darin, dass sie normalerweise einen erfahrenen Administrator benötigt, um sie zu installieren und zu betreiben , und diese Administratoren spezialisieren sich oft auf ihre bevorzugte Lösung .

Im imperativen Ansatz – auch als prozeduraler Ansatz bezeichnet – unterstützt Sie die Lösung bei der Vorbereitung von Automatisierungsskripts, die Ihre Infrastruktur Schritt für Schritt bereitstellen. Während dies bei der Skalierung mehr Arbeit zu bewältigen sein kann, kann es für vorhandene Verwaltungsmitarbeiter einfacher sein, sie zu verstehen und Konfigurationsskripts zu nutzen, die Sie bereits vorhanden haben.

Die Wahl eines deklarativen oder imperativen Konzepts ist analog zur Verwendung eines GPS oder zum Befolgen von Schritt-für-Schritt-Anweisungen. Mit einem GPS geben Sie eine Adresse ein und das GPS erledigt den Rest, indem es die schnellste Route aufzeichnet und den Verkehr für Sie vermeidet - aber Sie brauchen wahrscheinlich einen Experten, der Ihnen sagt, warum es die getroffenen Entscheidungen getroffen hat. Die Schritt-für-Schritt-Anweisungen basieren auf persönlichen Erfahrungen; der Anbieter kennt die Route und warum er sie gewählt hat, aber wenn Sie auf Hindernisse stoßen oder die Route optimieren möchten, müssen Sie um Hilfe rufen oder die Arbeit selbst erledigen.

Infrastruktur als Code Tools

Während viele quelloffene IaC-Tools verfügbar sind , sind die am häufigsten verwendeten Tools Ansible und Terraform:

Was ist Ansible?

Ansible  ( Mit diesem Link außerhalb von ibm.com) ist ein Open\-Source\-Community Projekt von Red Hat gesponsert, das ausgelegt ist , Organisationen zu helfen, die Bereitstellung, das Konfigurationsmanagement und die Anwendungsbereitstellung zu automatisieren. Mit Ansible, einem deklarativen Automatisierungstool, können Sie "Playbooks" (geschrieben in der YAML-Konfigurationssprache) erstellen, um den gewünschten Status für Ihre Infrastruktur anzugeben, und dann die Bereitstellung für Sie durchführen. Ansible is a vielfach eingesetzt Auswahl für automatisierende Einrichtung von Docker Containern undKubernetes Bereitstellungen.

Was ist Terraform?

Terraform ist ein weiteres deklaratives Bereitstellungs- und Infrastruktur-Orchestrierungstool, mit dem Ingenieure die Bereitstellung aller Aspekte ihrer Cloud-basierten und lokalen Unternehmensinfrastruktur automatisieren können.

Terraform arbeitet mit allen führenden Cloudanbietern zusammen und lässt Sie den Ressourcenausbau über mehrere Anbieter parallel automatisieren , egal wo physische Server,DNS-Server , oder Datenbanken liegen. Es kann auch Anwendungen bereitstellen, die in irgendeiner Sprache geschrieben wurden.

Im Gegensatz zu Ansible bietet Terraform keine Konfigurationsverwaltungsfunktionen, arbeitet jedoch Hand in Hand mit Konfigurationsmanagement-Tools (z. B. Cloud Formation), um die Infrastruktur automatisch in dem in den Konfigurationsdateien beschriebenen Zustand bereitzustellen und die Update-Bereitstellung bei Bedarf als Reaktion auf Konfigurationsänderungen automatisch zu ändern.

Weitere Informationen zur Auswahl eines IaC- Tool finden Sie unter "Infrastruktur als Code: Chef , Ansible, Puppet oder Terraform? "

Infrastruktur als Code und IBM Cloud

Die IaC-Funktionen von IBM, die anpassbare und gemeinsam nutzbare Vorlagen enthalten, können die Grundlage für die Modernisierung von Anwendungen bilden, unabhängig davon, wo Sie sich auf Ihrem Weg in die Cloud befinden.

Machen Sie den nächsten Schritt:

  • IBM Cloud Schematics basiert auf Terraform und ist eine vereinfachte Lösung für die Automatisierung des Infrastrukturmanagements und kann Unternehmen dabei unterstützen, die Anwendungsleistung durch konsistente Bereitstellung und Koordination zu steigern.
  • Sehen Sie, wie IaC das IBM DevOps Leistungsspektrum ergänzt.

Machen Sie noch heute die ersten Schritte mit einem IBM Cloudkonto.

Zugehörige Lösungen
Erstellen, implementieren und betreiben Sie Anwendungen.

Erstellen, modernisieren und verwalten Sie Anwendungen sicher und mit Vertrauen in jeder Cloud

Erkunden Sie die Erstellung, Modernisierung und Betreibung von Anwendungen.
DevOps Services on IBM Cloud

Erstellen, implementieren und verwalten Sie sichere cloudnative Anwendungen über mehrere Geräte, Umgebungen und Clouds hinweg mit DevOps Best Practices.

Mehr zu DevOps Services on IBM Cloud