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

So erstellen Sie Ansible-Rollen und verwenden sie im Playbook

Ansible ist ein Open-Source-Konfigurationsmanagement- und Orchestrierungstool, das die Automatisierung von IT-Aufgaben in einer mehrstufigen IT-Umgebung vereinfacht. Mit einem einzigen Befehl können Sie mehrere Server konfigurieren und Anwendungen bereitstellen, ohne sich bei jedem der Server anzumelden und die Konfiguration selbst vorzunehmen. Dabei vereinfacht Ansible Aufgaben, die sonst zeitraubend und mühsam wären.

Mit der Zunahme der Anzahl von Playbook-Dateien, die verschiedene Automatisierungsaufgaben ausführen, können die Dinge etwas komplex werden. Und hier kommen Ansible-Rollen ins Spiel.

Was ist eine Ansible-Rolle?

Eine Ansible-Rolle ist ein Konzept in Ansible, das sich eher mit Ideen als mit Ereignissen befasst. Im Wesentlichen ist eine Rolle eine Abstraktionsebene, die verwendet wird, um das Schreiben von Playbook-Dateien zu vereinfachen. Eine Rolle bietet ein Gerüst für wiederverwendbare Komponenten wie Variablen, Module, Aufgaben und Fakten, die in eine Playbook-Datei geladen werden können.

Praktische Anwendung

Um besser zu verstehen, wie Rollen verwendet werden, betrachten wir ein Szenario, in dem Sie 8 Aufgaben haben, die auf 2 Remote-Knoten ausgeführt werden müssen. Ein Ansatz wäre, alle Aufgaben, die auf den Remote-Hosts ausgeführt werden sollen, in einer einzigen Playbook-Datei zu definieren. Dies ist jedoch mühsam und wird höchstwahrscheinlich die Komplexität des Playbooks erhöhen. Ein besserer Ansatz wäre es, 8 separate Rollen zu erstellen, wobei jede Rolle eine einzelne Aufgabe ausführt und diese Rollen später in der Ansible-Playbook-Datei aufruft.

Einer der größten Vorteile der Verwendung von Rollen besteht darin, dass jede Rolle unabhängig von der anderen ist. Die Ausführung einer Rolle hängt nicht von der Ausführung einer anderen Rolle ab. Außerdem können Rollen geändert und wiederverwendet werden, wodurch die Notwendigkeit entfällt, die Spiele und Aufgaben in der Playbook-Datei neu zu schreiben.

Nehmen wir also an, Sie möchten eine Playbook-Datei erstellen, um den LAMP-Stack auf einem Debian-Server zu installieren. Eine bessere Möglichkeit, dies zu tun, besteht darin, zunächst drei separate Rollen zu erstellen, in denen jeweils Apache, MariaDB und PHP auf dem Remote-Host installiert werden. Schreiben Sie dann ein Playbook und rufen Sie die Rollen in der Playbook-Datei auf. Angenommen, Sie haben einen zweiten Debian-Server, den Sie für die Installation von Drupal CMS benötigen. Anstatt die Rollen erneut zu schreiben, können Sie einfach die 3 zuvor erstellten Rollen wiederverwenden und weitere Rollen für die Installation von Drupal hinzufügen.

Verstehst du?

Sehen wir uns nun an, wie Sie Ansible-Rollen erstellen können.

So erstellen Sie Ansible-Rollen

Um eine Ansible-Rolle von Grund auf neu zu erstellen, führen Sie den Befehl Ansible Galaxy aus, das Beispiel ist unten gezeigt:

$ ansible-galaxy init Rollenname

Um beispielsweise eine Rolle namens my-role zu erstellen, rufen Sie den Befehl auf.

$ ansible-galaxy init my-role

Auf dem Bildschirm oben erstellt der Befehl das my-role-Verzeichnis. Dieses Rollenverzeichnis enthält standardmäßig die folgenden Verzeichnisse oder Ordner.

  • Der Ordner „Standards“ – Dieser enthält die Standardvariablen, die von der Rolle verwendet werden.
  • Der Ordner „Dateien“ – Enthält Dateien, die von der Rolle bereitgestellt werden können.
  • Der Ordner „Handler“ – Speichert Handler, die von dieser Rolle verwendet werden können.
  • der „Meta“-Ordner – Enthält Dateien, die die Rollenabhängigkeiten festlegen.
  • Der Ordner „Tasks“ – Er enthält eine YAML-Datei, die die Aufgaben für die Rolle selbst enthält. Normalerweise ist dies die main.yml-Datei.
  • Der Ordner „Vorlagen“ – Enthält Vorlagendateien, die geändert und dem bereitgestellten Remote-Host zugewiesen werden können.
  • Der Ordner „Tests“ – integriert Tests mit Ansible-Playbook-Dateien.
  • Der Ordner „vars“ – Enthält Variablen, die von der Rolle verwendet werden. Sie können sie in der Playbook-Datei definieren, aber es wird empfohlen, sie in diesem Verzeichnis zu definieren.

Um die Rollenverzeichnisstruktur anzuzeigen, führen Sie den Baumbefehl gefolgt vom Rollennamen aus.

$ tree <role-name>

Jetzt werden wir zur Demonstration drei Ansible-Rollen wie folgt erstellen:

  • Die vorausgesetzte Rolle – Installiert Git
  • Die Mongodb-Rolle – Installiert die MongoDB-Datenbank-Engine
  • Die Apache-Rolle – Installiert den Apache-Webserver

Unter Verwendung der gleichen Syntax, die wir zuvor verwendet haben, werden wir die Rollen wie folgt erstellen:

$ sudo ansible-galaxy init prerequisites
$ sudo ansible-galaxy init mongodb
$ sudo ansible-galaxy init apache

Im nächsten Schritt definieren Sie jede Rolle, die Sie erstellt haben. Um dies zu erreichen, müssen Sie die Datei main.yml bearbeiten, die sich im Ordner „tasks“ für jede Rolle befindet.

Rolle —>  Aufgaben —> main.yml

Um beispielsweise die Voraussetzungsrolle zu bearbeiten, navigieren Sie wie gezeigt:

$ cd prerequisites/tasks/

Bearbeiten Sie dann die Datei main.yml.

$ sudo vim main.yml

Die Rolle für die Installation von Git ist wie gezeigt definiert:

- name: Install git
  apt:
     name: git
     state: present
     update_cache: yes

Für MongoDB haben wir 2 Aufgaben. Installieren von MongoDB und Starten des Mongod-Daemons.

- name: Install MongoDB
  apt:
     name: mongodb
     state: present
     update_cache: yes

- name: Start Mongod daemon
  shell: "mongod &"

Und schließlich für den Apache-Webserver:

- name: install Apache web server
  apt:
     name=apache2
     state=present
     update_cache=yes

Zuletzt erstellen wir eine Playbook-Datei namens stack.yml und benennen die Rollen wie gezeigt.

---
- hosts: all
  become: yes
  roles:
        -  prerequisites
        -  mongodb
        -  apache

Wie Sie sehen können, sieht die Playbook-Datei im Vergleich zur Definition der einzelnen Aufgaben für den Host ziemlich einfach aus.

Um sicherzustellen, dass unsere Rollen wie erwartet funktionieren, führen Sie die ansible Playbook-Datei wie gezeigt aus.

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

Das Playbook führt alle Rollen wie gezeigt aus.

Um sicherzustellen, dass die Pakete erfolgreich installiert wurden, überprüfen wir ihre Versionen wie gezeigt:

$ mongod --version
$ apachectl -v
$ git --version

Die obige Ausgabe bestätigt, dass die Rollen tatsächlich erfolgreich ausgeführt werden und dass das Paket installiert wurde. Perfekt!

Abschluss:

Ansible-Rollen vereinfachen Playbook-Dateien, insbesondere wenn mehrere Aufgaben auf mehreren Hosts ausgeführt werden müssen. Darüber hinaus können Sie Rollen für mehrere Hosts wiederverwenden, ohne die Playbook-Datei ändern zu müssen. Wenn Sie diesen Leitfaden nützlich fanden, senden Sie uns eine Nachricht und teilen Sie ihn mit Ihren Freunden.


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

  2. So erstellen und verwenden Sie Subdomains

  3. So installieren und verwenden Sie Ansible unter Debian 11

  4. So erstellen Sie einen Alias ​​und verwenden den Alias-Befehl in Linux

  5. Erstellen und löschen Sie Rollen in PostgreSQL

So erstellen und verwenden Sie benutzerdefinierte Fakten in Ansible

Ansible Guide:Ansible Playbook für LEMP Stack erstellen

So definieren und verwenden Sie Handler in Ansible Playbooks

So erstellen und führen Sie eine Ansible Playbook-Datei aus

Ansible-Rollen und ihre Verwendung in Playbooks

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux