Eine Einführung in das Konfigurationsmanagement

Einführung

Als allgemeineres Thema bezeichnet Configuration Management (CM) den Prozess des systematischen Umgangs mit Änderungen an einem System auf eine Weise, die die Integrität über einen längeren Zeitraum aufrechterhält. Auch wenn dieser Prozess nicht aus der IT-Branche stammt, wird der Begriff allgemein für * Serverkonfigurationsmanagement * verwendet.

Die Automatisierung spielt eine wesentliche Rolle beim Serverkonfigurationsmanagement. Dies ist der Mechanismus, der verwendet wird, um den Server in einen gewünschten Zustand zu versetzen, der zuvor durch die Bereitstellung von Skripten mithilfe der spezifischen Sprache und Funktionen eines Tools definiert wurde. Die Automatisierung ist in der Tat das Herzstück des Konfigurationsmanagements für Server. Aus diesem Grund werden Konfigurationsmanagement-Tools häufig auch als Automation Tools oder IT Automation Tools bezeichnet.

Ein weiterer gebräuchlicher Begriff zur Beschreibung der Automatisierungsfunktionen, die von Konfigurationsverwaltungstools implementiert werden, ist Server Orchestration oder IT Orchestration, da diese Tools in der Regel in der Lage sind, einen bis Hunderte von Servern von einem zentralen Controller aus zu verwalten.

Es gibt eine Reihe von Konfigurationsmanagement-Tools auf dem Markt. Marionette, Ansible, Chef und Salz sind populäre Wahlen. Obwohl jedes Tool seine eigenen Merkmale hat und auf leicht unterschiedliche Weise funktioniert, haben sie alle den gleichen Zweck: Sicherstellen, dass der Systemstatus mit dem Status übereinstimmt, der in Ihren Bereitstellungsskripten beschrieben wird.

Vorteile des Konfigurationsmanagements für Server

Obwohl die Verwendung des Konfigurationsmanagements in der Regel mehr anfängliche Planung und Aufwand erfordert als die manuelle Systemadministration, werden alle Serverinfrastrukturen mit Ausnahme der einfachsten durch die damit verbundenen Vorteile verbessert. Um ein paar zu nennen:

Schnelle Bereitstellung neuer Server

Jedes Mal, wenn ein neuer Server bereitgestellt werden muss, kann ein Konfigurationsverwaltungstool den meisten, wenn nicht sogar den gesamten Bereitstellungsprozess für Sie automatisieren. Durch die Automatisierung wird die Bereitstellung viel schneller und effizienter, da mühsame Aufgaben schneller und genauer ausgeführt werden können, als dies bei jedem Menschen der Fall ist. Selbst bei ordnungsgemäßer und gründlicher Dokumentation kann die manuelle Bereitstellung eines Webservers Stunden dauern, verglichen mit einigen Minuten mit Konfigurationsmanagement / -automatisierung.

Schnelle Wiederherstellung nach kritischen Ereignissen

Ein weiterer Vorteil der schnellen Bereitstellung ist die schnelle Wiederherstellung nach kritischen Ereignissen. Wenn ein Server aufgrund unbekannter Umstände ausfällt, kann es mehrere Stunden dauern, bis das System ordnungsgemäß überprüft und festgestellt wurde, was wirklich passiert ist. In solchen Szenarien ist die Bereitstellung eines Ersatzservers in der Regel die sicherste Methode, um Ihre Dienste wieder online zu schalten, während auf dem betroffenen Server eine detaillierte Überprüfung durchgeführt wird. Mit Konfigurationsmanagement und Automatisierung ist dies schnell und zuverlässig möglich.

Keine Schneeflockenserver mehr

Auf den ersten Blick scheint die manuelle Systemadministration eine einfache Möglichkeit zu sein, Server schnell bereitzustellen und zu reparieren. Oft ist sie jedoch mit einem Preis verbunden. Mit der Zeit kann es sehr schwierig werden, genau zu wissen, was auf einem Server installiert ist und welche Änderungen vorgenommen wurden, wenn der Prozess nicht automatisiert ist. Manuelle Hotfixes, Konfigurationsänderungen und Softwareupdates können Server in eindeutige Schneeflocken verwandeln, die schwer zu verwalten und noch schwieriger zu replizieren sind. Mithilfe eines Konfigurationsverwaltungstools wird das Verfahren zum Hochfahren eines neuen Servers oder zum Aktualisieren eines vorhandenen Servers in den Bereitstellungsskripten dokumentiert.

