Ansible Tutorial - Lernen Sie, Ansible Playbooks zu schreiben



In diesem Ansible Tutorial-Blog erfahren Sie, wie Sie Ansible-Playbooks und Ad-hoc-Befehle schreiben und praktische Übungen durchführen, um Nginx auf Ihrem Host-Computer bereitzustellen.

Ansible Tutorial

Ich hoffe, Sie haben meinen vorherigen Blog durchgesehen, um etwas zu lernen und die am häufigsten verwendeten Terminologien von Ansible. Falls Sie dies nicht tun, lesen Sie es bitte durch, damit Sie dieses Ansible-Tutorial besser verstehen.Sie sollten auch wissen, dass Ansible einen entscheidenden Teil von ausmacht als Tool für Konfigurationsmanagement, Bereitstellung und Orchestrierung.

Lassen Sie mich Ihnen einen Überblick über dieses 'Ansible Tutorial' geben:





Ansible Playbook Tutorial | DevOps Training | Edureka

Ansible Tutorial - Schreiben von Ansible Playbooks

Playbooks in Ansible sind im YAML-Format geschrieben. Es ist eine für Menschen lesbare Datenserialisierungssprache. Es wird häufig für Konfigurationsdateien verwendet. Es kann auch in vielen Anwendungen verwendet werden, in denen Daten gespeichert werden.



Bei Ansible beginnt fast jede YAML-Datei mit einer Liste. Jedes Element in der Liste ist eine Liste von Schlüssel / Wert-Paaren, die üblicherweise als 'Hash' oder 'Wörterbuch' bezeichnet werden. Wir müssen also wissen, wie man Listen und Wörterbücher in YAML schreibt.

Alle Mitglieder einer Liste sind Zeilen, die mit derselben Einrückungsstufe beginnen und mit einem „-“ (Bindestrich und Leerzeichen) beginnen. Es sind kompliziertere Datenstrukturen möglich, beispielsweise Listen von Wörterbüchern oder gemischte Wörterbücher, deren Werte Listen oder eine Mischung aus beiden sind.

z.B. Für eine Liste der Abteilungen in edureka:



Abteilungen: - Marketing - Vertrieb - Lösungen - Verfassen von Inhalten - Support - Produkt

Lassen Sie mich nun ein Beispiel für ein Wörterbuch geben:

-USA -Kontinent: Nordamerika -Kapital: Washington DC -Bevölkerung: 319 Millionen

Hosts und Benutzer:

Für jedes Spiel in einem Playbook können Sie auswählen, auf welche Computer in Ihrer Infrastruktur Sie abzielen und welchen Remotebenutzer die Aufgaben ausführen möchten. Um Hosts in das Ansible-Inventar aufzunehmen, verwenden wir die IP-Adressen der Host-Computer.

Im Allgemeinen sind die Hosts eine Liste mit einer oder mehreren Gruppen oder Hostmustern, die durch Doppelpunkte getrennt sind. Der Remote-Benutzer ist nur der Name des Benutzerkontos.

Variablen:

Ansible verwendet zuvor definierte Variablen, um mehr Flexibilität in Playbooks und Rollen zu ermöglichen. Sie können verwendet werden, um eine Reihe vorgegebener Werte zu durchlaufen, auf verschiedene Informationen wie den Hostnamen eines Systems zuzugreifen und bestimmte Zeichenfolgen in Vorlagen durch bestimmte Werte zu ersetzen.

Ansible definiert bereits eine Vielzahl von Variablen, die für jedes System individuell sind. Wann immer Ansible auf einem System ausgeführt wird, werden alle Fakten und Informationen über das System gesammelt und als Variablen festgelegt.

Aber es gibt eine Regel zum Benennen von Variablen. Variablennamen sollten Buchstaben, Zahlen und Unterstriche sein. Variablen sollten immer mit einem Buchstaben beginnen. Z.B. wamp_21, port5 ist ein gültiger Variablenname, während 01_port, _server ungültig sind.

Aufgaben:

Mit Aufgaben können Sie Teile der Konfigurationsrichtlinie in kleinere Dateien aufteilen. Die Aufgabe umfasst das Abrufen aus anderen Dateien. Aufgaben in Ansible haben so ziemlich die englische Bedeutung.

Zum Beispiel: Installieren, aktualisieren usw.

Handler:

Handler sind wie normale Aufgaben in einem Ansible-Playbook, werden jedoch nur ausgeführt, wenn die Aufgabe eine Benachrichtigungsanweisung enthält und auch anzeigt, dass sie etwas geändert hat. Wenn beispielsweise eine Konfigurationsdatei geändert wird, benachrichtigt die Task, die auf die Konfigurationsdatei verweist, möglicherweise einen Dienstneustart-Handler.

Lassen Sie mich Ihnen ein Beispiel für ein Playbook geben, mit dem das Apache httpd-Serverprogramm gestartet wird:

