Was sind Ansible Roles – und wie werden sie verwendet?

URL kopieren

Ansible® Roles (Ansible-Rollen) sind eigenständige, portierbare Einheiten von Ansible-Automatisierungen und die bevorzugte Methode für das Gruppieren von zusammenhängenden Aufgaben und den dazugehörigen Variablen, Dateien, Handler und anderen Assets in einer bekannten Dateistruktur. Automatisierungsaufgaben können zwar auch ausschließlich in einem Ansible Playbook geschrieben werden, aber mit Ansible Roles können Sie ganze Pakete von Automatisierungsinhalten erstellen. Diese lassen sich dann in 1 oder auch mehreren Plays ausführen, für mehrere Playbooks wiederverwenden und in Sammlungen sogar mit anderen Nutzenden teilen.

Ansible Roles werden in YAML ausgedrückt – einer von Menschen lesbaren Datenserialisierungssprache, die zum Schreiben von Konfigurationsdateien genutzt wird. Wenn eine Rolle in einer Aufgabe oder einem Play enthalten ist, sucht Ansible nach einer main.yml-Datei in mindestens 1 von 8 Standardrollenverzeichnissen. Wie unten mit erklärenden Anmerkungen dargestellt, beinhalten diese Verzeichnisse Rollen, Aufgaben, Handler, Module, Standardwerte, Variablen, Dateien, Vorlagen und Metadaten.

roles/
    common/               # this hierarchy represents a "role"
        tasks/            #
            main.yml      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # roles can also include custom modules
        module_utils/     # roles can also include custom module_utils
        lookup_plugins/   # or other types of plugins, like lookup in this case
    webtier/              # same kind of structure as "common" was above, done for the webtier role
    monitoring/           # ""
    fooapp/               # ""

Sie können eine Ansible Role in einem Playbook aufrufen, indem Sie sie unter den Rollenoptionen auflisten oder indem Sie sie im Abschnitt Rollenaufgaben mit dem Befehl include_role oder import_role hinzufügen. Rollen, die unter den Rollenoptionen aufgelistet oder mit import_role hinzugefügt wurden, werden vor sämtlichen anderen Aufgaben in einem Play ausgeführt. Rollen, die mit include_role hinzugefügt wurden, werden hingegen in der Reihenfolge ausgeführt, in der sie innerhalb einer Aufgabenliste definiert sind.

Mehr über Ansible Roles und deren Verwendung erfahren

Red Hat Ressourcen

Sowohl Ansible Roles als auch Ansible Playbooks sind Tools zum Organisieren und Ausführen von Automatisierungsaufgaben. Sie dienen aber jeweils unterschiedlichen Zwecken. Ob Sie Ansible Roles erstellen oder sämtliche Aufgaben in ein Ansible Playbook schreiben, hängt von Ihrem spezifischen Use Case und Ihrer Ansible-Erfahrung ab.

Die meisten Automatisierungsentwicklungs- und Systemadministrationsteams erstellen zunächst Automatisierungsinhalte mit individuellen Playbooks. Ein Playbook ist eine Liste von Automatisierungsaufgaben, die für ein definiertes Inventory ausgeführt werden. Aufgaben können in einem Play organisiert werden – einer Gruppierung von 1 oder mehreren Aufgaben, die einem bestimmten Host zugeordnet sind und der Reihenfolge nach ausgeführt werden. Ein Playbook kann 1 oder mehrere Plays enthalten und bietet so eine flexible Möglichkeit für das Ausführen von Ansible-Automatisierungen in einer einzigen Datei.

Playbooks sind zwar ein leistungsstarkes Tool für die Automatisierung mit Ansible, aber sämtliche Aufgaben in ein Playbook zu schreiben, ist nicht immer der beste Ansatz. Wenn der Umfang und die Variablen komplex sind und es nützlich ist, geschriebene Inhalte wiederzuverwenden, ist es möglicherweise sinnvoller, den Großteil Ihrer Automatisierungsinhalte in Ansible Roles zu erstellen und diese in einem Playbook aufzurufen.

Das folgende Beispiel veranschaulicht die Verwendung der Rolle linux-system-roles.timesync in einem Playbook. Hier wären mehr als 4 Aufgaben erforderlich, um das zu erreichen, was eine einzige Rolle erzielen kann.

- name: Manage timesync with 3 servers
  hosts: targets
  vars:
     timesync_ntp_servers:
        - hostname: foo.example.com
          iburst: true
        - hostname: bar.example.com
          iburst: true
        - hostname: baz.example.com
          iburst: true
  roles:
     - linux-system-roles.timesync

