Ansible Stat-Modul

AnsibleAnsibleBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie das Ansible Stat-Modul erkunden, mit dem Sie Informationen zu Dateien und Verzeichnissen auf entfernten Hosts sammeln können. Das Stat-Modul liefert verschiedene Attribute und Informationen wie Dateigröße, Eigentum, Berechtigungen und Änderungszeitstempel.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible/ModuleOperationsGroup -.-> ansible/debug("Test Output") ansible/ModuleOperationsGroup -.-> ansible/stat("File Statistics") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") subgraph Lab Skills ansible/debug -.-> lab-290192{{"Ansible Stat-Modul"}} ansible/stat -.-> lab-290192{{"Ansible Stat-Modul"}} ansible/playbook -.-> lab-290192{{"Ansible Stat-Modul"}} end

Dateiinformationen abrufen

In diesem Schritt verwenden Sie das Ansible Stat-Modul, um Informationen zu einer Datei auf einem entfernten Host zu sammeln.

Erstellen Sie zunächst eine neue Ansible-Playbook-Datei mit dem Namen /home/labex/project/stat-module-playbook.yaml und öffnen Sie sie in einem Texteditor.
Fügen Sie den folgenden Inhalt zur Playbook-Datei hinzu:

- hosts: localhost
  tasks:
    - name: Get file information
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file information
      debug:
        msg: |
          File size: {{ file_info.stat.size }}
          Ownership: {{ file_info.stat.uid }}:{{ file_info.stat.gid }}
          Permissions: {{ file_info.stat.mode }}
  • hosts: Dies gibt den Zielhost an, auf dem das Playbook ausgeführt werden soll. In diesem Fall wird das Playbook auf dem lokalen Host ausgeführt, da der Zielhost localhost ist.
  • tasks: Dies ist eine Liste von Aufgaben, die ausgeführt werden sollen.
  • name: Dies ist der beschreibende Name für die Aufgabe, der den Zweck der Aufgabe identifiziert.
  • stat: Dieses Ansible-Modul sammelt Informationen zu einer Datei auf dem von dem path-Parameter angegebenen entfernten Host.
  • register: Speichert die Ausgabe des stat-Moduls in einer Variable namens file_info für spätere Verwendung.
  • debug: Gibt während der Ausführung des Playbooks Debuginformationen aus.
  • msg: Gibt eine Nachricht mit den Dateiinformationen aus, die mithilfe des stat-Moduls abgerufen wurden, einschließlich Dateigröße, Eigentum (UID und GID) und Berechtigungen.

Zusammenfassend ist dieses Playbook dazu gedacht, Informationen zu einer bestimmten Datei im Verzeichnis /home/labex/project/file.txt auf dem lokalen Host abzurufen und verschiedene Details wie Größe, Eigentum und Berechtigungen auszugeben.

Erstellen Sie anschließend eine Datei mit dem Namen file.txt im Verzeichnis /home/labex/project.

echo "This is the content of the file." > /home/labex/project/file.txt

Schließlich führen Sie das Playbook mit dem folgenden Befehl aus:

ansible-playbook stat-module-playbook.yaml

Beobachten Sie die Ausgabe, um die Dateigröße, das Eigentum und die Berechtigungen der angegebenen Datei zu sehen.
Beispielausgabe:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file information] ****************************************************
ok: [localhost]