--- ---.- -Gastgeber:: Webserver deren:: http_port:: 80 max_clients:: 200 remote_user:: Wurzel Aufgaben:: - - Name:: Stellen Sie sicher, dass Apache auf der neuesten Version ist lecker:: name = httpd state = spätestens - - Name:: Schreiben Sie die Apache-Konfigurationsdatei Vorlage:: src = / srv / httpd.j2 dest = / etc / httpd.conf benachrichtigen:: - - Starten Sie Apache neu - - Name:: Stellen Sie sicher, dass Apache ausgeführt wird (und aktivieren Sie es beim Booten). Bedienung:: name = httpd state = gestartet aktiviert = ja Handler:: - - Name:: Starten Sie Apache neu Bedienung:: name = httpd state = neu gestartet

Ich hoffe, das Beispiel bezieht Sie auf die gesamte Beschreibung der oben erwähnten Playbook-Komponenten. Wenn es Ihnen immer noch nicht klar ist, machen Sie sich keine Sorgen, dass alle Ihre Zweifel im späteren Teil dieses Blogs klar werden.

Hier dreht sich alles um Spielbücher. Die Spielbücher, die von Ihnen geschrieben werden. Ansible bietet Ihnen jedoch auch eine Vielzahl von Modulen, die Sie verwenden können.

Ansible Tutorial - Module

Module in Ansible sind idempotent. Unter dem Gesichtspunkt eines RESTful-Dienstes können Clients, damit eine Operation (oder ein Dienstaufruf) idempotent ist, denselben Anruf wiederholt tätigen, während sie dasselbe Ergebnis erzielen. Mit anderen Worten, das Erstellen mehrerer identischer Anforderungen hat den gleichen Effekt wie das Erstellen einer einzelnen Anforderung.

In Ansible gibt es verschiedene Modultypen

  • Kern Module
  • Extras Module

Kern Module

Dies sind Module, die das Ansible-Kernteam verwaltet und die immer mit Ansible selbst geliefert werden. Sie erhalten außerdem für alle Anfragen eine etwas höhere Priorität als die in den 'Extras' -Repos.

Die Quelle dieser Module wird von Ansible auf GitHub im Ansible-Module-Core gehostet.

Extras Module

Diese Module werden derzeit mit Ansible ausgeliefert, werden jedoch möglicherweise in Zukunft separat ausgeliefert. Sie werden auch hauptsächlich von der Ansible-Community gepflegt. Nicht zum Kern gehörende Module können weiterhin vollständig verwendet werden, erhalten jedoch möglicherweise etwas niedrigere Antwortraten für Probleme und Pull-Anforderungen.

Beliebte „Extras“ -Module können im Laufe der Zeit zu Kernmodulen befördert werden.

Die Quelle für diese Module wird von Ansible auf GitHub in den Ansible-modules-extras gehostet.

Zum Beispiel: Das Extras-Modul in den Remote-Verwaltungsmodulen ist das ipmi_power-Modul, ein Power Manager für die Remote-Maschinen. Zum Ausführen ist Python 2.6 oder höher und Pyghmi erforderlich.

Sie können dieses Modul verwenden, indem Sie einen Ad-hoc-Befehl wie den folgenden schreiben:

Was ist Gerüst in Selen
ipmi_power: name = 'test.domain.com' user = 'localhost' password = 'xyz' state = 'on'

Ansible Tutorial - Rückgabewerte

Ansible-Module geben normalerweise eine Datenstruktur zurück, die in einer Variablen registriert oder direkt bei der Ausgabe durch das Ansible-Programm angezeigt werden kann. Jedes Modul kann optional seine eigenen eindeutigen Rückgabewerte dokumentieren.

Einige Beispiele für Rückgabewerte sind:

  • geändert: Gibt bei jeder Änderung durch die Aufgabe einen booleschen Wert zurück.
  • fehlgeschlagen: Gibt einen booleschen Wert zurück, wenn die Aufgabe fehlgeschlagen ist
  • msg: Gibt eine Zeichenfolge mit einer generischen Nachricht zurück, die an den Benutzer weitergeleitet wird.

Ansible Tutorial - AdHoc-Befehle

Ad-hoc-Befehle sind einfache einzeilige Befehle zum Ausführen einer Aktion. Das Ausführen von Modulen mit Ansible-Befehlen sind Ad-hoc-Befehle.

Z.B:

ansible host -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

Der obige Ad-hoc-Befehl verwendet das Netscaler-Modul, um den Server zu deaktivieren. In Ansible stehen Hunderte von Modulen zur Verfügung, in denen Sie auf Ad-hoc-Befehle verweisen und diese schreiben können.

Nun, genug mit all den theoretischen Erklärungen, lassen Sie mich Ihnen Ansible mit ein paar praktischen Übungen erklären.

Ansible Tutorial - Praktisch

Ich werde ein Playbook schreiben, um Nginx auf meinem Knoten / Host-Computer zu installieren.

Lass uns anfangen :)

Schritt 1: Stellen Sie über SSH eine Verbindung zu Ihren Hosts her. Dazu müssen Sie einen öffentlichen SSH-Schlüssel generieren.

