English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Eine Einführung in die Infrastruktur als Code

iaac
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Laut der Umfrage zum Accelerate State of DevOps 2019-Bericht gaben 80% der Befragten an, dass die von ihnen unterstützte primäre Anwendung oder der von ihnen unterstützte primäre Dienst auf einer Art Cloud-Plattform gehostet wurde. 50% der Befragten gaben an, dass ihre primäre Anwendung in der öffentlichen Cloud gehostet wurde.

Why Infrastructure as Code?

Wenn wir zurückblicken, als Sie einen Server wollten, würden Sie traditionell ein Ticket erheben, und jemand aus dem Ops-Team würde eine VM-Instanz erstellen oder einen physischen Server bestellen. Dies kann mithilfe von Skripten, Zeigen und Klicken oder sogar manueller Installation erfolgen.

Und dann würde es mit jeder Anfrage mehr VMs für DNS, Mail, Datenbanken usw. geben. Und dann gab es kontinuierliche Updates für die Betriebssysteme, Webserver, JVMs und alles andere. Im Laufe der Zeit hatten sie leicht unterschiedliche Konfigurationen (Konfigurationsdrift), was zu Schneeflockenservern führte. Und wenn etwas kaputt ging, war es eine Herausforderung zu verfolgen, welche Änderungen vorgenommen wurden.

Dies war immer noch akzeptabel, solange es nur wenige und langlebige Server gab.

Eine große Veränderung geschah mit der Ankunft von Cloud-Service Unternehmen wie AWS. Anstatt in Hardware und Rechenzentren zu investieren, haben viele Unternehmen begonnen, ihre Anwendungen in die Cloud zu verlagern. In der Cloud können Sie einen Server in wenigen Minuten bereitstellen, was früher Stunden oder sogar Tage dauern würde.

Um eine optimale Leistung und Verfügbarkeit zu gewährleisten, müssen Sie möglicherweise mehr Instanzen bereitstellen, um die Anforderungen zu erfüllen. Und später müssen Sie sie möglicherweise beenden, um Kosten zu sparen. Wenn Sie stundenweise bezahlen, müssen Sie möglicherweise jeden Tag nach oben oder unten skalieren. Dies mehrmals am Tag manuell zu tun, ist eindeutig eine Herausforderung.

Das Erfassen der Schritte zum Bereitstellen oder Beenden von Instanzen und anderen Infrastrukturkomponenten im Code ermöglicht die Automatisierung. Die Automatisierung bei der Bereitstellung von Clouds und Infrastrukturen kann dazu beitragen, Werte schneller und zuverlässiger bereitzustellen.

What is Infrastructure as Code?

Infrastruktur als Code (IaC) ist eine Infrastrukturautomatisierung unter Verwendung von Prinzipien und Praktiken der Softwareentwicklung.

Die Idee ist, dass Sie Ihre Infrastruktur wie Software behandeln und dann Code schreiben, testen und ausführen, um Ihre Infrastruktur zu definieren, bereitzustellen, zu aktualisieren und zu zerstören. Sie schreiben Code, um Ihre Server, Datenbanken, Netzwerke, Protokolle, Anwendungsbereitstellung und -konfiguration zu verwalten. Wenn Sie Änderungen an Ihrer Infrastruktur vornehmen möchten, nehmen Sie Änderungen am Code vor, testen ihn und wenden ihn dann auf Ihre Systeme an.

Benefits

Infrastruktur als Code bietet erhebliche Vorteile gegenüber der manuellen Bereitstellung:

Selbstbedienung

Da die Infrastruktur als Code definiert ist, kann der gesamte Prozess und die Bereitstellung automatisiert und von jedem in der Datenbank gestartet werden DevOps Mannschaft. Benutzer der Infrastruktur erhalten die Ressourcen, die sie benötigen, wenn sie sie benötigen.

Idempotenz

Idempotent zu sein bedeutet, dass Sie den gewünschten Status definieren. Unabhängig davon, wie oft Sie das Skript ausführen, ist das Ergebnis dasselbe. Es überprüft den aktuellen Status und den gewünschten Status und wendet nur die Änderungen an, die erforderlich sind. Dies kann mit Bash-Skripten äußerst schwierig sein.

Tools wie Ansible und Terraform haben eingebaute Funktionen, um Ihren Code idempotent zu machen.

Reduzierte Kosten

Reduziert den Zeit- und Arbeitsaufwand für die Bereitstellung, viel weniger als bei der manuellen Bereitstellung.

Schnellere Softwarebereitstellung

Durch die schnelle Bereitstellung der Infrastruktur für Entwicklung, Test und Produktion können Sie Software viel schneller bereitstellen. Da der Bereitstellungsprozess automatisiert ist, ist er auch konsistent und wiederholbar.

Selbstdokumentierend

Der Status der Infrastruktur wird in Code definiert, der für jeden leicht lesbar ist.

Versionskontrolliert

Änderungen an den Produktionssystemen gelten traditionell als riskant. Aber dann ist eine Veränderung unvermeidlich. Möglicherweise müssen Sie eine neue Datenbank hinzufügen, wenn Sie eine neue Funktion hinzufügen. Möglicherweise müssen Sie dem Cluster neue Server oder Speicher hinzufügen. Infrastruktur als Code reduziert den Aufwand und das Risiko von Änderungen an der Infrastruktur.

Sie können Ihre Quelldateien in der Versionskontrolle einchecken, dh Sie können alle an der Infrastruktur vorgenommenen Änderungen verfolgen und bei einem Fehler schnell zur vorherigen Version zurückkehren.

Validierung und Prüfung

Infrastruktur als Code ermöglicht das kontinuierliche Testen und Anwenden kleiner Änderungen. Da alles Code ist, können Sie mithilfe statischer Analysen und automatisierter Tests nach Fehlern suchen.

Verbesserte Sicherheit

Durch die Umstellung auf Infrastruktur als Code können Sie die Sicherheit von Anfang an einbetten und dann Änderungen zuverlässig und sicher anwenden.

Infrastructure as Code tools

Obwohl viele Tools verfügbar sind, ist die Auswahl eines Tools möglicherweise nicht einfach. Im Folgenden sind einige der Überlegungen aufgeführt, die Sie möglicherweise hilfreich finden:

Konfigurationsmanagement vs. Bereitstellungstools

Im Allgemeinen fallen die verfügbaren Tools in zwei Kategorien:

  • Konfigurationsverwaltungstools.
  • Bereitstellungstools

Konfigurationsverwaltungstools

Konfigurationsverwaltungstools dienen zum Verwalten von Benutzern sowie zum Installieren und Verwalten von Software und Tools auf vorhandenen Servern. KüchenchefIn, Marionette, Ansibleund SaltStack sind in erster Linie Konfigurationstools.

Infrastruktur als Tools zur Verwaltung der Codekonfiguration

Sie können Konfigurationsverwaltungstools verwenden, um die Software auf Servern zu installieren und zu aktualisieren.

Bereitstellungstools

Terraform, WolkenbildungOpenStack Heat hingegen sind Bereitstellungstools, mit denen Server, Datenbankserver, Load Balancer, Warteschlangen, Subnetze, Firewalls und alle anderen Komponenten Ihrer Infrastruktur erstellt werden. Diese Tools führen API-Aufrufe an Anbieter durch, um die erforderliche Infrastruktur zu erstellen.

Infrastruktur als Tools zur Codebereitstellung

Veränderliche oder unveränderliche Infrastruktur

Die veränderbare Infrastruktur kann nach ihrer Bereitstellung geändert werden. Chef, Ansible, Puppet & SaltStack dienen zum Installieren oder Aktualisieren der Software auf vorhandenen Servern. Dies kann während der Lebensdauer eines Servers viele Male passieren. Nach vielen Updates unterscheidet sich jeder Server wahrscheinlich ein wenig von anderen, was zu einer Verschiebung der Konfiguration führt. Beispielsweise funktionieren einige Änderungen, die auf Testservern problemlos funktionieren, möglicherweise nicht auf Produktionsservern.

Werkzeuge wie Terraform und Wolkenbildung dienen dazu, jedes Mal einen neuen Server aus einem Maschinen- oder Container-Image zu erstellen. Wenn die Server aktualisiert werden müssen, ersetzen Sie sie durch neue Server. Wenn die neuen Server aktiv sind, können Sie die alten Server beenden. Jede Bereitstellung verwendet ein unveränderliches Image, um einen Server zu erstellen, wodurch Konfigurationsdrift vermieden wird. Dies kann jedoch etwas langsam sein.

Imperative vs. deklarative Werkzeuge

Imperative Tools ähneln der Skripterstellung. Sie listen die Schritte auf, die unternommen werden müssen, um zum gewünschten Status zu gelangen. Mit deklarativen Werkzeugen können Sie den Endzustand angeben, und das Werkzeug arbeitet die Schritte aus, um diesen Zustand zu erreichen.

Während Chefkoch in erster Linie ein zwingendes Werkzeug ist, verwendet Ansible einen hybriden Ansatz und unterstützt sowohl zwingende als auch deklarative Techniken.

Terraform, CloudFormation, Puppet, OpenStack Heat und SaltStack gehören alle zur Kategorie der deklarativen Tools, in der Sie den gewünschten Endzustand deklarieren.

Mehrere Werkzeuge zusammen verwenden

Obwohl jedes dieser Tools für sich verwendet werden kann, besteht ein gängiger Ansatz darin, sie zusammen zu verwenden. Zum Beispiel können Sie verwenden Terraform Erstellen von VPCs, Subnetzen, Internet-Gateways, Load Balancern und VMs und anschließendes Konfigurieren und Bereitstellen von Diensten auf diesen Instanzen mithilfe von Ansible.

Fazit

Als Code definierte Infrastruktur bietet viele Vorteile gegenüber der manuellen Bereitstellung - sie kann versioniert, getestet, zu einer schnelleren Bereitstellung und Softwarebereitstellung geführt werden. Viele Unternehmen haben bereits begonnen, den IaC-Ansatz zum Aufbau und zur Verwaltung ihrer Infrastruktur anzuwenden.

Danke an unsere Sponsoren
Weitere großartige Lektüren zum Thema Cloud Computing
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder