Conceptual Article

Einführung in das Konfigurationsmanagement mit Ansible

Published on June 11, 2020
Default avatar

By Erika Heidi

Developer Advocate

Deutsch
Einführung in das Konfigurationsmanagement mit Ansible

Einführung

Konfigurationsmanagement ist die Verwaltung von Änderungen in einem System auf eine Weise, die dauerhafte Integrität gewährleistet. Dazu werden in der Regel Tools und Prozesse verwendet, die für Automatisierung und Beobachtbarkeit sorgen. Das Konzept wurde zwar nicht in der IT-Branche erfunden, bezieht sich jedoch oft auf das Server Configuration Management.

Im Kontext von Servern wird Konfigurationsmanagement häufig auch als IT Automation oder Server Orchestration bezeichnet. Beide Begriffe verdeutlichen die praktischen Aspekte des Konfigurationsmanagements sowie die Fähigkeit, mehrere Systeme von einem zentralen Server aus zu steuern.

Dieser Leitfaden wird Ihnen die Vorteile der Verwendung eines Konfigurationsmanagement-Tools zum Automatisieren der Serverinfrastruktureinrichtung erläutern und beschreiben, wie Ihnen ein solches Tool (Ansible) dabei helfen kann.

Vorteile der Verwendung eines Konfigurationsmanagement-Tools

Auf dem Markt gibt es eine Reihe von Konfigurationsmanagement-Tools, die sich durch verschieden hohe Komplexität und unterschiedliche architektonische Stile auszeichnen. Jedes dieser Tools verfügt zwar über eigene Eigenschaften und funktioniert etwas anders, doch bieten alle die gleiche Funktion: Sie sorgen dafür, dass der Zustand eines Systems mit dem Zustand übereinstimmt, der durch einen Satz von Bereitstellungsskripten beschrieben wird.

Viele Vorteile beim Konfigurationsmanagement für Server hängen mit der Möglichkeit zusammen, Ihre Infrastruktur als Code zu definieren. Dadurch können Sie:

  • En Versionskontrollsystem verwenden, um alle Änderungen Ihrer Infrastruktur zu verfolgen
  • Bereitstellungsskripte für mehrere Serverumgebungen, wie z. B. Entwicklung, Test und Produktion, wiederverwenden
  • Bereitstellungsskripte mit Kollegen teilen, um die Zusammenarbeit in einer standardisierten Entwicklungsumgebung zu erleichtern
  • Die Replikation von Servern vereinfachen, was die Wiederherstellung nach kritischen Fehlern beschleunigt

Außerdem bieten Ihnen Konfigurationsmanagement-Tools eine Möglichkeit, um einen bis Hunderte von Servern an einem zentralen Ort zu steuern. So können Sie die Effizienz und Integrität Ihrer Serverinfrastruktur spürbar verbessern.

Übersicht über Ansible

Ansible ist ein modernes Konfigurationsmanagement-Tool, das die Einrichtung und Wartung von Remoteservern erleichtert. Dabei hilft ein minimalistisches Design Benutzern dabei, rasch loszulegen.

Benutzer schreiben Ansible-Bereitstellungsskripte in YAML, einem benutzerfreundlichen Standard für Datenserialisierung, der nicht mit einer bestimmten Programmiersprache verknüpft ist. Dadurch können Benutzer anspruchsvolle Bereitstellungsskripte intuitiver erstellen als bei ähnlichen Tools in der gleichen Kategorie.

Ansible benötigt keine spezielle Software, die auf den Knoten, die mit diesem Tool verwaltet werden sollen, installiert werden muss. Ein Steuerrechner wird mit der Ansible-Software eingerichtet, der dann mit den Knoten über Standard-SSH kommuniziert.

Als Konfigurationsmanagement-Tool und Automatisierungs-Framework bietet Ansible alle gängigen Funktionen anderer Tools der gleichen Kategorie und zeichnet sich dennoch durch starken Fokus auf Einfachheit und Leistung aus:

Idempotentes Verhalten

Ansible verfolgt den Status von Ressourcen in verwalteten Systemen, um eine Wiederholung von Aufgaben zu vermeiden, die zuvor bereits ausgeführt wurden. Wenn ein Paket bereits installiert wurde, wird nicht versucht, es erneut zu installieren. Das Ziel ist es, dass das System nach jeder Bereitstellungsausführung den gewünschten Zustand erreicht (oder beibehält), selbst wenn Sie es mehrfach ausführen. Darum zeichnen sich Ansible und andere Konfigurationsmanagement-Tools durch idempotentes Verhalten aus. Bei Ausführung eines Playbooks sehen Sie den Status der einzelnen Aufgaben, die ausgeführt werden, und ob die jeweilige Aufgabe eine Änderung am System vorgenommen hat oder nicht.

Unterstützung für Variablen, Bedingungen und Schleifen

Beim Schreiben von Ansible-Automatisierungsskripten können Sie Variablen, Bedingungen und Schleifen verwenden, um Ihre Automatisierung vielseitiger und effizienter zu gestalten.

Systemfakten

Ansible sammelt eine Reihe detaillierter Informationen über die verwalteten Knoten (z. B. Netzwerkschnittstellen und Betriebssystem) und stellt sie als globale Variablen namens Systemfakten bereit. Fakten können in Playbooks verwendet werden, um Ihre Automatisierung vielseitiger und flexibler zu gestalten. Sie unterscheiden sich je nach bereitgestelltem System.

Vorlagensystem

Ansible verwendet das Jinja2-Python-Vorlagensystem, um dynamische Ausdrücke und Zugriff auf Variablen zuzulassen. Vorlagen können zur einfachen Einrichtung von Konfigurationsdateien und -diensten dienen. Sie können beispielsweise eine Vorlage nutzen, um in Apache einen neuen virtuellen Hosteinzurichten, und die gleiche Vorlage für verschiedene Serverinstallationen wiederverwenden.

Unterstützung für Erweiterungen und Module

Ansible bietet Hunderte von integrierten Modulen, um das Schreiben von Automatisierungen für häufige Systemverwaltungsaufgaben zu erleichtern, z. B. das Installieren von Paketen mit apt, das Synchronisieren von Dateien mit rsync sowie das Handhaben von beliebten Softwareanwendungen wie Datenbanksystemen (z. B. MySQL, PostgreSQL, MongoDB und andere) und Verwaltungstools für Abhängigkeiten (wie composer von PHP, gem von Ruby, npm von Node und andere). Abgesehen davon gibt es verschiedene Methoden, um Ansible zu erweitern: Plug-ins und Module stellen geeignete Optionen dar, wenn Sie eine benutzerdefinierte Funktion benötigen, die nicht standardmäßig vorhanden ist.

Außerdem finden Sie Module und Plug-ins von Dritten im Ansible Galaxy-Portal.

Kennenlernen von Ansible-Konzepten

Nun sehen wir uns Ansible-Begriffe und -Konzepte an, die uns in dieser Reihe immer wieder begegnen werden.

Steuerknoten

Ein Steuerknoten ist ein System, auf dem Ansible installiert und zur Verbindung mit Ihrem Server eingerichtet ist. Sie können mehrere Steuerknoten haben; jedes System, das Ansible ausführen kann, lässt sich als Steuerknoten einrichten, einschließlich PCs oder Laptops, die ein Linux- oder Unix-basiertes Betriebssystem ausführen. Derzeit kann Ansible nicht auf Windows-Hosts installiert werden, aber Sie können diese Einschränkung umgehen, indem Sie eine virtuelle Maschine einrichten, die Linux ausführt, und Ansible von dort ausführen.

Verwaltete Knoten

Die Systeme, die Sie mit Ansible steuern, werden als verwaltete Knoten bezeichnet. Ansible erfordert, dass verwaltete Knoten über SSH erreichbar sind und Python 2 (Version 2.6 oder höher) oder Python 3 (Version 3.5 oder höher) installiert haben.

Ansible unterstützt eine Vielzahl von Betriebssystemen, einschließlich Windows-Server, als verwaltete Knoten.

Inventar

Eine Inventardatei enthält eine Liste der Hosts, die Sie mit Ansible verwalten werden. Zwar erstellt Ansible beim Installieren typischerweise eine standardmäßige Inventardatei, doch können Sie projektspezifische Inventare verwenden, um eine bessere Trennung Ihrer Infrastruktur zu erzielen und eine Ausführung von Befehlen oder Playbooks auf dem falschen Server zu verhindern. Statische Inventare werden normalerweise als .ini-Dateien erstellt, Sie können jedoch auch dynamisch generierte Inventare in jeder Programmiersprache verwenden, die JSON zurückgeben kann.

Aufgaben

In Ansible ist eine Aufgabe eine einzelne Arbeitseinheit, die auf einem verwalteten Knoten ausgeführt werden soll. Jede Aktion, die ausgeführt werden soll, wird als Aufgabe definiert. Aufgaben können als eine einmalige Aktion über Ad-hoc-Befehle ausgeführt oder als Teil eines Automatisierungsskripts in ein Playbook aufgenommen werden.

Playbook

Ein Playbook enthält eine geordnete Liste von Aufgaben und einige andere Anweisungen, um anzugeben, welche Hosts das Ziel der Automatisierung sind bzw. ob ein Eskalationssystem für Berechtigungen verwendet werden soll oder nicht, um diese Aufgaben auszuführen, sowie optionale Abschnitte, um Variablen zu definieren oder Dateien einzubinden. Ansible führt Aufgaben sequentiell aus und eine vollständige Playbookausführung heißt ein Play. Playbooks werden im YAML-Format geschrieben.

Handler

Handler werden verwendet, um Aktionen für einen Dienst auszuführen, z. B. Neustarten oder Anhalten eines Diensts, der im System des verwalteten Knotens aktiv ausgeführt wird. Handler werden typischerweise durch Aufgaben ausgelöst; ihre Ausführung erfolgt am Ende eines Plays, nachdem alle Aufgaben abgeschlossen sind. Wenn zum Beispiel mehr als eine Aufgabe den Neustart eines Dienst auslöst, wird der Dienst so nur einmal neu gestartet und nach Ende der Ausführung aller Aufgaben ausgeführt. Das Standardverhalten des Handlers ist zwar eine effizientere und insgesamt bessere Praxis, doch kann eine sofortige Ausführung des Handlers erzwungen werden, wenn eine Aufgabe das erfordert.

Rollen

Eine Rolle ist ein Satz von Playbooks und verwandten Dateien, die in einer vordefinierten Struktur organisiert sind, die Ansible bekannt ist. Rollen erleichtern die Wiederverwendung und Neuausrichtung von Playbooks in freigebbaren Paketen mit granularer Automatisierung für bestimmte Ziele, wie z. B. das Installieren eines Webservers oder einer PHP-Umgebung bzw. das Einrichten eines MySQL-Servers.

Zusammenfassung

Ansible ist ein minimalistisches IT-Automatisierungstool, das sich durch eine flache Lernkurve auszeichnet, zum Teil bedingt durch die Verwendung von YAML für die Bereitstellungsskripte. Es verfügt über eine große Anzahl von integrierten Modulen, die zur Abstrahierung von Aufgaben wie dem Installieren von Paketen und Arbeiten mit Vorlagen verwendet werden können. Die vereinfachten Infrastrukturanforderungen und die zugängliche Syntax eignen sich gut für Anfänger im Konfigurationsmanagement.

Im nächsten Teil dieser Reihe werden wir sehen, wie Sie Ansible auf einem Ubuntu 20.04-Server installieren und verwenden können.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel