Ansible ist eines der besten verfügbaren Automatisierungswerkzeuge und bietet einfache, intuitive und leistungsstarke Werkzeuge, um Automatisierungsaufgaben in der modernen Welt auszuführen.
Für die meisten Automatisierungsaufgaben müssen Sie Verzeichnisse erstellen, insbesondere bei der Installation verschiedener Tools und Anwendungen, Backups und Wiederherstellungen. Obwohl Sie diese Aufgaben mithilfe eines automatisierten Skripts ausführen können, bietet Ansible eine bessere Funktionalität und ermöglicht es Ihnen, Verzeichnisse in bestimmten Hosts zu erstellen.
In diesem Tutorial wird angezeigt, wie Sie das Ansible -Dateimodul verwenden, um Verzeichnisberechtigungen für bestimmte Hosts zu erstellen, zu entfernen und zu ändern.
So erstellen Sie ein Verzeichnis in Ansible
Beide der folgenden Methoden können verwendet werden, um ein Verzeichnis in Ansible zu erstellen:
Um ein Verzeichnis in Ansible mit dem Befehlsmodul zu erstellen, geben Sie den folgenden Befehl ein:
$ ansible All -m -Befehl -A "mkdir ~/backups"
Nach dem Eingeben des obigen Befehls sollten Sie die unten angegebene Ausgabe erhalten:
Geben Sie Passphrase für Key '/Home/Benutzer/ein.ssh/id_rsa ':
[WARNUNG]: Überlegen Sie, ob Sie das Dateimodul mit State = Verzeichnis verwenden, anstatt 'mkdir' auszuführen. Wenn Sie den Befehl verwenden müssen, weil die Datei nicht ausreicht, können Sie dieser Befehlsaufgabe 'warnen: false' hinzufügen oder 'command_warnings = false' in Ansible einstellen.CFG, um diese Nachricht loszuwerden.
35.222.210.12 | Geändert | rc = 0 >>
Stellen Sie sicher, dass Ihr Ansible -Hosts -Inventar in/etc/ansible/hosts die richtigen Informationen zu Ihren Remote -Hosts enthält.
Obwohl das Befehlsmodul auf einem einzelnen Ansible -Host einfach zu verwenden ist, wird es beim Umgang mit mehreren Hosts mit unterschiedlichen Verzeichnissen und Aufgaben sehr ineffizient.
Um diesem Nachteil entgegenzuwirken, werden wir das Ansible -Dateimodul verwenden und ein Spielbuch erstellen, das die Hosts enthält, die wir verwenden möchten, und die Verzeichnisse, die wir erstellen möchten.
NOTIZ: Das Dateimodul kann auch als einzelner Befehl in Ansible verwendet werden, aber es funktioniert dem Befehlsmodul ähnlich.
Um ein Ansible Playbook zu verwenden, erstellen Sie eine YAML -Datei und geben Sie die folgenden Einträge ein, um ein Verzeichnis zu erstellen:
- Hosts: Alle Aufgaben:
- Name: Ansible Dateimodul erstellen Verzeichnis erstellen
Datei:
Pfad: ~/Backups
Zustand: Verzeichnis
Speichern Sie die Datei und verwenden Sie das Ansible-Playbook, um die Verzeichnisse zu erstellen:
Ansible-Playbook Mkdir.YML
Dies sollte eine Ausgabe wie die folgende erzeugen, die darauf hinweist, dass die Aktionen erfolgreich mit der angegebenen Playbook -Datei durchgeführt wurden.
Alle wiedergeben] ********************************************** ******************************************************** ***************
Aufgabe [Fakten sammeln] ****************************************** ******************************************************** **
Geben Sie Passphrase für Key '/Home/Benutzer/ein.ssh/id_rsa ':
OK: [35.222.210.12]
Aufgabe [Ansible Dateimodul erstellen Verzeichnis] *************************************************************** *************************************************************
OK: [35.222.210.12]
Spielen Sie die Zusammenfassung* ******************************************************** ***********
35.222.210.12: OK = 2 geändert = 0 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0
So erstellen Sie mehrere Verzeichnisse mit Elementen
Mit Ansible Playbooks können Sie außerdem mehrere Verzeichnisse mit der Anweisung mit der _items in der YAML -Datei erstellen.
Um beispielsweise Backups für die drei Dienste MySQL, Repository und Config zu erstellen, können Sie die in der YAML -Datei unten angegebene Aufgabe erstellen:
- Hosts: Alle Aufgaben:
- Name: Ansible erstellen Sie mehrere Verzeichnisse mit_items
Datei:
Pfad: ~/backups/item
Zustand: Verzeichnis
With_items:
- 'MySQL'
- 'Repository'
- "Konfiguration"
Speichern Sie die obige Datei und führen Sie sie mit Ansible-Playbook aus.
$ Ansible-Playbook mkdir_multi.yml spiele [alle] ********************************************************************** ******************************************************** ******************************************************** ******************************************************** ***
Aufgabe [Fakten sammeln] ****************************************** ******************************************************** ******************************************************** **********************************************
Geben Sie Passphrase für Key '/Home/Benutzer/ein.ssh/id_rsa ':
OK: [35.222.210.12]
Aufgabe [Ansible erstellen mehrere Verzeichnisse mit_items] ***************************************************************** ******************************************************** ******************************************************** ***************
geändert: [35.222.210.12] => (item = mysql)
geändert: [35.222.210.12] => (item = repository)
geändert: [35.222.210.12] => (item = config)
Spielen Sie die Zusammenfassung* ******************************************************** ******************************************************** ********************************************************
35.222.210.12: OK = 2 geändert = 1 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0
Das obige Spielbuch sollte mehrere Verzeichnisse erstellen, z. B. ~/backups/mysql, ~/backups/repository und ~/backups/config.
$ ls -la
Die Ausgabe der Verzeichnisliste ist wie unten gezeigt:
Gesamt 0
drwxrwxr-x. 5 Debian Debian 51 März 6 17:26 .
drwx------. 6 Debian Debian 117 März 17: 26…
drwxrwxr-x. 2 Debian Debian 6. März 17:26 Konfiguration
drwxrwxr-x. 2 Debian Debian 6. März 17:26 MySQL
drwxrwxr-x. 2 Debian Debian 6. März 17:26 Repository
So setzen Sie Berechtigungen für ein Verzeichnis
Mit Ansible können Sie Berechtigungen für ein Verzeichnis mithilfe der Modusanweisung angeben. Betrachten Sie das folgende Spielbuch, in dem ein Verzeichnis erstellt und Berechtigungen festgelegt werden:
- Hosts: Alles
Aufgaben:
- Name: Ansible -Verzeichnis erstellen und Berechtigungen festlegen
Datei:
Pfad: /Backups
Zustand: Verzeichnis
Modus: "U = rw, g = wx, o = rwx"
Werde: Ja
Im obigen Eintrag haben wir ein Verzeichnis in / erstellt. Wir mussten auch Wurzel werden, daher werden wir: Ja -Eintrag.
$ Ansible-Playbook-Erlaubnis.yml spiele [alle] ********************************************************************** ******************************************************** ******************************************************** ******************************************************** ***
Aufgabe [Fakten sammeln] ****************************************** ******************************************************** ******************************************************** **********************************************
Geben Sie Passphrase für Key '/Home/Benutzer/ein.ssh/id_rsa ':
OK: [35.222.210.12]
Aufgabe [Ansible Create Directory- und Set -Berechtigungen] ********************************************************************* ******************************************************** ******************************************************** ****************
geändert: [35.222.210.12]
Spielen Sie die Zusammenfassung* ******************************************************** ******************************************************** ********************************************************
35.222.210.12: OK = 2 geändert = 1 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0
Wenn Sie die Berechtigungen des von uns erstellten Verzeichnisses anzeigen, sehen Sie Folgendes:
$ ls -lrt / | Grep -Backups
Die Ausgabe ist wie unten gezeigt:
drw-wxrwx. 2 Wurzelwurzel 6 März 17:36 Backups
Wie man rekursiv Berechtigungen in einem Verzeichnis verändert
Um die Berechtigungen eines Verzeichnisses und seiner Dateien rekursiv zu ändern, geben Sie einfach den rekursiven Eintrag an, wie unten gezeigt:
- Hosts: Alles
Aufgaben:
- Name: Ansible -Verzeichnis erstellen und Berechtigungen festlegen
Datei:
Pfad: /Backups
Zustand: Verzeichnis
Modus: "U = rw, g = wx, o = rwx"
rekursiv: Ja
Werde: Ja
So setzen Sie Berechtigungen in mehreren Verzeichnissen
Das Einrichten von Berechtigungen für mehrere Verzeichnisse in Ansible ist auch so einfach wie einige Einträgezeilen. Betrachten Sie das folgende Spielbuch.
- Hosts: Alles
Aufgaben:
- Name: Ansible Mutliple -Verzeichnis mit Berechtigungen erstellen
Datei:
Pfad: "Element.Weg "
Modus: "Element.Modus"
Zustand: Verzeichnis
With_items:
- Pfad: '~/backups/mysql', Modus: '0777'
- Pfad: '~/backups/repository', Modus: '0755'
- Pfad: '~/backups/config', Modus: '0707'
So löschen Sie ein Verzeichnis in Ansible
Um ein Verzeichnis und den gesamten Inhalt mit einem Ansible Playbook zu entfernen, geben Sie den Status wie unten angegeben an:
- Hosts: Alles
Aufgaben:
- Name: Ansible Delete -Verzeichnis
Datei:
Pfad: /Backups
Zustand: abwesend
Werde: Ja
Dieser Befehl entfernen das Verzeichnis und alle Kinderdateien und Verzeichnisse.
NOTIZ: Stellen Sie sicher, dass Sie Berechtigungen für das Verzeichnis haben, an dem Sie arbeiten.
So erstellen Sie ein Zeitstempelverzeichnis
In einigen Fällen müssen Sie möglicherweise ein Verzeichnis mit einem damit verbundenen Zeitstempel erstellen, was sehr nützlich sein kann, insbesondere beim Erstellen von Backups. Um ein Zeitstempelverzeichnis zu erstellen, können wir die Variable ansible_date_time verwenden.
Betrachten Sie das folgende Spielbuch:
- Hosts: Alles
Aufgaben:
- Name: Ansible Fügen Sie dem Verzeichnis Zeitstempel hinzu
Datei:
Pfad: "/backups/mysql Ansible_date_time.Datum"
Zustand: Verzeichnis
Modus: "0777"
Werde: Ja
Sobald Sie das Spielbuch ausgeführt haben, haben Sie ein Verzeichnis mit dem Zeitstempel.
$ ls -l
Die Verzeichnisauflistung sollte wie unten gezeigt werden:
Gesamt 0 drwxrwxrwx. 2 Wurzelwurzel 6. März 18:03 MySQL2021-03-06
NOTIZ: Um Fehler zu vermeiden, überprüfen Sie immer die YAML -Dateisyntax, die Sie in Ansible verwenden möchten.
Abschluss
Dieses Tutorial hat Ihnen gezeigt, dass die Arbeit mit Ansible -Modulen sehr einfach und intuitiv ist, was die Automatisierung komplexer Aufgaben einfacher macht. Mit dem Ansible -Dateimodul können Sie ein oder mehrere Verzeichnisse erstellen und für jeden Berechtigungen hinzufügen. Sie können auch dasselbe Modul verwenden, um ein Verzeichnis zu entfernen, um weitere Informationen zur Verwendung des Ansible -Dateimoduls zu erhalten. Überprüfen Sie die offizielle Dokumentation auf der Ressourcenseite.