Verwenden Sie den folgenden Befehl:

ssh-keygen

Generieren Sie Ssh Key - Ansible Tutorial - Edureka

Wie Sie im obigen Schnappschuss sehen können, ist der Befehl ssh-keygen hat einen öffentlichen SSH-Schlüssel generiert.

Schritt 2: Ihre nächste Aufgabe besteht darin, den öffentlichen SSH-Schlüssel auf Ihre Hosts zu kopieren. Verwenden Sie dazu den folgenden Befehl:

ssh-copy-id -i root @

Der obige Schnappschuss zeigt den SSH-Schlüssel, der auf die Hosts kopiert wird.

Schritt 3: Listen Sie die IP-Adressen Ihrer Hosts / Knoten in Ihrem Inventar auf.

Verwenden Sie den folgenden Befehl:

vi / etc / ansible / hosts

füge zwei Zahlen in Java hinzu

Dadurch wird ein vi-Editor geöffnet, in dem Sie die IP-Adressen Ihrer Hosts auflisten können. Dies ist jetzt Ihr Inventar.

Schritt 4: Pingen wir, um sicherzustellen, dass eine Verbindung hergestellt wurde.

Der obige Schnappschuss bestätigt, dass eine Verbindung zwischen Ihrem Steuercomputer und dem Host hergestellt wurde.

Schritt 5: Lassen Sie uns jetzt ein Playbook schreiben, um Nginx auf dem Host-Computer zu installieren. Sie können Ihr Playbook im vi-Editor schreiben. Erstellen Sie dazu einfach Ihr Playbook mit dem folgenden Befehl:

vi

Der folgende Schnappschuss zeigt mein Playbook zur Installation von Nginx im YAML-Format.

Die Aufgaben eines Spielbuchs werden in YAML als Liste von Wörterbüchern definiert und von oben nach unten ausgeführt. Wenn wir mehrere Hosts haben, wird jede Aufgabe für jeden Host ausprobiert, bevor mit dem nächsten fortgefahren wird. Jede Aufgabe ist als Wörterbuch definiert, das mehrere Schlüssel haben kann, z. B. 'Name' oder 'Sudo', die den Namen der Aufgabe angeben und angeben, ob Sudo-Berechtigungen erforderlich sind.

Eine Variable Server Port ist so eingestellt, dass der TCP-Port abgehört wird 8080 für eingehende Anfragen.

Hier besteht die erste Aufgabe darin, das für die Installation von Nginx erforderliche Paket zu erhalten und es dann zu installieren.Intern überprüft Ansible, ob das Verzeichnis vorhanden ist, und erstellt es, wenn dies nicht der Fall ist. Andernfalls wird nichts unternommen.

Die nächste Aufgabe besteht darin, Nginx zu konfigurieren.In Nginx enthalten Kontexte Konfigurationsdetails.

Hier ist die Vorlage eine Datei, die Sie auf Hosts bereitstellen können. Vorlagendateien enthalten jedoch auch einige Referenzvariablen, die aus Variablen gezogen werden, die als Teil eines Ansible-Playbooks definiert sind, oder aus Fakten, die von den Hosts gesammelt wurden. Fakten mit den Konfigurationsdetails werden aus einem Quellverzeichnis abgerufen und in ein Zielverzeichnis kopiert.

Handler definieren hier die Aktion, die nur ausgeführt werden soll, wenn Aufgaben oder Statusänderungen benachrichtigt werden. In diesem Playbook haben wir definiert, benachrichtigen: Nginx-Handler neu starten, der Nginx neu startet, sobald die Dateien und Vorlagen auf Hosts kopiert wurden.

Speichern Sie nun die Datei und beenden Sie sie.

Schritt 6: Führen Sie nun dieses Playbook mit dem folgenden Befehl aus:

ansible-playbook .yml

Wir können im Screenshot oben sehen, dass unsere Aufgabe ausgeführt wird. Nginx wird installiert.

Schritt 7: Überprüfen wir, ob Nginx auf meinem Host-Computer installiert ist. Verwenden Sie den folgenden Befehl:

ps waux | grep nginx

Im obigen Screenshot sehen Sie, dass verschiedene Prozess-IDs 3555 und 103316 ausgeführt werden, wodurch sichergestellt wird, dass Nginx auf Ihren Host-Computern ausgeführt wird.

Herzliche Glückwünsche! Sie haben Nginx mithilfe von Ansible-Playbooks erfolgreich auf Ihrem Host bereitgestellt. Ich hoffe, Ihnen hat das Lesen dieses Ansible Tutorial-Blogs gefallen. Bitte lassen Sie mich wissen, wenn Sie Fragen im Kommentarbereich unten haben.

Wenn Sie dies gefunden haben “ Ansible Tutorial ”Relevant, Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka DevOps-Zertifizierungskurs hilft den Lernenden, Kenntnisse in verschiedenen DevOps-Prozessen und -Tools wie Puppet, Jenkins, Ansible, Nagios und Git zu erlangen, um mehrere Schritte in SDLC zu automatisieren.