Ansible ist ein quelloffenes Werkzeug für die Automatisierung von Konfiguration und Administration von Computersystemen – in der Regel  von Linux-Servern. Statt manuellem Installieren versetzen Sie Knoten verteilter Systeme in den von Ihnen gewünschten Zustand. Ansible kümmert sich darum, dass dieser Zustand zuerst erreicht und dann stabil erhalten bleibt und führt alle dafür erforderlichen Aktionen aus.

Fähigkeiten von Ansible

Ansible wurde für das einfache Management von verteilten Computersystemen geschrieben. Zahlreiche zu installierende Software, Konfigurationsdateien mit bestimmten Parametern und zu aktivierende Services erfordern einen beträchtlichen Aufwand an Organisation. Auch für das lokale Netzwerk einer mittelgroßen Organisation ergibt sich daraus ein beträchtlicher Aufwand. Dazu kommen Routineaufgaben, die in kurzen Abständen regelmäßig ausgeführt werden müssen wie zum Beispiel das Anlegen von Sicherungskopien, das Deployment von Software, das Einspielen von Patches und vieles mehr. Ihr IT-Systemadministrator sollte diese Aufgaben automatisieren können und zwar nicht nur, um schneller und effizienter arbeiten zu können. Zu viele solcher Aufgaben manuell zu erledigen ist fehleranfällig, was in der Administration Ihrer IT sehr teuer werden kann.

Herkunft von Ansible

Die Entwicklung von Ansible begann im Jahr 2012 und führte ein Jahr später zur Gründung der Firma AnsibleWorks, die für diese quelloffene Software eine Browser-basierte Schnittstelle und Beratungsleistungen anbot. Im Jahr 2015 wurde AnsibleWorks von Red Hat übernommen und ist seither in die Produktpalette dieser Firma integriert.

Grundidee von Ansible

In der Philosophie von Ansible legen Sie als Administrator keine Konfigurationsbefehle fest, sondern den von Ihnen gewünschten Zustand des Systems und aller seiner Hosts. Diese Art der Funktionalität führt dazu, dass die Überprüfung dieses Zustands im Zentrum der Aktivität von Ansible steht. Ergibt ein Test ein positives Resultat und ist der angestrebte Zustand bereits erreicht, führt Ansible keine Befehle aus, weil da ja dann nicht notwendig ist. Wird aber ein Unterschied zwischen dem bestehenden und dem angestrebten Zustand festgestellt, setzt Ansible die notwendigen Schritte zur Herstellung des gewünschten Status des Systems.

Für das Festlegen dieses Status kommt die Auszeichnungssprache YAML zum Einsatz. Sie ist an XML angelehnt und genau wie diese von Menschen lesbar. Die Entwickler von Ansible nennen die Dateien in YAML „Playbooks“, die also den gewünschten Zustand der Hosts festlegen. In den Playbooks sind Module verwendbar, in denen die auszuführenden Schritte festgelegt werden. Aus diesen Playbooks bildet Ansible kleine Programme in Python, die auf die Hosts übertragen, ausgeführt und dann wieder gelöscht werden.

Mehr zum Thema:
Was ist MD5?

Funktionaliät von Ansible

Sie legen zuerst ein Inventory an, worunter man eine Datei mit Listen von Hosts versteht. Für diese soll Ansible die Konfiguration übernehmen. In einem größeren System werden verschiedene Typen von Hosts enthalten sein, die entsprechend verschieden konfiguriert werden müssen. Es ist einfach möglich, im Inventory die Hosts in diese Gruppen zu unterteilen. Für das Inventory stehen Standarddateien zur Verfügung, Sie können aber genauso ein eigenes Inventory schreiben.

Ein Tool für Konfiguration und Administration benötigt Informationen über die zu verwaltenden Hosts wie das verwendete Betriebssystem, installierte Programme und Details über die CPU und den Arbeitsspeicher. Diese Details werden in eigenen Dateien abgelegt.

Es ist einfach möglich, einzelne Kommandos von der Kommandozeile ausführen zu lassen. Ein einfaches Beispiel ist die Überprüfung, welche Hosts tatsächlich erreichbar sind.

Ansible ist dann am nützlichsten, wenn es im Gegensatz zu einzelnen Befehlen um ganze Gruppen von Instruktionen geht und die damit herstellbaren Zustände eines Hosts. Dafür sind in den YAML-Playbooks sogenannte Module enthalten, die mit entsprechend gewählten Parametern aufgerufen werden.

Ein Beispiel für den Einsatz solcher Module ist die Installation und Konfiguration eines Webservers auf bestimmten Hosts. Eine solche Installation besteht aus einer ganzen Kette von Befehlen, die Sie ohne ein Konfigurationstool wie Ansible einzeln in die Kommandozeile eintippen müssten.

Derzeit sind über 2000 Module verfügbar, für die eine Übersicht auf der Webseite von Ansible verfügbar ist.

Technische Details

Bei diesem Tool handelt es sich um quelloffene Software. Nachdem der Einsatz eines solchen Werkzeugs auch sicherheitskritisch ist, handelt es sich bei diesem Punkt um einen wesentlichen Vorteil. Sie selbst und unabhängige Experten können das Tool nach Belieben überprüfen. Einsetzbar ist Ansible auf allen unixoiden Systemen (Linux wie CentOS, Debian, SuSE, Redhat , etc.) und über Powershell auch auf Windows. Die Verbindung zu den zu konfigurierenden Hosts wird über SSH hergestellt, es ist keine Installation von Software auf diesen Hosts über OpenSSL und Python hinaus erforderlich.

Für das Design von Ansible galten die Grundsätze der Sicherheit, Zuverlässigkeit und eines minimalistischen Ansatzes, was sich auf die Abwesenheit von überflüssigen Abhängigkeiten von anderer Software bezieht.

Ansible ist auch für die Verwaltung von größeren Netzwerken geeignet. In diesem Fall werden die Multiplexingfunktionen von OpenSSH genutzt, um mit einer größeren Zahl von Hosts in Verbindung bleiben zu können, ohne das Netzwerk zu überlasten.

Mehr zum Thema:
Was ist ein Bot?

Für die Authentifizierung können Sie Ansible auch zusammen mit dem System Kerberos verwenden.

Letzte Artikel von Daniel Faust (Alle anzeigen)