TASK [Print file information] **************************************************
ok: [localhost] => {
    "msg": "File size: 33\nOwnership: 5000:5000\nPermissions: 0664\n"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Überprüfen der Dateiexistenz

In diesem Schritt verwenden Sie das Ansible Stat-Modul, um die Existenz einer Datei auf einem entfernten Host zu ü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: Check file existence on remote host
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file existence
      debug:
        msg: "File exists: {{ file_info.stat.exists }}"
  • hosts: Dies gibt den Zielhost an, auf dem das Playbook ausgeführt werden soll. In diesem Fall wird das Playbook auf dem lokalen Host ausgeführt, da der Zielhost localhost ist.
  • tasks: Dies ist eine Liste von Aufgaben, die ausgeführt werden sollen.
  • name: Dies ist der beschreibende Name für die Aufgabe, der den Zweck der Aufgabe identifiziert.
  • stat: Dieses Ansible-Modul sammelt Informationen zu einer Datei auf dem von dem path-Parameter angegebenen entfernten Host.
  • register: Speichert die Ausgabe des stat-Moduls in einer Variable namens file_info für spätere Verwendung.
  • debug: Gibt während der Ausführung des Playbooks Debuginformationen aus.
  • msg: Gibt eine Nachricht aus, die angibt, ob die Datei existiert oder nicht, basierend auf den Informationen, die mithilfe des stat-Moduls abgerufen wurden.

Zusammenfassend ist dieses Playbook dazu gedacht, die Existenz einer bestimmten Datei im Verzeichnis /path/on/remote/host/file.txt auf dem lokalen Host zu überprüfen und eine Nachricht auszugeben, die angibt, ob die Datei existiert oder nicht.

Führen Sie anschließend das Playbook mit dem folgenden Befehl aus:

ansible-playbook stat-module-playbook.yaml

Beobachten Sie die Ausgabe, um zu sehen, ob die Datei file.txt auf dem entfernten Host existiert.
Beispielausgabe:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Check file existence on remote host] *************************************
ok: [localhost]

TASK [Print file existence] ****************************************************
ok: [localhost] => {
    "msg": "File exists: True"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Dateiänderungszeitstempel abrufen

In diesem Schritt verwenden Sie das Ansible Stat-Modul, um den Änderungszeitstempel einer Datei auf einem entfernten Host abzurufen.

Ä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: Get file modification timestamp
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file modification timestamp
      debug:
        msg: "File modification timestamp: {{ file_info.stat.mtime }}"
  • hosts: Dies gibt den Zielhost an, auf dem das Playbook ausgeführt werden soll. In diesem Fall wird das Playbook auf dem lokalen Host ausgeführt, da der Zielhost localhost ist.
  • tasks: Dies ist eine Liste von Aufgaben, die ausgeführt werden sollen.
  • name: Dies ist der beschreibende Name für die Aufgabe, der den Zweck der Aufgabe identifiziert.
  • stat: Dieses Ansible-Modul sammelt Informationen zu einer Datei auf dem von dem path-Parameter angegebenen entfernten Host.
  • register: Speichert die Ausgabe des stat-Moduls in einer Variable namens file_info für spätere Verwendung.
  • debug: Gibt während der Ausführung des Playbooks Debuginformationen aus.
  • msg: Gibt eine Nachricht aus, die den Änderungszeitstempel der Datei enthält, die mithilfe des stat-Moduls abgerufen wurde.

Zusammenfassend ist dieses Playbook dazu gedacht, den Änderungszeitstempel einer bestimmten Datei im Verzeichnis /home/labex/project/file.txt auf dem lokalen Host abzurufen und den Zeitstempel auszugeben.

Führen Sie anschließend das Playbook mit dem folgenden Befehl aus:

ansible-playbook stat-module-playbook.yaml

Beobachten Sie die Ausgabe, um den Änderungszeitstempel der Datei file.txt im menschenlesbaren Format zu sehen.
Beispielausgabe:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file modification timestamp] *****************************************
ok: [localhost]

TASK [Print file modification timestamp] ***************************************
ok: [localhost] => {
    "msg": "File modification timestamp: 1710555624.2304714"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab zu dem Ansible Stat-Modul erfolgreich abgeschlossen. Sie haben gelernt, wie Sie mit dem Stat-Modul in Ansible Dateiinformationen sammeln, die Existenz von Dateien überprüfen und den Änderungszeitstempel abrufen.

Das Stat-Modul ist ein leistungsstarkes Tool, das es Ihnen ermöglicht, verschiedene Attribute und Informationen zu Dateien und Verzeichnissen auf entfernten Hosts zu sammeln. Sie können nun dieses Modul in Ihren Ansible-Playbooks nutzen, um fortgeschrittene dateibasierte Operationen durchzuführen und auf Grundlage der gesammelten Informationen informierte Entscheidungen zu treffen.

Fahren Sie mit der Erkundung der Ansible-Dokumentation und dem Experimentieren mit verschiedenen Modulen fort, um Ihre Automatisierungsfähigkeiten zu verbessern. Viel Spaß beim Ansible-Anwenden!