Suchen

Open-Source-Software zur automatisierten Konfiguration von IT-Systemen Was ist Ansible?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Florian Karlstetter

Ansible ist ein Member-Projekt der Cloud Native Computing Foundation und wird von Red Hat verantwortet. Es handelt sich um eine Open-Source-Software, mit der sich IT-Systeme automatisiert konfigurieren und verwalten lassen. Die Software verfolgt einen minimalistischen Ansatz und benötigt keine Agenten auf den zu managenden Systemen.

Ansible ist ein Member-Projekt der Cloud Native Computing Foundation zur automatisierten Konfiguration von IT-Systemen.
Ansible ist ein Member-Projekt der Cloud Native Computing Foundation zur automatisierten Konfiguration von IT-Systemen.
(Bild: gemeinfrei (© Gerd Altmann / pixabay) / Pixabay )

Ansible wurde 2012 erstmals veröffentlicht. Es handelt sich um eine freie Software unter GNU General Public License, mit der sich IT-Systeme wie Server automatisiert administrieren und konfigurieren lassen. Ansible kann beispielsweise Software verteilen, Befehle auf den Systemen ausführen oder Konfigurationen managen. Es sind sowohl einfache als auch komplexe Aufgaben automatisiert ausführbar. Die Software verfolgt einen minimalistischen Ansatz und benötigt im Vergleich zu vielen anderen Tools dieser Art keine Agenten auf den zu verwaltenden Systemen.

Die Kommunikation mit den einzelnen Rechnern erfolgt über SSH (Secure Shell). Unter anderem kommt die recht einfach zu verstehende Auszeichnungssprache YAML zum Einsatz. Genutzt wird Ansible weltweit von zahlreichen Unternehmen und Organisationen beispielsweise zur Vereinfachung der Administration der Systeme in einem Rechenzentrum.

Ansible arbeitet mit allen Unix-artigen Betriebssystemen wie den verschiedenen Linux-Distributionen zusammen. In vielen Distributionen wie CentOS, Ubuntu oder Debian ist Ansible enthalten. Auch Windows-Server lassen sich mit Ansible verwalten. Es werden die Befehle der Powershell 3.0 verwendet. Seit 2012 ist das Unternehmen AnsibleWorks maßgeblich an der Weiterentwicklung der Software beteiligt und bietet verschiedene kommerzielle Produkte auf Basis von Ansible inklusive Supportleistungen an. 2015 wurde AnsibleWorks von Red Hat übernommen.

Red Hat verkauft eine Enterprise-Variante der freien Software unter der Bezeichnung Ansible Tower. Die Enterprise-Variante integriert Zusatzfunktionen wie Rollensysteme für User und grafisch aufbereitete Benutzeroberflächen. Die Open-Source-Version von Ansible ist aktuell in der Version 2.9.4 (Stand Anfang 2020) erhältlich und kann über GitHub kostenlos geladen werden.

Ansible und die Cloud Native Computing Foundation

Ansible wird von Red Hat, einem Mitglied der Cloud Native Computing Foundation (CNCF), verantwortet. Damit hat das Ansible-Projekt bei der CNCF den Status eines CNCF-Member-Projekts. Die Cloud Native Computing Foundation ist ein Teilprojekt der Linux Foundation und hat sich zum Ziel gesetzt, das Cloud Native Computing und die Zusammenarbeit zwischen Herstellern, Entwicklern und Anwendern zu fördern.

Cloud Native Computing hat sich weltweit etabliert und wird von großen Unternehmen wie eBay, Pinterest oder Twitter und anderen intensiv genutzt. Das Cloud Native Computing basiert auf Microservices und Containern. Diese Architektur bietet den Vorteil, dass sich neue Applikationen schneller realisieren lassen und die Möglichkeiten des Cloud Computings voll ausgeschöpft werden.

Die Cloud Native Computing Foundation wurde 2015 gegründet und hatte sich ursprünglich zum Ziel gesetzt, die Verbreitung und Verwendung der Container-Technologie voranzutreiben. Das Projekt Kubernetes zur Orchestrierung von Containern wurde damals von Google an die CNCF gespendet. Mittlerweile zählt die Organisation mehrere hundert Mitglieder wie große Public-Cloud-Provider und Software-Hersteller beispielsweise Amazon, Google, IBM, Microsoft, Oracle, Red Hat oder VMware und viele andere. Die Organisation begleitet zahlreiche Projekte, arbeitet Hersteller-neutral und setzt auf frei verfügbare Open-Source-Software wie Ansible. Die Projekte sind in verschiedene Kategorien eingeteilt. Diese Kategorien sind beispielsweise:

  • CNCF Graduated Projects
  • CNCF Incubating Projects
  • CNCF Sandbox Projects
  • CNCF Member Projects/Products
  • Non-CNCF Member Projects/Products

