Ansible Roles - Ultimative Möglichkeit, Ihre Playbooks zu entwirren



In diesem Ansible Roles-Blog wird erläutert, wie Rollen verwendet werden, um komplexe Playbooks lesbar und wiederverwendbar zu machen.

Mit Ansible können wir das Konfigurationsmanagement von Systemen automatisieren und beliebig viele Clients hinzufügen. Haben Sie sich jemals gefragt, wie komplex dies werden kann? Haben Sie sich jemals gefragt, wie lange und verwirrend die Spielbücher werden können? Wie lässt Ansible es immer noch wie ein Kinderspiel erscheinen? Es verwendet das Konzept der Ansible Roles und darüber werden wir in diesem Blog sprechen.

Behandelten Themen:





Wenn Sie DevOps beherrschen möchten, ' Natürlich wäre Ihre Wahl.

c ++ Sortieralgorithmus

Einführung in Ansible Roles

Ansible Role ist ein Konzept, das sich eher mit Ideen als mit Ereignissen befasst. Es ist im Grunde eine andere Abstraktionsebene, die zum Organisieren von Spielbüchern verwendet wird. Sie bieten ein Grundgerüst für eine unabhängige und wiederverwendbare Sammlung von Variablen, Aufgaben, Vorlagen, Dateien und Modulen, die automatisch in das Playbook geladen werden können. Playbooks sind eine Sammlung von Rollen. Jede Rolle hat spezifische Funktionen.



Lassen Sie mich dies anhand eines Beispiels erklären. Angenommen, Sie möchten, dass Ihr Playbook 10 verschiedene Aufgaben auf 5 verschiedenen Systemen ausführt. Würden Sie dafür ein einziges Playbook verwenden? Nein, die Verwendung eines einzelnen Spielbuchs kann verwirrend und fehleranfällig sein. Stattdessen können Sie 10 verschiedene Rollen erstellen, wobei jede Rolle eine Aufgabe ausführt. Dann müssen Sie nur noch den Namen der Rolle im Playbook angeben, um sie aufzurufen. In diesem Blog erfahren Sie, wie Sie Rollen weiter verwenden.

Wiederverwendbarkeit von Ansible-Rollen

Ansible Rollen sind unabhängig voneinander. Die Ausführung einer Rolle hängt nicht von anderen ab und kann daher wiederverwendet werden. Sie können diese Rollen sogar entsprechend Ihren Anforderungen ändern und personalisieren. Dies reduziert unsere Aufgabe, jedes Mal, wenn wir ihn benötigen, einen ganzen Codeabschnitt neu zu schreiben, wodurch unsere Arbeit vereinfacht wird.

Kehren wir zum vorherigen Beispiel zurück. Sie haben 10 Rollen geschrieben und müssen jetzt 5 davon für eine andere Bereitstellung verwenden. Schreibst du das ganze Spielbuch noch einmal? Nein, Sie verwenden diese 5 Rollen einfach wieder, indem Sie sie in diesem neuen Playbook aufrufen. Sie können bei Bedarf auch Änderungen vornehmen, dies würde jedoch viel Zeit sparen.



Angenommen, Sie müssen ein Playbook schreiben, um den LAMP-Stack einzurichten. Sie müssen jeweils 4 Rollen zum Erstellen von Linux, Apache, MongoDB und PHP erstellen. Wenn Sie in Zukunft ein weiteres Playbook zum Einrichten des LAMP-Stacks sowie von WordPress benötigen, werden Sie dann wieder neue Rollen für den LAMP-Stack und WordPress erstellen? Nein! Sie können einfach die älteren Rollen (die für den LAMP-Stack verwendet werden) wiederverwenden und zusätzlich eine neue Rolle für WordPress erstellen.

Rollenverzeichnisstruktur

Erwarten Sie bei Verwendung von Ansible Roles, dass sich Dateien in einer bestimmten Dateistruktur befinden. Der verwirrendste Teil der Verwendung von Rollen ist das Verständnis der Dateihierarchie. Ansible bietet eine Funktion namens Ansible Galaxy, mit der Sie mit Rollen spielen können. Wir wissen bereits, wo sich unser Ansible unter Ubuntu befindet (/ etc / ansible). Haben Sie jemals ein Verzeichnis namens Rollen unter / etc / ansible gesehen? Dieses Verzeichnis existiert genau aus diesem Grund. Sie erstellen verschiedene Rollen in diesem Verzeichnis.

Das Verzeichnis sieht folgendermaßen aus:

Baum - Ansible Rollen - Edureka

Sie können eine Rolle mit erstellen Ansible-Galaxie Befehl init in / etc / ansible / role.

$sudoAnsible-Galaxie init

Sie werden sehen, dass auch andere Rollenverzeichnisse erstellt wurden.

Diese Verzeichnisse sind Aufgaben, Handler, Standardeinstellungen, Variablen, Dateien, Vorlagen, Meta und eine README-Datei.mdDatei.

Aufgaben - Enthält die Hauptliste der Aufgaben, die von der Rolle ausgeführt werden sollen. Esenthältdie Datei main.yml für diese bestimmte Rolle.

Handler - Enthält Handler, die von dieser Rolle oder sogar außerhalb dieser Rolle verwendet werden können.

Standardeinstellungen - Enthält die Standardvariablen, die von dieser Rolle verwendet werden sollen.

Deren - Dieses Verzeichnis besteht aus anderen Variablen, die von der Rolle verwendet werden. Diese Variablen können in Ihrem Spielbuch definiert werden. Es ist jedoch eine gute Angewohnheit, sie in diesem Abschnitt zu definieren.

Was ist eine Marker-Schnittstelle in Java

Dateien - Enthält Dateien, die von dieser Rolle bereitgestellt werden können. Es enthält Dateien, die beim Konfigurieren der Rolle an die Hosts gesendet werden müssen.

Meta - Definiert Metadaten für diese Rolle. Grundsätzlich enthält es Dateien, die Rollenabhängigkeiten herstellen.

Jeder Aufgabe Verzeichnis muss aus a bestehen main.yml Datei, in der der eigentliche Code für diese bestimmte Rolle geschrieben ist.

Lassen Sie uns nun die Arbeitsweise oder Rollen anhand einer Demo zur Installation von MEAN Stack verstehen.

Demo: Installieren von MEAN Stack mit Ansible Roles

Ich werde zeigen, wie MEAN Stack mithilfe von Ansible Roles installiert wird, indem nur ein einziges Playbook ausgeführt wird. Wir werden drei Rollen haben: 1) Installieren der Voraussetzungen, 2) Installieren von MongoDB und 3) Installieren von NodeJS. Ich gehe davon aus, dass Sie es bereits sind Ansible installiert und eine Server-Client-Verbindung unter Ubuntu hergestellt . Beginnen wir mit Ansible Roles.

Schritt 1 - Navigieren Sie zum Verzeichnis / etc / ansible / role und erstellen Sie die Rollen für die Voraussetzungen MongoDB und NodeJS.

$ cd / etc / ansible / role $ sudo ansible-galaxy init voraussetzungen $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Sie sollten jetzt drei Rollen in Ihrem Rollenverzeichnis sehen.

Schritt 2 - Schreiben Sie main.yml für die Voraussetzungen, unter denen Git installiert wird.

$ cd prerequisites / task / main.yml --- - name: Installiere git apt: name: git state: present update_cache: yes

Schritt 3 - Schreiben Sie main.yml für die MongoDB-Rolle

$ cd /mongodb/tasks/main.yml --- - Name: MongoDB - Öffentlichen Schlüssel importieren apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - Name: MongoDB - Repository hinzufügen apt_repository: Dateiname: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' state: present update_cache : yes - name: MongoDB - MongoDB installieren apt: name: mongodb-org state: present update_cache: yes - name: Start der mongod-Shell: 'mongod &'

Schritt 4 - Schreiben Sie main.yml fürnodejsRolle

$ cd nodejs / task / main.yml --- - name: Node.js - Skript abrufen get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- Name: Node.js - Ausführungsberechtigung für Skriptdatei festlegen: Pfad:' {{var_node}} / nodejs.sh 'Modus:' u + x '- Name: Node.js - Installationsskript-Shell ausführen:' {{var_node}} / nodejs.sh '- Name: Node.js - Installationsskriptdatei entfernen: Pfad:' {{var_node}} / nodejs.sh 'Status: nicht vorhanden - Name: Node.js - Install Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Installiere bower und gulp global npm: name = {{item}} state = present global = yes with_items : - Laube - schlucken

Schritt 5 - Schreiben Sie Ihr Hauptspielbuch

$ cd /etc/ansible/mean.yml --- - Hosts: Knoten remote_user: ansible werden: ja werden_Methode: sudo vars: # Variable wird während der Knoteninstallation benötigt var_node: / tmp Rollen: - Voraussetzungen - mongodb - nodejs

Nachdem wir die Rollen für die Installation der Voraussetzungen definiert haben, ist M.ongoDB und NodeJsLassen Sie uns sie bereitstellen. Führen Sie das Playbook mit dem folgenden Befehl aus.

$sudoansible-playbook /etc/ansible/mean.yml -K

Wie Sie sehen, wurden alle Aufgaben ausgeführt und ihr Status hat sich geändert. Dies bedeutet, dass die Änderungen im Playbook sowohl auf Ihren Server als auch auf den Host angewendet wurden. Das Einrichten von MEAN Stack ist nur ein Beispiel. Mit Ansible Roles können Sie buchstäblich alles einrichten.

Dies bringt uns zum Ende des Ansible Roles-Blogs. Wenn Sie diesen Artikel hilfreich finden, lesen Sie die ' angeboten von Edureka. Es deckt alle Tools ab, die die IT-Branche verbessert haben.

Hast du eine Frage an uns? Bitte poste es auf und wir werden uns bei Ihnen melden.