Ansible: Wenn du in der IT-Branche tätig bist, hörst Du wahrscheinlich immer mehr über Ansible. CIOs bezeichnen es als ""Darling"" der DevOps, wenn es um die Automatisierung von Aufgaben an Software geht.
StackShare hat mehr als 1700 Kunden: Unternehmen, die Ansible verwenden, darunter Revolut, Zalando und öffentliche Einrichtungen wie die NASA. Was ist Ansible also und warum hat das Tool so schnell an Popularität gewonnen?
Was ist Ansible ?
Ansible ist eine von Red Hat unterstützte IT-Automatisierungsplattform (automation platform). Sie ermöglicht die Konfiguration von Systemen, die Bereitstellung von Software und die Orchestrierung fortgeschrittenerer IT-Aufgaben, wie z. B. kontinuierliche Bereitstellung oder ständige Updates ohne Ausfallzeiten. Es ermöglicht auch die Bereitstellung von virtuellen Maschinen, Containern und Netzwerk sowie von kompletten Cloud-Computing-Infrastrukturen.
Ansible ist daher für alle Arten von Benutzern offen, egal ob Entwickler, Systemadministratoren, Data Engineers und IT-Manager. Es lässt sich auch in Docker, Kubernetes, Microsoft Azure, Google Compute Engine, Datadog und viele andere Tools integrieren.
Das praktische Ergebnis ist somit ein wichtiger Beitrag zur „Infrastructure as Code„-Bewegung in der IT: die Idee, dass die Wartung der Server- und Client-Infrastruktur genauso behandelt werden kann und sollte wie die Entwicklung von Software, mit selbstdokumentierenden, bewährten und ausführbaren Lösungsrepositories, die eine Organisation unabhängig von Personalwechseln betreiben können.
Wie funktioniert Ansible ?
In Ansible gibt es zwei Kategorien von Computern: den Kontrollknoten (control node) und die verwalteten Knoten (managed nodes). Der control node ist ein Computer, auf dem Ansible ausgeführt wird. Es muss mindestens einen control node geben, obwohl auch ein control node als Backup existieren kann. Ein managed node stellt seinerseits jedes Gerät dar, das vom control node verwaltet wird.
Ansible funktioniert, indem es sich mit nodes (Clients, Server oder andere nodes) in einem Netzwerk verbindet und dann ein kleines Programm, das Ansible-Modul genannt wird, an diesen node sendet. Ansible führt diese Module über SSH aus und löscht sie, wenn sie fertig sind. Die einzige Voraussetzung für diese Interaktion ist, dass dein control node Ansible einen Anmeldezugang zu den managed nodes hat. SSH-Schlüssel sind die gängigste Art, den Zugang zu gewähren, aber auch andere Formen der Authentifizierung werden unterstützt.
Wie verwende ich Ansible?
Die Verwendung von Ansible scheint auf den ersten Blick komplex zu sein, aber diese Komplexität wird von Ansible verwaltet und nicht vom Benutzer.
Ein Ansible-Modul wird geschrieben, um einen gewünschten Zustand eines Systems darzustellen. Das bedeutet, dass jedes Modul definiert, was auf einem bestimmten Managed Node wahr sein sollte.
Wenn ein Systemadministrator zum Beispiel entscheidet, dass auf allen Workstations einer Organisation die neueste Version einer Software installiert sein muss, dann ist es Aufgabe des Ansible-Moduls, zu bestimmen, ob jeder Node diese Version der Software auf sich hat. Wenn Ansible einen Managed Node mit der installierten Software findet, erkennt es das Betriebssystem und führt die notwendige Routine aus, um die Updates zu implementieren. Auf diese Weise kann jeder Arbeitsplatz in einer Organisation mithilfe dieser Ansible-Module von einem einfachen Dashboard aus automatisch aktualisiert werden.
Wenn du eine Aufgabe auf mehreren Computern automatisieren musst, kannst du mithilfe der Ansible-Modulbibliothek das Modul finden, das die Aufgabe, die du ausführen möchtest, verwaltet. Wenn du Programmierer bist, kannst du auch deine eigenen benutzerdefinierten Module schreiben, um spezielle Aufgaben zu erledigen. Wenn Dein Modul allgemein nützlich ist, kannst du es auch beim Ansible-Projekt einreichen, einem Open-Source-Projekt mit über 3500 Mitwirkenden, damit auch andere von Deiner Arbeit profitieren können.
Ansible Implementierung
Während Module die Mittel bereitstellen, um eine Aufgabe zu erfüllen, ist die Art und Weise, wie du sie nutzt, über ein Ansible Playbook.
Ein Ansible Playbook ist eine Konfigurationsdatei, die in YAML, einer einfachen Programmiersprache, geschrieben ist und Anweisungen darüber gibt, was getan werden muss, um einen Managed Node in den gewünschten Zustand zu bringen. Die Ansible-Playbooks sind wirklich das Herzstück dessen, was Ansible so beliebt macht, denn sie beschreiben die Aufgaben, die schnell erledigt werden müssen, ohne dass der Benutzer eine bestimmte Syntax kennen muss.
Ansible Playbooks können nicht nur Konfigurationen deklarieren, sondern auch die Schritte jeder manuell angeordneten Aufgabe orchestrieren und Aufgaben gleichzeitig oder zu verschiedenen Zeiten ausführen.
Ansible Playbooks sind so gestaltet, dass sie einfach, menschenlesbar und selbstdokumentierend sind. Ein Ansible Playbook kann jederzeit auf einem System ausgeführt werden, ohne dass es negative Auswirkungen auf das System hat. Wenn ein Ansible Playbook auf einem System ausgeführt wird, das bereits richtig konfiguriert ist und sich im gewünschten Zustand befindet, sollte dieses System nach der Ausführung des Playbooks immer noch richtig konfiguriert sein.