Überblick
Ein Ansible®-Modul ist ein kleines Programm, das Aktionen auf einem lokalen Rechner, einer API (Application Programming Interface) oder einem Remote-Host durchführt. Module werden in Form von Code (normalerweise in Python) ausgedrückt und enthalten Metadaten, die festlegen, wann und wo eine spezifische Automatisierungsaufgabe ausgeführt wird und welche Nutzenden sie ausführen können. Es gibt Tausende von Ansible-Modulen, die aus Repositories wie Ansible Automation Hub und Ansible Galaxy heruntergeladen werden können. Sie können aber auch benutzerdefinierte Module selbst erstellen und diese mit anderen Nutzenden von Ansible in Ihrem Unternehmen oder mit der gesamten Ansible-Community teilen.
Wie funktionieren Module?
Module können eine Vielzahl von IT-Funktionen für eine Vielzahl an Use Cases durchführen. Dazu zählen Networking, Provisionierung, Kommunikation, Sicherheit, sowie das Cloud-, User- und Konfigurationsmanagement. Wenn Sie verstehen möchten, wie Ansible-Module Sie bei der Automatisierung dieser und weiterer Use Cases unterstützen können, ist es wichtig, zuerst die Beziehung zwischen Modulen und anderen Schlüsselkomponenten von Ansible Automation zu verstehen, zu denen beispielsweise Aufgaben, Plays, Playbooks und Rollen zählen.
- Aufgabe: Sie definiert die Aktion, die auf einem gemanagten Host durchgeführt werden soll, aber nicht den Host, auf dem sie durchgeführt wird. Sie können ein Modul innerhalb einer Aufgabe aufrufen, die auf einem Host ausgeführt wird, aber dieser Host selbst wird außerhalb der Aufgabe, nämlich auf dem Play-Level, definiert.
- Play: Dabei handelt es sich um die Kerneinheit einer Ansible-Ausführung. Ein Play enthält eine Liste von Aufgaben und ordnet diese Liste bestimmten gemanagten Hosts zu. Ein Play enthält weiterhin Variablen und in komplexeren Use Cases auch Rollen.
- Ansible Playbook: Enthält 1 oder mehr Plays. Playbooks werden in YAML geschrieben, können von Menschen gelesen werden und lassen sich leicht teilen.
- Ansible Roles: Sie paketieren Ansible-Inhalte für die Verwendung innerhalb eines Plays. Zu diesen Inhalten zählen unter anderem Aufgaben, Handler, Variablen, Plugins, Vorlagen und Dateien. Ansible Roles können in ein Play importiert werden, in anderen Plays oder Playbooks wiederverwendet werden oder für die Verwendung durch andere Automatisierungsnutzende geteilt werden.
- Collections: Gebündelte Ansible-Inhalte, die es Entwicklungsteams im Bereich Automatisierung ermöglichen, ihre Produktivität zu verbessern und schneller zu arbeiten. Collections sind die bevorzugte Art und Weise, Module zu paketieren und zu teilen.
- Plugins: Teile von Code, die auf der Kernfunktionalität von Ansible aufbauen und normalerweise auf dem Kontrollknoten ausgeführt werden. Obwohl Module eine Art Plugin sind, führen sie Aufgaben gewöhnlich auf einem Ziel und nicht dem Kontrollknoten aus.
Sie können sich das folgendermaßen vorstellen: Wenn Aufgaben die Aktionen sind, die erledigt werden müssen, dann sind Module die Tools, die Sie zur Erledigung dieser Aufgaben benötigen. Eine Aufgabe definiert eine Aktion, die erledigt werden muss, und das Modul wird auf einem gemanagten Host ausgeführt, um diese Aktion zu erledigen. Anschließend sammelt das Modul Rückgabewerte im JSON-Format.
Module werden üblicherweise in der Library eines Playbooks gespeichert und dann ausgeführt, wenn das Playbook die dazugehörige Aufgabe ausführt. Sie können aber auch innerhalb einer Rolle oder Collection enthalten sein. Wenn eine Ansible Role in ein Playbook importiert wird, führen die Module im Rollenverzeichnis eine oder mehrere Aufgaben aus, die in der Rolle enthalten sind. Module in einem einzigen Play werden nur 1 Mal ausgeführt. Im Vergleich dazu werden Module innerhalb einer Rolle immer dann ausgeführt, wenn eine Rolle innerhalb des Playbooks angefordert wird.
Die folgenden 3 Beispiel-Module sind in Ansible Core und Installationen von Ansible enthalten:
dnf module (ansible.builtin.dnf) – installiert, aktualisiert und entfernt Pakete und Gruppen innerhalb des dnf-Paketmanagers – dem standardmäßigen Software-Paketmanager für Fedora.
service module (ansible.builtin.service) – verwaltet Services auf Remote-Hosts. Dazu zählen beispielsweise Aktionen wie das Starten, Stoppen und Neustarten eines Services.
command module (ansible.builtin.command) – führt Befehle auf Zielen aus.
Red Hat Ressourcen
Erstellen und Teilen von Ansible-Modulen
Wenn die vorhandenen Ansible-Module nicht für Ihre Use Cases in der Automatisierung ausreichen, können Sie Ihr eigenes Modul erstellen, das eine bestimmte Aufgabe für Sie erledigt. Obwohl der Prozess zum Erstellen eines Moduls basierend auf der Komplexität der gewünschten Automatisierungsaufgabe variiert, können Sie Ihr eigenes Modul entwickeln, indem Sie:
- Ein Library-Verzeichnis in Ihrem Repository erstellen
- Eine Modul-Datei in Python oder einer Programmiersprache Ihrer Wahl innerhalb des Library-Verzeichnisses erstellen
- Ein Test-Playbook in Ihrem Library-Verzeichnis erstellen
- Das Playbook ausführen, um das Modul zu testen
Module sollten präzise sein und darauf abzielen, ein ganz bestimmtes Problem zu lösen. Dadurch lassen sie sich einfach testen, verwenden, wiederverwenden und teilen. Module sollten außerdem eine definierte Schnittstelle bieten, die Argumente akzeptiert, und idempotent sein. Das bedeutet, dass sie keine Änderungen vornehmen sollten, wenn sie feststellen, dass der aktuelle Zustand des Knotens dem gewünschten Endzustand entspricht.
Nutzende, die gerade erst mit der Entwicklung von Ansible-Inhalten beginnen oder das Erstellen von Modulen optimieren möchten, können ein Community-Tool wie Content Builder verwenden, das Module und andere Ansible-Plugins für Use Cases wie Networking, Sicherheit und Cloud-Inhalte generiert.
Wie es bei anderen Arten von Ansible-Inhalten der Fall ist, wurden auch Ansible-Module so entwickelt, dass sie geteilt werden können. Mit einer Subskription für Red Hat® Ansible Automation Platform können Sie Ihre Module in Collections paketieren und sie zu Ansible Automation Hub hochladen oder über einen privaten Automation Hub in Ihrem Unternehmen teilen. Sie können Ihre Module auch auf Ansible Galaxy verteilen, einem kostenlosen Repository zum Teilen von Ansible-Inhalten mit Nutzenden aus der Community.
Module mit eventgesteuerter Automatisierung verwenden
Module spielen nicht nur eine wichtige Rolle in der Ausführung von Playbooks, sie sind auch wertvoll für Unternehmen, die mithilfe von eventgesteuerter Automatisierung einen fortschrittlichen, proaktiven Ansatz bei ihrem IT-Management verfolgen wollen.
Eventgesteuerte Automatisierung verbindet Daten von IT-Events mit automatisierten Aktionen, wodurch Teams seltener manuell reagieren oder Fehler beheben müssen. Ein Event kann ein beliebiger Vorfall sein, der Einfluss auf die Bereitstellung eines Services oder die Verwaltung der IT-Infrastruktur hat.
Event-Driven Ansible ist eine Funktion von Red Hat Ansible Automation Platform und eine umfassende Lösung für Automatisierungsteams, die von eventgesteuerter Automatisierung profitieren möchten. Es verwendet Ansible Rulebooks, um auf Events mit den von Ihnen definierten Aktionen zu reagieren. Diese Aktionen können beispielsweise das Ausführen von Playbooks, Rollen, Vorlagen und Modulen sein. Ein Rulebook verwendet bedingte „wenn-dann“-Befehle, mit denen Sie Routine-Aufgaben – wie etwa das Ausführen eines Remediation Playbooks bei einem Ausfall – automatisieren können.
Wenn Daten von einer Eventquelle die Bedingungen erfüllen, die in einem Rulebook definiert wurden, löst Ansible Automation Platform die von Ihnen festgelegten Aktionen aus. Das kann beispielsweise das Ausführen eines ganzen Playbooks oder eines einzelnen Moduls sein, das eine ganz bestimmte Aktion durchführt. Die genaue Reaktion hängt ganz davon ab, was Sie in einem Rulebook als gewünschte Reaktion definiert haben.
Das untenstehende Beispiel zeigt, wie ein Debug-Modul ausgelöst wird, sobald ein Event von einer Webhook-Quelle die in einem Rulebook festgelegten Bedingungen erfüllt.
Das rulebook.yml:
--- - name: Listen for events on a webhook hosts: all ## Define our source for events sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 ## Define the conditions we are looking for rules: - name: Say Hello condition: event.payload.message == "Ansible is super cool" ## Define the action we should take should the condition be met action: run_playbook: name: say-what.yml
Das Playbook say-what.yml:
- hosts: localhost connection: local tasks: - debug: msg: "Thank you, my friend!"
In diesem Fall legt das Rulebook fest, dass das Playbook „say-what.yml“ ausgeführt wird, sobald die festgelegten Bedingungen erfüllt werden. Da das Debug-Modul im Playbook „say-what.yml“ enthalten ist, wird es jedes Mal ausgeführt, wenn das Playbook ausgeführt wird.
Warum Red Hat?
Event-Driven Ansible ist ein Teil von Ansible Automation Platform und bietet die notwendigen Event-Handling-Funktionen, die Sie für eine schnelle und effiziente IT-Service-Bereitstellung benötigen. Gleichzeitig ermöglicht es Ihnen, Aufgaben ohne manuelles Eingreifen zu erledigen, wodurch Ihrem Unternehmen mehr Zeit für wertvollere Projekte bleibt.
Da eventgesteuerte Automatisierung beim Feststellen eines Events oft auf Monitoring-Tools von Drittanbietern angewiesen ist, kann die Nutzung von Ansible-Inhalten, die mit den bereits von Ihnen verwendeten Plattformen und Tools integriert sind, den Übergang auf effizientere, automatisierte Workflows vereinfachen. Mit einer Subskription für Red Hat Ansible Automation Platform erhalten Sie Zugang zu Tausenden von gebündelten Modulen, Rollen, Plugins sowie Dokumentation in Form von Ansible Content Collections. Diese beinhalten sowohl Red Hat Ansible Certified Content als auch Ansible Validated Conent von Red Hat und unseren Partnern, die Ihnen im Ansible Automation Hub zum Download zur Verfügung stehen.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.