Voraussetzungen
Wenn Sie die Beispiele in diesem Artikel ausprobieren möchten, müssen Sie:
1) Ansible auf Ihrem Computer installieren lassen.
2) Lassen Sie einen Ubuntu -Host für die Ansible -Automatisierung konfiguriert.
Es gibt viele Artikel unter LinuxHint, die der Installation von Ansible und Konfigurieren von Hosts für Ansible Automation gewidmet sind. Sie können diese Artikel bei Bedarf überprüfen.
Einrichten eines Projektverzeichnisses
Richten Sie vor dem weiteren weiter.
Um das Projektverzeichnis zu erstellen Register-Demo/ und alle erforderlichen Unterverzeichnisse (in Ihrem aktuellen Arbeitsverzeichnis) führen Sie den folgenden Befehl aus:
$ mkdir -pv Register -Demo/Playbooks
Sobald das Projektverzeichnis erstellt wurde, navigieren Sie wie folgt zum Projektverzeichnis:
$ CD Register-Demo/
Ein ... kreieren Gastgeber Inventardatei wie folgt:
$ nano Gastgeber
Fügen Sie den Host -IP- oder DNS -Namen Ihres Ubuntu -Hosts in der Bestandsdatei (ein Host pro Zeile) hinzu, wie im Screenshot unten gezeigt.
Hier habe ich meinen Ubuntu 20 hinzugefügt.04 LTS Host VM3.Nodekite.com im Ubuntu20 Gruppe.
Sobald Sie fertig sind, speichern Sie die Datei durch Drücken + X, gefolgt von Y Und .
Erstellen Sie eine ansible Konfigurationsdatei Ansible.CFG In Ihrem Projektverzeichnis wie folgt:
$ nano ansible.CFG
Geben Sie als nächstes die folgenden Zeilen in die Ansible.CFG Datei:
[Standardeinstellungen]Sobald Sie fertig sind, speichern Sie die Ansible.CFG Datei durch Drücken + X, gefolgt von Y Und .
Versuchen Sie nun, Ihren Ubuntu -Host wie folgt zu pingen:
$ ansible Ubuntu20 -U Ansible -m Ping
Wie Sie sehen können, mein Ubuntu 20.04 Host VM3.Nodekite.com ist zugänglich.
Beispiel 1: Die Grundlagen
In diesem Beispiel werde ich Ihnen einige der Grundlagen der Ansible zeigen registrieren Modul. Ich werde Ansible verwenden, um in meinem Ubuntu 20 ein zufälliges Passwort zu generieren.04 Host verwendet die pwgen Befehl, speichern Sie das Passwort in einer Variablen mit dem registrieren Modul und drucken Sie das Passwort auf dem Bildschirm.
Erstellen Sie zunächst das neue Spielbuch generate_pass.Yaml im Playbooks/ Verzeichnis wie folgt:
$ nano playbooks/generate_pass.YamlGeben Sie die folgenden Zeilen in die generate_pass.Yaml Datei:
- Hosts: Ubuntu20Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten generate_pass.Yaml Datei.
Die folgende Zeile fordert Ansible auf, das Spielbuch auszuführen generate_pass.Yaml auf jedem Host in der Ubuntu20 Gruppe. In meinem Fall wird das Spielbuch auf dem Host ausgeführt VM3.Nodekite.com.
In diesem Spielbuch werde ich drei Aufgaben definieren.
Die erste Aufgabe wird ergeben, dass die pwgen Paket ist installiert.
Die zweite Aufgabe erzeugt ein zufälliges Kennwort mit 30-Zeichen mit dem pwgen Befehl. Ich werde das verwenden registrieren Modul zum Speichern des generierten Passworts in der Mypass Variable.
Die dritte Aufgabe druckt die Mypass Variable mit dem Ansible debuggen Modul.
Führen Sie das Spielbuch aus generate_pass.Yaml Verwenden des folgenden Befehls:
$ Ansible-Playbook-Playbooks/generate_pass.YamlWie Sie sehen können, lief das Spielbuch erfolgreich. Es wurde auch ein Passwort generiert.
Aber warum hat die Variable Mypass Drucken Sie so viele Artikel aus?
Nun, die Variable Mypass ist ein Objekt, das einige wichtige Eigenschaften enthält.
Die wichtigsten Eigenschaften von jedem der registrieren Variablen sind wie folgt:
CMD - Der Befehl, der lief, um die Ausgabe zu erzeugen.
Stdout - Die Ausgabe des Befehls.
Stderr - Die Fehlerausgabe des Befehls.
Start - Das Datum und die Uhrzeit, zu der der Befehl ausgeführt wurde.
Ende - Datum und Uhrzeit, zu dem der Befehl ausgeführt wurde.
Delta - Die Zeit, die zum Ausführen des Befehls benötigt wird. Dies ist der Unterschied zwischen den Ende und das Start Eigenschaften.
stdout_lines - Ein Array, das jede Ausgabestelle des Befehls enthält. Gleich wie Stdout, Aber Stdout trennt die Zeilen mithilfe einer neuen Zeichen (\ n) anstelle von Arrays.
stderr_lines - Ein Array, das jede Fehlerausgabezeile des Befehls enthält. Gleich wie Stderr, Aber Stderr trennt die Zeilen mit den Newlines (\ n) Zeichen anstelle von Arrays.
Wenn Sie nur die Kennwortzeichenfolge ausdrucken/zugreifen möchten (was sehr wahrscheinlich ist), können Sie die drucken/zugreifen Stdout Eigentum des Mypass Variable in Ihrem Spielbuch, wie im Screenshot unten markiert.
$ nano playbooks/generate_pass.YamlSobald Sie fertig sind, führen Sie das Spielbuch aus generate_pass.Yaml nochmal. Nur die Passwortzeichenfolge wird gedruckt, wie Sie im Screenshot unten sehen können.
Das deckt die Grundlagen des Ansiblens ab registrieren Modul.
Beispiel 2: Inhalt des Verzeichnisses speichern
In diesem Beispiel werde ich Ihnen zeigen registrieren Modul sowie wie man über sie itert.
Erstellen Sie zunächst das neue Spielbuch get_dir_contents.Yaml im Playbooks/ Verzeichnis.
$ nano playbooks/get_dir_contents.YamlGeben Sie als nächstes die folgenden Zeilen in die get_dir_contents.Yaml Spielbuch:
- Hosts: Ubuntu20Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten generate_pass.Yaml Datei.
In diesem Spielbuch werde ich zwei Aufgaben definieren.
Die erste Aufgabe listet den gesamten Inhalt der auf /home/Ansible Verzeichnis und speichert sie in der Dir_Contents Variable.
Die zweite Aufgabe druckt die Dir_Contents Variable.
Leiten Sie die get_dir_contents.Yaml Spielbuch wie folgt.
$ Ansible-Playbook Playbooks/get_dir_contents.YamlWie Sie sehen können, die stdout_lines Das Eigentum speicherte den Verzeichnisgehalt als Array. Der Stdout Eigentum wird auch im Verzeichnisgehalt gespeichert. Diese Eigenschaften werden durch neue (\ n) Zeichen getrennt. In diesem Beispiel die stdout_lines Eigenschaft ist leicht zu arbeiten.
Als nächstes über den Verzeichnisgehalt mit einer Schleife iterieren.
Öffnen Sie dazu die get_dir_contents.Yaml Spielbuch und ändern Sie die zweite Aufgabe, wie im Screenshot unten markiert.
$ nano playbooks/get_dir_contents.YamlHier bin ich über die Iterie Dir_Contents.stdout_lines Array mit einer Schleife und Drucken der Array -Elemente mit dem Ansible debuggen Modul. In dieser Aufgabe die Artikel Variable ist eine Schleifenvariable, mit der über die Array -Elemente iteriert werden.
Leiten Sie die get_dir_contents.Yaml Spielbuch wie folgt:
$ Ansible-Playbook Playbooks/get_dir_contents.YamlWie Sie sehen können, der Inhalt der /home/ansible Verzeichnis werden auf dem Bildschirm gedruckt.
Beispiel 3: Backup -Verzeichnis
In diesem Beispiel werde ich Ihnen zeigen, wie Sie ein Verzeichnis mit dem Ansible sichern können registrieren, Datei, Und Kopieren Module.
Erstellen Sie zunächst das neue Spielbuch backup_home_dir.Yaml im Playbooks/ Verzeichnis wie folgt:
$ nano playbooks/backup_home_dir.YamlGeben Sie als nächstes die folgenden Zeilen in die backup_home_dir.Yaml Datei.
- Hosts: Ubuntu20Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten backup_home_dir.Yaml Datei.
In diesem Spielbuch werde ich drei Aufgaben definieren.
Die erste Aufgabe speichert den Inhalt der /home/ansible Verzeichnis (das Verzeichnis, das ich unterstützen werde) in der Dir_Contents Variable mit dem Ansible registrieren Modul.
Die zweite Aufgabe erstellt ein neues Verzeichnis /TMP/Ansible mit dem Ansible Datei Modul. Dies ist das Verzeichnis, in dem die Sicherung gespeichert wird.
Die dritte Aufgabe schießt durch die Dir_Contents.stdout_lines Array und verwendet das Ansible Kopieren Modul, um jedes Verzeichnis in die zu kopieren /tmp/ansible/ Verzeichnis.
Leiten Sie die backup_home_dir.Yaml Spielbuch wie folgt:
$ Ansible-Playbook Playbooks/backup_home_dir.YamlWie Sie sehen können, auf meinem Ubuntu 20.04 LTS -Host, das Backup war erfolgreich.
Beispiel 4: Aufgaben ausführen oder überspringen
In diesem Beispiel zeige ich Ihnen, wie Sie Aufgaben ausführen oder überspringen, abhängig von der von Ihnen registrierten Variablen mit der Verwendung der registrieren Modul.
Erstellen Sie zunächst das neue Spielbuch Register_Conditions.Yaml im Playbooks/ Verzeichnis wie folgt:
$ nano playbooks/register_conditions.YamlGeben Sie als nächstes die folgenden Zeilen in die Register_Conditions.Yaml Datei.
- Hosts: Ubuntu20Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten Register_Conditions.Yaml Datei.
In diesem Spielbuch habe ich zwei Aufgaben definiert.
Die erste Aufgabe speichert den Inhalt der /home/ansible/test3 Verzeichnis in der Dir_Contents Variable.
Die zweite Aufgabe überprüft, ob Dir_Contents.Stdout ist eine leere Zeichenfolge oder ob das Verzeichnis /home/ansible/test3 ist leer. Wenn das Verzeichnis leer ist, die Nachricht Verzeichnis ist leer wird drucken.
Leiten Sie die Register_Conditions.Yaml Spielbuch wie folgt:
$ Ansible-Playbook Playbooks/Register_Conditions.YamlWie Sie sehen können, lief das Spielbuch erfolgreich.
Seit dem Verzeichnis /home/ansible/test3 ist leer, das Spielbuch hat die Nachricht gedruckt Verzeichnis ist leer.
Erstellen Sie als nächstes eine neue Datei in der /home/ansible/test3 Verzeichnis.
$ touch test3/myfile
Seit der /home/ansible/test3 Verzeichnis ist nicht mehr leer, die Aufgabe Überprüfen Sie, ob das Verzeichnis leer ist wird übersprungen, wie Sie im Screenshot unten sehen können.
$ Ansible-Playbook Playbooks/Register_Conditions.YamlAbschluss
Der Ansible registrieren Das Modul ist sehr nützlich für die Serverautomatisierung. Dieser Artikel zeigte Ihnen die Grundlagen der registrieren Modul, einschließlich Beispiele für die Verwendung der Ansible registrieren Modul für Verzeichnisspeicher und Backup sowie für die Ausführung von Verzeichnisaufgaben.