Versionskontrolle für die Serverumgebung

Sobald Sie Ihre Serverkonfiguration in einen Satz von Bereitstellungsskripten übersetzt haben, können Sie viele der Tools und Workflows, die Sie normalerweise für Software-Quellcode verwenden, auf Ihre Serverumgebung anwenden.

Tools zur Versionskontrolle, z. B. Git, können verwendet werden, um Änderungen an der Bereitstellung nachzuverfolgen und separate Zweige für ältere Versionen der Skripts zu verwalten. Sie können die Versionskontrolle auch verwenden, um eine Richtlinie zur Überprüfung des Codes für die Bereitstellungsskripts zu implementieren, in der alle Änderungen als Pull-Anforderung übermittelt und von einem Projektleiter genehmigt werden sollten, bevor sie akzeptiert werden. Diese Vorgehensweise verleiht Ihrem Infrastruktur-Setup zusätzliche Konsistenz.

Replizierte Umgebungen

Das Konfigurationsmanagement macht es einfach, Umgebungen mit genau der gleichen Software und Konfiguration zu replizieren. Auf diese Weise können Sie effektiv ein mehrstufiges Ökosystem mit Produktions-, Entwicklungs- und Testservern aufbauen. Sie können sogar lokale virtuelle Maschinen für die Entwicklung verwenden, die mit denselben Bereitstellungsskripten erstellt wurden. Diese Vorgehensweise minimiert Probleme, die durch Umgebungsunterschiede verursacht werden, die häufig auftreten, wenn Anwendungen für die Produktion bereitgestellt oder von Mitarbeitern mit unterschiedlichen Maschinensetups (unterschiedlichen Betriebssystemen, Softwareversionen und / oder Konfigurationen) gemeinsam genutzt werden.

Übersicht über Konfigurationsverwaltungstools

Obwohl jedes CM-Tool seine eigenen Begriffe, seine eigene Philosophie und sein eigenes Ökosystem hat, haben sie in der Regel viele gemeinsame Merkmale und ähnliche Konzepte.

Die meisten Konfigurationsverwaltungstools verwenden ein Controller- / Master- und ein Knoten- / Agentenmodell. Im Wesentlichen steuert der Controller die Konfiguration der Knoten anhand einer Reihe von Anweisungen oder Aufgaben, die in Ihren Bereitstellungsskripten definiert sind.

Im Folgenden finden Sie die gebräuchlichsten Funktionen der meisten Konfigurationsverwaltungstools für Server:

Automatisierungs-Framework

Jedes CM-Tool bietet eine bestimmte Syntax und eine Reihe von Funktionen, mit denen Sie Bereitstellungsskripten erstellen können. Die meisten Tools verfügen über Funktionen, die ihre Sprache den herkömmlichen Programmiersprachen ähneln, jedoch auf vereinfachte Weise. Variablen, Schleifen und Bedingungen sind allgemeine Funktionen, mit denen sich vielseitigere Bereitstellungsskripten erstellen lassen.

Idempotentes Verhalten

Konfigurationsverwaltungstools verfolgen den Status der Ressourcen, um zu vermeiden, dass Aufgaben wiederholt werden, die zuvor ausgeführt wurden. Wenn ein Paket bereits installiert wurde, versucht das Tool nicht, es erneut zu installieren. Das Ziel ist, dass das System nach jedem Bereitstellungslauf den gewünschten Status erreicht (oder beibehält), auch wenn Sie ihn mehrmals ausführen. Dies ist es, was diese Werkzeuge als ein unüberwindliches Verhalten auszeichnet. Dieses Verhalten wird jedoch nicht in allen Fällen erzwungen.

System-Fakten

Konfigurationsverwaltungstools bieten in der Regel detaillierte Informationen zum bereitgestellten System. Diese Daten sind über globale Variablen verfügbar, die als facts bezeichnet werden. Dazu gehören Netzwerkschnittstellen, IP-Adressen, Betriebssystem und Verteilung. Jedes Werkzeug bietet eine andere Menge von Fakten. Sie können verwendet werden, um Bereitstellungsskripten und -vorlagen für mehrere Systeme anpassungsfähiger zu machen.