Ansible Roles zu nutzen, anstatt den gesamten Automatisierungsinhalt in ein einziges Playbook zu schreiben, bietet mehrere Vorteile:

Wiederverwendbarkeit und Teilen

Rollen sind Einheiten von Automatisierung, die darauf ausgelegt sind, wiederverwendet zu werden. Mit Rollen können Sie logische Gruppierungen von Automatisierungsaufgaben vom Kontext eines einzigen Plays oder Playbooks trennen. Dadurch lassen sich die Rollen für mehrere Plays oder Playbooks wiederverwenden und auch zur Wiederverwendung in anderen Projekten teilen.

Modularität

Der Einsatz von Rollen fördert einen modularen Automatisierungsansatz, bei dem eine bestimmte Rolle für eine ganz bestimmte Funktionalität verantwortlich ist. Mit einem solchen Ansatz ist es leichter, Automatisierungscode zu verstehen, zu warten und Probleme im Code zu beheben.

Organisation

Mit Ansible Roles lassen sich Aufgaben, Vorlagen, Dateien und Variablen auf strukturierte Weise organisieren. Diese Struktur erleichtert das Verwalten komplexer Automatisierungseinrichtungen, da sämtliche mit einer bestimmten Rolle zusammenhängenden Komponenten im jeweiligen Verzeichnis enthalten sind.

Parametrisierung

Mit Rollen lassen sich Standardvariablen definieren, die überschrieben werden können, wenn die Rolle in einem Ansible Playbook verwendet wird. So kann das Verhalten einer Rolle einfacher für verschiedene Umgebungen oder Use Cases angepasst werden, ohne die Rolle selbst zu verändern.

Versionierung und Abhängigkeitsmanagement

Sie können Rollen versionieren und Rollenabhängigkeiten in einer meta/main.yml-Datei innerhalb einer Rolle angeben. Dadurch lassen sich Versionen und Abhängigkeiten explizit verwalten, was die Stabilität und Konsistenz in verschiedenen Umgebungen sicherstellt.

Tests

Die Struktur von Rollen erleichtert das Anwenden von Testmethoden. Sie können Tests auch für eine bestimmte Rolle schreiben und so sicherstellen, dass die Rolle sich wie erwartet verhält, bevor Sie sie in größere Playbooks integrieren.

Einfachheit

Bei größeren oder komplexeren Projekten vereinfachen Rollen den Einsatz von Ansible Playbooks. Anstelle eines sehr großen Playbooks, das sämtliche Aufgaben, Handler und Vorlagen enthält, können Sie ein viel kompakteres Playbook schreiben, das für andere einfach lesbar und zu verstehen ist. Dadurch lassen sich auch einfacher Rollen identifizieren, die in neuen Projekten wiederverwendet werden können, was wiederum das Schreiben von Automatisierungsinhalten beschleunigt und Workflows vereinfacht. 

Sie können eine neue Rolle mit dem Befehl „ansible-galaxy role init role_name“ erstellen. Daraufhin wird ein Verzeichnis eingerichtet, das der Standardstruktur für Rollenverzeichnisse folgt. Nachdem Sie das Verzeichnis überprüft haben, können Sie Aufgaben, Standardvariablen und andere Komponenten definieren. Außerdem können Sie Dokumentation zu einer README.md-Datei und in meta/main.yml hinzufügen, auch wenn dies für das ordnungsgemäße Funktionieren der Rolle nicht erforderlich ist.

Das Erstellen einer neuen Rolle erfordert möglicherweise erweiterte Ansible-Kenntnisse und kann eine Herausforderung für Teams sein, die gerade erst lernen, Automatisierungsinhalte zu erstellen. Um sich das Erstellen von Inhalten zu erleichtern, können neue ebenso wie erfahrene Automatisierungsentwicklungsteams Red Hat® Ansible Lightspeed with IBM watsonx Code Assistant nutzen. Dieser generative KI-Service stellt Codeempfehlungen basierend auf Best Practices für Ansible bereit. Sie können die gewünschte Automatisierung mit Prompts in natürlicher Sprache beschreiben und erhalten dann Vorschläge für Inhalte mit einzelnen oder mehreren Aufgaben von Ansible Lightspeed with watsonx Code Assistant. Die generierten Aufgaben können dann in eine Ansible Role oder ein Playbook integriert werden.

Mit Ansible Lightspeed with watsonx Code Assistant können Sie Ansible-Code mit weniger Aufwand erstellen, warten und verbessern, was wiederum zu einer höheren Produktivität und kürzeren Einführungszeiten führt. 

Lernressourcen für den Einstieg in Ansible Automation Platform

