GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ansible-Rollen und ihre Verwendung in Playbooks

Beim Schreiben von Ansible-Playbook-Dateien ist Ihnen vielleicht aufgefallen, dass Sie einen Teil des in Ihren vorhandenen Playbooks definierten Codes wiederverwenden könnten. Beispielsweise könnten Sie den Code für die Installation des MariaDB-Datenbankservers auf einem verwalteten Host mit anderen Hostnamen, Benutzern und Passwörtern für einen anderen Remote-Host umfunktionieren. Dies spart viel Zeit und Energie, die für das Schreiben neuer Playbook-Dateien von Grund auf aufgewendet worden wäre. Und hier kommt das Konzept der Ansible-Rollen ins Spiel.

Eine Ansible-Rolle ist ein Konzept, bei dem Aufgaben in einzelne Dateien umfunktioniert werden, die einfacher zu verwalten und zu manipulieren sind. Jede Rolle bietet eine Reihe von Aufgaben, Variablen und Handlern – um nur einige zu nennen – die für ihre Implementierung erforderlich sind. Rollen ermöglichen es Benutzern, lange und komplexe Playbook-Strukturen in einfachere, kürzere und übersichtlichere Playbook-Dateien zu reorganisieren. Wie bereits erwähnt, sollen Rollen wiederverwendbar sein, und das Aufrufen von Rollen in der Playbook-Datei vereinfacht den Code und eliminiert Duplikate. Wiederkehrende Aufgaben wie Installation und Konfiguration von Anwendungen können in separate Dateien gepackt und auf verschiedenen verwalteten Hosts wiederverwendet werden.

In diesem Leitfaden erfahren Sie, wie Sie Ansible-Rollen in Playbooks erstellen und verwenden. Zur Demonstration erstellen wir eine Rolle, die den Apache-Webserver installiert und die Firewall so konfiguriert, dass Port 80 geöffnet wird.

So erstellen Sie eine Ansible-Rolle

Wir beginnen mit der Erstellung einer einfachen Ansible-Rolle. Um eine Rolle zu erstellen, verwenden Sie einfach die folgende Befehlssyntax, wobei myrole ist der Name der Rolle.

$ ansible-galaxy init myrole

Zum Beispiel, um eine Rolle mit dem Namen test_role zu erstellen Rufen Sie den Befehl auf.

$ ansible-galaxy init  test-role

Aus der Ausgabe entnehmen wir, dass der Befehl eine Testrolle erzeugt Verzeichnis und enthält standardmäßig einige Standardverzeichnisse. Sie können den Baum verwenden Befehl, um sie wie gezeigt aufzulisten.

$ tree test-role

Lassen Sie uns einen kurzen Überblick darüber geben, was jedes Verzeichnis enthält

Die „Standardeinstellungen ’-Ordner – Dieses Verzeichnis enthält die Standardvariablen, die von der Rolle benötigt werden. Diese Variablen haben die niedrigste Priorität und können daher recht einfach überschrieben werden.

Die ‘Dateien ’-Ordner – Dieser Ordner enthält Dateien, die auf den verwalteten oder Remote-Host kopiert werden sollen.

Die „Handler ’-Ordner – Das Verzeichnis enthält Handler, die normalerweise durch die Anweisung „notify“ aufgerufen werden. Sie können mehr über Ansible-Handler erfahren.

Die „Meta ’-Ordner – Besteht aus den Metadaten einer Rolle, z. B. Autor, Abhängigkeiten usw.

Die „Aufgaben ’ Ordner – Er enthält eine YAML-Datei, die die Liste der Aufgaben definiert, die von der Rolle selbst ausgeführt werden sollen. Es enthält die main.yml Datei.

Die ‘Vorlagen ’-Ordner – Das Verzeichnis enthält Vorlagendateien, die nach Bedarf geändert werden können, um die Rolle zu konfigurieren.

Die „Tests ’-Ordner – Integriert Tests mit Ansible-Playbook-Dateien.

Die ‘vars ’-Ordner – Enthält Variablen, die später von der Rolle verwendet werden. Rolle. Diese Variablen haben eine höhere Priorität als die in den „Standards“. ’ Verzeichnis.

Wir werden zu Demonstrationszwecken zwei Rollen erstellen:

Der git Rolle – Dadurch wird die neueste Version von Git installiert.

Der Apache Rolle – Dadurch wird der Apache-Webserver installiert

Erstellen Sie sie wie folgt:

$ sudo ansible-galaxy init git
$ sudo ansible-galaxy init apache

Danach müssen wir jede Rolle definieren, indem wir die main.yml bearbeiten Datei in den Aufgaben ’-Ordner in jeder Rolle. Beginnen wir mit der Definition des git Rolle.

$ sudo vim git/tasks/main.yml

Definieren Sie die Aufgabe für die Git-Rolle wie gezeigt.

Speichern Sie die main.yml Datei und beenden.

Definieren Sie als Nächstes die Aufgabe für die Apache-Rolle.

$ sudo vim apache/tasks/main.yml

Geben Sie den Task an, der den Apache-Webserver installiert.

Speichern Sie ebenso die main.yml Datei und beenden.

Erstellen Sie eine Playbook-Datei und rufen Sie die Rollen auf

Nachdem die Aufgaben für jede Rolle in der main.yml definiert wurden Datei für jede Rolle, erstellen Sie eine Playbook-Datei und verweisen Sie wie gezeigt auf die Rollen.

$ sudo vim roles_demo.yml

HINWEIS:

Sie müssen den vollständigen Pfad zur Rolle im Playbook angeben.

Rollen:

  • /path/to/role

In diesem Beispiel befinden sich die Rollen im selben Verzeichnis wie die Playbook-Datei, und es genügt, sie einfach mit ihrem Namen zu nennen.

Führen Sie dann schließlich die Playbook-Datei aus.

$ sudo ansible-playbook /etc/ansible/roles_demo.yml

Auf die in der Playbook-Datei definierten Rollen wird verwiesen und ihre jeweiligen Aufgaben werden ausgeführt. Hier installiert Ansible sowohl Git als auch den Apache-Webserver.

Sie können die Installation überprüfen, indem Sie die angezeigten Befehle ausführen.

$ git --version
$ apachectl -v

Wie Sie bereits bemerkt haben, ist die Playbook-Datei kurz und leicht nachzuvollziehen, da die Aufgaben von den in der Playbook-Datei angegebenen Rollen referenziert wurden.

Zusammenfassung

Ansible-Rollen helfen bei der Organisation von Playbook-Dateien und helfen, Code-Duplizierung zu vermeiden. Sie können wiederverwendet und von anderen Playbook-Dateien referenziert werden, um ähnliche Aufgaben auf verschiedenen Knoten auszuführen, wodurch Zeit und Energie gespart werden, die zum Schreiben neuer Playbooks verwendet werden könnten. Insgesamt erleichtern Rollen die Arbeit.


Ubuntu
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So installieren und verwenden Sie TensorFlow unter CentOS 7

  3. So installieren und konfigurieren Sie Ansible unter Windows

  4. So installieren und verwenden Sie Ansible unter Debian 11

  5. So verwenden Sie Ansible zum Installieren und Konfigurieren von Redis 6 unter Debian 11

So erstellen und verwenden Sie benutzerdefinierte Fakten in Ansible

So definieren und verwenden Sie Handler in Ansible Playbooks

So installieren und verwenden Sie Ansible unter Debian 10

So installieren und verwenden Sie R unter Ubuntu

Was ist PPA in Ubuntu Linux und wie verwende ich sie?

Farbschemata in Vim:Wie man sie ändert und verwendet