Template-System

Die meisten CM-Tools bieten ein integriertes Template-System, mit dem sich Konfigurationsdateien und -dienste einfacher einrichten lassen. Vorlagen unterstützen normalerweise Variablen, Schleifen und Bedingungen, die zur Maximierung der Vielseitigkeit verwendet werden können. Sie können beispielsweise eine Vorlage verwenden, um auf einfache Weise einen neuen virtuellen Host in Apache einzurichten, während Sie dieselbe Vorlage für mehrere Serverinstallationen wiederverwenden. Anstatt nur fest codierte statische Werte zu haben, sollte eine Vorlage Platzhalter für Werte enthalten, die sich von Host zu Host ändern können, z. B. "+ NameServer " und " DocumentRoot +".

Erweiterbarkeit

Obwohl Bereitstellungsskripte sehr speziell auf die Anforderungen und Anforderungen eines bestimmten Servers zugeschnitten sein können, gibt es viele Fälle, in denen Sie ähnliche Serverkonfigurationen oder Teile einer Konfiguration haben, die von mehreren Servern gemeinsam genutzt werden können. Die meisten Bereitstellungstools bieten Möglichkeiten, mit denen Sie kleinere Teile Ihrer Bereitstellungseinrichtung problemlos als Module oder Plug-ins wiederverwenden und freigeben können.

Module und Plug-ins von Drittanbietern sind im Internet häufig leicht zu finden, insbesondere für gängige Server-Setups wie die Installation eines PHP-Webservers. CM-Tools sind in der Regel von einer starken Community umgeben, und Benutzer werden aufgefordert, ihre benutzerdefinierten Erweiterungen mit anderen zu teilen. Durch die Verwendung von Erweiterungen, die von anderen Benutzern bereitgestellt werden, können Sie viel Zeit sparen und gleichzeitig auf hervorragende Weise lernen, wie andere Benutzer häufig auftretende Probleme mit dem Tool Ihrer Wahl gelöst haben.

Auswählen eines Konfigurationsverwaltungstools

Auf dem Markt sind viele CM-Tools mit unterschiedlichen Funktionen und Komplexitätsstufen erhältlich. Beliebte Optionen sind Chef, Ansible und Puppet. Die erste Herausforderung besteht darin, ein Werkzeug zu wählen, das Ihren Anforderungen entspricht.

Es gibt ein paar Dinge, die Sie berücksichtigen sollten, bevor Sie eine Wahl treffen:

Komplexität der Infrastruktur

Für die meisten Konfigurationsverwaltungstools ist eine Mindesthierarchie erforderlich, die aus einem Controller und einem Knoten besteht, der von ihm verwaltet wird. Puppet erfordert beispielsweise, dass auf jedem Knoten eine agent -Anwendung und auf der Controllermaschine eine master -Anwendung installiert ist. Ansible verfügt hingegen über eine dezentrale Struktur, bei der keine zusätzliche Software auf den Knoten installiert werden muss, sondern SSH für die Ausführung der Bereitstellungsaufgaben erforderlich ist. Bei kleineren Projekten scheint eine vereinfachte Infrastruktur besser zu passen, es ist jedoch wichtig, Aspekte wie Skalierbarkeit und Sicherheit zu berücksichtigen, die vom Tool möglicherweise nicht erzwungen werden.

Einige Tools können mehr Komponenten und bewegliche Teile enthalten. Dies kann die Komplexität Ihrer Infrastruktur erhöhen, sich auf die Lernkurve auswirken und möglicherweise die Gesamtkosten der Implementierung erhöhen.

Lernkurve

Wie bereits in diesem Artikel erwähnt, bieten CM-Tools eine benutzerdefinierte Syntax, die manchmal eine domänenspezifische Sprache (Domain Specific Language, DSL) verwendet, sowie eine Reihe von Funktionen, aus denen das Framework für die Automatisierung besteht. Wie bei herkömmlichen Programmiersprachen erfordern einige Tools eine höhere Lernkurve, um beherrscht zu werden. Die Infrastrukturanforderungen können sich auch auf die Komplexität des Tools auswirken und darauf, wie schnell sich Ihre Investition rentiert.