Ansible zählt zur Kategorie der CNCF Member Projects/Products.

Grundsätzliche Funktionsweise und Architektur von Ansible

Ansible unterscheidet prinzipiell zwischen den Systemen (Knoten), die verwaltet und konfiguriert werden sollen, und den Systemen (Managementsystemen), die das Konfigurationsmanagement durchführen. Das Design der Software verfolgt einen minimalistischen Ansatz. Auf den Knoten ist keine besondere Software wie Agenten notwendig. Es müssen lediglich OpenSSH und Python vorhanden sein. Der bewusste Verzicht auf Agenten-Software macht Ansible sehr sicher und reduziert die Fehlerwahrscheinlichkeit. Die beschreibenden Sprachen zur Ausführung der Aktionen und Befehle sind einfach anzuwenden und zu erlernen. Unter anderem kommen YAML-Templates zum Einsatz.

Der gewünschte Zustand eines zu verwaltenden oder zu konfigurierenden Knotens ist in sogenannten Playbooks beschrieben. Zur Konfiguration eines Knotens verbindet sich das Managementsystem per SSH mit dem Knoten. Anschließend werden die einzelnen Befehle übergeben und die verschiedenen Tasks auf dem Knoten ausgeführt. Ein Task beinhaltet jeweils einen Konfigurationsschritt. Die Tasks rufen Module auf, die für die eigentliche Umsetzung der Tasks sorgen. Bestandteil von Ansible sind mehrere tausende Module. Darüber hinaus existieren weitere Module, die importiert werden können. Ansible bietet zudem die Möglichkeit, einzelne Befehle direkt per Kommandozeile abzusetzen.

Die zentralen Ressourcen von Ansible

Die drei zentralen Ressourcen, die von Ansible zur automatisierten Ausführung der verschiedenen Aufgaben genutzt werden, sind:

  • Module
  • Inventar
  • Playbooks

Bei den Modulen handelt es sich um Unterroutinen oder Unterprogramme, mit denen sich immer wieder auszuführenden Aufgaben in geschlossene Einheiten auslagern lassen. Module sind sowohl in Playbooks als auch über die Kommandokonsole nutzbar. Ziel der Modul-Technik ist es, wiederkehrende Aufgaben oder Standardaufgaben nicht immer wieder neu programmieren zu müssen. Anwender von Ansible können selbst Module entwerfen und programmieren oder die mit Ansible ausgelieferten Module verwenden. Module sind mit beliebigen Programmiersprachen erstellbar.

Das Inventar fast die Knoten zusammen, die von den Managementsystemen per Ansible erreichbar und konfigurierbar sein sollen, und beschreibt sie. Für die verschiedenen Knoten existieren im Inventar Einträge, die Information wie IP-Adressen oder Hostnamen beinhalten. Inventare können statisch bereitgestellt oder dynamisch aus verschiedenen Quellen bezogen werden. Sie sind parallel nutzbar und lassen das Gruppieren der Knoten zu.

Im Playbook ist der gewünschte Zustand eines zu konfigurierenden oder zu verwaltenden Knotens beschrieben. Es enthält die Vorgaben, die automatisiert abzuarbeiten sind, in Form einzelner Arbeitsanweisung. Innerhalb eine Playbooks sind prinzipiell beliebige Shell-Kommandos zur Ausführung der Aufgaben auf dem Zielknoten nutzbar. Playbooks können beispielsweise Anweisungen zur Installation einer einzelnen Software, zur Ausführung bestimmter Konfigurationseinstellungen oder zur kompletten Einrichtung des Systems enthalten. Windows und die Powershell-Befehle werden ebenfalls unterstützt. Die Playbooks verwenden unter anderem YAML als beschreibende Sprache.

Vorteile von Ansible

Die wichtigsten Vorteile von Ansible und der automatischen Verwaltung und Konfiguration der IT-Systeme sind:

  • Reduzierung des Arbeitsaufwands zur Verwaltung und Konfiguration der IT-Systeme
  • vielfältige Konfigurations- und Verwaltungsmöglichkeiten
  • keine separate Software wie Agenten auf den zu verwaltenden Knoten notwendig
  • minimalistischer Ansatz der Software - sicher und einfach einzusetzen
  • Ansible ist frei verfügbar
  • kompatibel mit Unix-artigen Systemen wie Linux und mit Windows-Systemen
  • in vielen Linux-Distributionen bereits enthalten
  • sichere Verbindungen über SSH
  • einfache Beschreibungssprache YAML
  • niedriger Einarbeitungsaufwand
  • viele fertige Module und Playbooks verfügbar

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 46339921)

Über den Autor