Einführung
In diesem Lab werden Sie das Ansible-File-Modul erkunden, mit dem Sie Dateien und Verzeichnisse auf entfernten Hosts verwalten können. Das File-Modul bietet eine Vielzahl von Funktionen, wie das Erstellen, Löschen, Ändern von Rechten und das Überprüfen der Existenz von Dateien und Verzeichnissen.
Erstelle eine Datei auf einem entfernten Host
In diesem Schritt werden Sie mithilfe des Ansible-File-Moduls eine Datei auf einem entfernten Host erstellen.
Erstellen Sie zunächst eine neue Ansible-Playbook-Datei mit dem Namen /home/labex/project/file-module-playbook.yaml und öffnen Sie sie in einem Texteditor.
Fügen Sie den folgenden Inhalt zur Playbook-Datei hinzu:
- hosts: localhost
tasks:
- name: Erstellen einer Datei auf einem entfernten Host
file:
path: /home/labex/file.txt
state: touch
file: Ansible-Modul zum Verwalten des Dateisystems.path: Gibt den Pfad zur Datei an, in diesem Fall/home/labex/file.txt.state: Gibt den Status der Datei an. Hier bedeutettouch, dass die Datei erstellt wird, wenn sie nicht existiert, oder aktualisiert wird, indem die Zugriffs- und Änderungszeitstempel aktualisiert werden, wenn sie bereits existiert.
Zweck dieses Playbooks ist es, eine Datei mit dem Namen file.txt auf dem entfernten Host zu erstellen.
Führen Sie dann das Playbook mit dem folgenden Befehl aus:
ansible-playbook file-module-playbook.yaml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Erstellen einer Datei auf einem entfernten Host] ********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vergewissern Sie sich schließlich, dass die Datei file.txt im angegebenen Pfad auf dem entfernten Host erstellt wurde.
ll /home/labex/file.txt
Beispielausgabe:
-rw-rw-r-- 1 labex labex 0 Mar 10 03:12 file.txt
Sie werden die Meldung sehen, die angibt, dass /home/labex/file.txt erfolgreich erstellt wurde.
Verwalte Dateiberechtigungen
In diesem Schritt lernen Sie, wie Sie Dateiberechtigungen auf einem entfernten Host mithilfe des Ansible-File-Moduls verwalten.
Ändern Sie zunächst die vorhandene Playbook-Datei, indem Sie alle Inhalte entfernen und den folgenden Inhalt zur Playbook-Datei hinzufügen:
- hosts: localhost
tasks:
- name: Dateiberechtigungen setzen
file:
path: /home/labex/file.txt
mode: "0644"
file: Ansible-Modul zum Verwalten des Dateisystems.path: Gibt den Pfad zur Datei an, in diesem Fall/home/labex/file.txt.mode: Dieser Parameter wird verwendet, um die Berechtigungsmodus der Datei festzulegen. Ersetzen Sie"0644"durch den gewünschten Berechtigungsmodus für die Datei. Weitere Informationen zu Berechtigungsmodi finden Sie in der chmod-Dokumentation.
Zweck dieses Playbooks ist es, die Berechtigungen der Datei /home/labex/file.txt auf 0644 zu setzen.
Führen Sie dann das Playbook mit dem folgenden Befehl aus:
ansible-playbook file-module-playbook.yaml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Dateiberechtigungen setzen] ****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vergewissern Sie sich schließlich, dass die Dateiberechtigungen wie angegeben auf dem entfernten Host festgelegt sind.
ll /home/labex/file.txt
Beispielausgabe:
-rw-r--r-- 1 labex labex 0 Mar 10 03:12 /home/labex/file.txt
Das -rw-r--r-- hier zeigt an, dass der Modus von /home/labex/file.txt erfolgreich auf 0644 gesetzt wurde.
Lösche eine Datei auf einem entfernten Host
In diesem Schritt lernen Sie, wie Sie eine Datei auf einem entfernten Host mithilfe des Ansible-File-Moduls entfernen.
Ändern Sie zunächst die vorhandene Playbook-Datei, indem Sie alle Inhalte entfernen und den folgenden Inhalt zur Playbook-Datei hinzufügen:
- hosts: localhost
tasks:
- name: Entfernen einer Datei auf einem entfernten Host
file:
path: /home/labex/file.txt
state: absent
file: Ansible-Modul zum Verwalten des Dateisystems.path: Gibt den Pfad zur zu entfernenden Datei an, d.h./home/labex/file.txt.state: Dieser Parameter gibt an, dass die Datei im Zustandabsentsein soll. Somit ist das Ziel der Aufgabe, die Datei am angegebenen Pfad zu löschen.
Zweck dieses Playbooks ist es, die Datei /home/labex/file.txt auf dem entfernten Host zu löschen.
Führen Sie dann das Playbook mit dem folgenden Befehl aus:
ansible-playbook file-module-playbook.yaml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Entfernen einer Datei auf einem entfernten Host] ********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vergewissern Sie sich schließlich, dass die Datei file.txt entfernt wurde und auf dem entfernten Host nicht mehr existiert.
ll /home/labex/file.txt
Beispielausgabe:
ls: cannot access '/home/labex/file.txt': No such file or directory
Diese Meldung zeigt an, dass die Datei /home/labex/file.txt erfolgreich gelöscht wurde.
Prüfe die Dateiexistenz
In diesem Schritt lernen Sie, wie Sie mithilfe des Ansible-File-Moduls die Existenz einer Datei auf einem entfernten Host überprüfen.
Ändern Sie zunächst die vorhandene Playbook-Datei, indem Sie alle Inhalte entfernen und den folgenden Inhalt zur Playbook-Datei hinzufügen:
- hosts: localhost
tasks:
- name: Überprüfen der Dateiexistenz auf einem entfernten Host
stat:
path: /home/labex/file.txt
register: file_info
- name: Drucken der Dateiexistenz
debug:
msg: "Datei existiert: {{ file_info.stat.exists }}"
stat: Dies ist eines der Ansible-Module zum Abrufen von Statusinformationen zu einer Datei oder einem Verzeichnis.path: Gibt den Pfad zur zu überprüfenden Datei an, d.h./home/labex/file.txt.register: Speichert das Ergebnis der Modulausführung in der Variablefile_infomithilfe des Schlüsselwortsregister.debug: Dies ist eines der Ansible-Module, das Debuginformationen ausgibt.msg: Verwenden Sie dasdebug-Modul, um eine Nachricht mit Informationen über die Existenz einer Datei auszugeben, die überfile_info.stat.existsabgerufen wird.
Zweck dieses Playbooks ist es, die Existenz der Datei /home/labex/file.txt auf dem entfernten Host zu überprüfen und die Informationen auf die Standardausgabe auszugeben.
Führen Sie dann das Playbook mit dem folgenden Befehl aus:
ansible-playbook file-module-playbook.yaml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Überprüfen der Dateiexistenz auf einem entfernten Host] *************************************
ok: [localhost]
TASK [Drucken der Dateiexistenz] ****************************************************
ok: [localhost] => {
"msg": "Datei existiert: False"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vergewissern Sie sich schließlich anhand der Ausgabe, ob die Datei file.txt auf dem entfernten Host existiert. "msg": "Datei existiert: False" zeigt an, dass die Datei /home/labex/file.txt nicht existiert.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab zu dem Ansible-File-Modul erfolgreich abgeschlossen. Sie haben gelernt, wie Sie mithilfe des File-Moduls Dateien und Verzeichnisse erstellen, Dateiberechtigungen verwalten, Dateien löschen und die Existenz von Dateien auf entfernten Hosts überprüfen.
Das File-Modul ist ein leistungsstarkes Werkzeug in Ansible, das es Ihnen ermöglicht, verschiedene dateibezogene Operationen während der Automatisierungstasks durchzuführen. Sie können nun mit Zuversicht das File-Modul in Ihren Ansible-Playbooks verwenden, um Dateien und Verzeichnisse effizient zu verwalten.
Bleiben Sie dabei, die Ansible-Dokumentation und andere Module zu erkunden, um Ihr Wissen zu erweitern und Ihre Automatisierungskompetenzen zu verbessern. Viel Spaß beim Umgang mit Ansible!