Cost

Die meisten CM-Tools bieten kostenlose oder Open Source-Versionen mit kostenpflichtigen Abonnements für erweiterte Funktionen und Dienste. Einige Tools haben mehr Einschränkungen als andere. Abhängig von Ihren spezifischen Anforderungen und dem Wachstum Ihrer Infrastruktur müssen Sie möglicherweise für diese Services bezahlen. Sie sollten das Training auch als potenziellen zusätzlichen Kostenfaktor betrachten, nicht nur in finanzieller Hinsicht, sondern auch in Bezug auf die Zeit, die erforderlich ist, um Ihr Team mit dem Tool, das Sie am Ende auswählen, auf den neuesten Stand zu bringen.

Erweitertes Tooling

Wie bereits erwähnt, bieten die meisten Tools kostenpflichtige Services an, zu denen Support, Erweiterungen und erweiterte Tools gehören können. Es ist wichtig, Ihre spezifischen Anforderungen, die Größe Ihrer Infrastruktur und die Notwendigkeit zu analysieren, diese Dienste zu nutzen. Management Panels sind zum Beispiel ein allgemeiner Service, den diese Tools bieten, und sie können den Prozess der Verwaltung und Überwachung all Ihrer Server von einem zentralen Punkt aus erheblich vereinfachen. Auch wenn Sie solche Dienste noch nicht benötigen, sollten Sie die Optionen für eine mögliche zukünftige Notwendigkeit in Betracht ziehen.

Community und Support

Eine starke und einladende Community kann äußerst hilfreich für Support und Dokumentation sein, da Benutzer ihr Wissen und ihre Erweiterungen (Module, Plugins und Bereitstellungsskripte) in der Regel gerne mit anderen Benutzern teilen. Dies kann hilfreich sein, um Ihre Lernkurve zu beschleunigen und zusätzliche Kosten durch bezahlte Unterstützung oder Schulung zu vermeiden.

Übersicht über beliebte Tools

Die folgende Tabelle soll Ihnen einen schnellen Überblick über die Hauptunterschiede zwischen drei der beliebtesten derzeit auf dem Markt erhältlichen Konfigurationsmanagement-Tools geben: Ansible, Puppet und Chef.

Ansible Puppet Chef

Script Language

YAML

Custom DSL based on Ruby

Ruby

Infrastructure

Controller machine applies configuration on nodes via SSH

Puppet Master synchronizes configuration on Puppet Nodes

Chef Workstations push configuration to Chef Server, from which the Chef Nodes will be updated

Requires specialized software for nodes

No

Yes

Yes

Provides centralized point of control

No. Any computer can be a controller

Yes, via Puppet Master

Yes, via Chef Server

Script Terminology

Playbook / Roles

Manifests / Modules

Recipes / Cookbooks

Task Execution Order

Sequential

Non-Sequential

Sequential

Nächste Schritte

Bisher haben wir gesehen, wie das Konfigurationsmanagement für Server funktioniert und was bei der Auswahl eines Tools zum Aufbau Ihrer Konfigurationsmanagement-Infrastruktur zu beachten ist. In den folgenden Handbüchern dieser Reihe werden wir praktische Erfahrungen mit drei gängigen Konfigurationsmanagement-Tools sammeln: Ansible, Puppet und Chef.

Um Ihnen die Möglichkeit zu geben, diese Tools selbst zu vergleichen, verwenden wir ein einfaches Beispiel für die Serverkonfiguration, die von jedem Tool vollständig automatisiert werden sollte. Dieses Setup besteht aus einem Ubuntu 18.04-Server, auf dem Apache zum Hosten einer einfachen Webseite ausgeführt wird.

Fazit

Das Konfigurationsmanagement kann die Integrität von Servern im Laufe der Zeit drastisch verbessern, indem es ein Framework für die Automatisierung von Prozessen bereitstellt und Änderungen an der Systemumgebung nachverfolgt. In der nächsten Anleitung in dieser Reihe erfahren Sie, wie Sie mit Ansible as eine Strategie für das Konfigurationsmanagement in die Praxis umsetzen Werkzeug.