Da sich Ansible Roles unkompliziert teilen lassen, können Sie gut gewartete und getestete Rollen in Ihre Automatisierung integrieren. Rollen lassen sich mithilfe der folgenden Repositories teilen:

  • Ansible Galaxy: Über dieses kostenlose Repository lassen sich Rollen und andere Ansible-Inhalte mit der gesamten Ansible-Community teilen. Rollen können über die Befehlszeile (CLI) in Ansible Galaxy hochgeladen werden, während Sammlungen über die Webschnittstelle geteilt werden können. Da es sich bei Ansible Galaxy um eine Community-Site handelt, werden Inhalten nicht von Red Hat unterstützt, zertifiziert oder geprüft.
  • Ansible Automation Hub: Mit einer Subskription für Red Hat Ansible Automation Platform erhalten Sie auch Zugriff auf Ansible Automation Hub, einem zentralen Repository, in dem Sie Ansible Content Collections finden, herunterladen und teilen können. Ansible Automation Hub wird von Red Hat gehostet und beinhaltet sowohl zertifizierte als auch validierte Inhalte von Red Hat und unseren ISV-Partnern (unabhängige Softwareanbieter).
  • Privater Automation Hub: Als On-Premise-Repository ermöglicht der private Automation Hub Unternehmen das interne Verwalten, Teilen und Kuratieren von Inhalten – nur für Ihr Unternehmen. Durch das Teilen von Rollen und anderen Automatisierungsinhalten innerhalb Ihres Unternehmens können Ihre Teams Workflows vereinfachen und die Automatisierung beschleunigen. 

Red Hat Ansible Automation Platform ist eine einheitliche Plattform, die entwickelt wurde, um Unternehmen bei der Beschleunigung, Orchestrierung und Innovation durch Automatisierung zu unterstützen. Mit Ihrer Red Hat Subskription erhalten Sie Zugriff auf Red Hat Certified Content Collections und Ansible Validated Content – verfügbar über Ansible Automation Hub.

Red Hat Ansible Lightspeed with IBM watsonx Code Assistant ist ebenfalls Bestandteil Ihrer Subskription. Diese Komponente optimiert den Schreibprozess und verbessert so die Aufgaben, die in Ihren Ansible Roles enthalten sind. Dadurch können Ihre Automatisierungsteams Inhalte effizienter erstellen. Ansible Lightspeed ist vollständig in Visual Studio Code integriert und erleichtert die Automatisierungsentwicklung – Sie können Ansible Roles und Playbooks gemäß Best Practices erstellen, ohne je zwischen Entwicklungsumgebungen hin- und herwechseln zu müssen.

Ansible Lightspeed verfügt außerdem über Funktionen zum Abgleich der Inhaltsquellen. Dadurch können Sie die Quelltrainingsdaten für die erhaltenen Vorschläge prüfen und bessere Entscheidungen treffen, wenn Sie Rollen für Ihre Nutzenden erstellen. Die Modelle von Ansible Lightspeed werden an Tausenden von Rollen aus der Ansible-Community und an von Red Hat bereitgestellten Datenpunkten trainiert. So können Sie Ansible-Code auf genaue und transparente Weise erstellen und verbessern – und damit Unternehmensanforderungen gerecht werden und die Einführung beschleunigen.

Mehr über die Vorteile der Automatisierung mit Red Hat erfahren

Hub

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.

Red Hat Testversionen

Unsere kostenlosen Testversionen unterstützen Sie dabei, praktische Erfahrungen zu sammeln, sich auf eine Zertifizierung vorzubereiten oder zu bewerten, ob ein Produkt die richtige Wahl für Ihr Unternehmen ist.

Weiterlesen

Ansible-Module und IT-Automatisierung: Details und Einsatz

Was ist ein Ansible-Modul? Ansible-Module sind kleine Programme, die bestimmte Automatisierungsaufgaben auf lokalen Rechnern, APIs oder Remote-Hosts ausführen.

Was sind Ansible Rulebooks? - Automatisierung mit Ansible

Ansible Rulebooks sind Regelsätze in Event-Driven Ansible, die eventgesteuerte Automatisierungsabläufe beim Eintreten bestimmter Ereignisse durchführen.

Was ist CloudOps?

Bei CloudOps oder Cloud Operations handelt es sich um eine Kombination aus IT-Operationen und Best Practices für die Verwaltung von Cloud-Umgebungen.

Ressourcen zu Automatisierung und Management

Ausgewähltes Produkt

  • Red Hat Ansible Automation Platform

    Eine Plattform für die Implementierung unternehmensweiter Automatisierung - unabhängig davon, in welcher Phase der Automatisierung Sie sich befinden.

Verwandte Artikel