Ansible Fetch-Modul

AnsibleAnsibleBeginner
Jetzt üben

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

Einführung

Willkommen im Ansible Fetch-Modul-Lab! In diesem Lab werden Sie die Verwendung des Ansible Fetch-Moduls kennenlernen. Das Fetch-Modul ermöglicht es Ihnen, Dateien von Remote-Rechnern abzurufen und auf die Steuerungsmaschine zu kopieren, auf der Ansible ausgeführt wird. Dies ist nützlich, wenn Sie bestimmte Dateien oder Artefakte von Ihren verwalteten Hosts sammeln müssen.

Lassen Sie uns beginnen!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible/ModuleOperationsGroup -.-> ansible/fetch("Retrieve Files") ansible/ModuleOperationsGroup -.-> ansible/file("Manage Files/Directories") ansible/ModuleOperationsGroup -.-> ansible/template("Generate Files from Templates") ansible/PlaybookEssentialsGroup -.-> ansible/loop("Iteration") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") subgraph Lab Skills ansible/fetch -.-> lab-290159{{"Ansible Fetch-Modul"}} ansible/file -.-> lab-290159{{"Ansible Fetch-Modul"}} ansible/template -.-> lab-290159{{"Ansible Fetch-Modul"}} ansible/loop -.-> lab-290159{{"Ansible Fetch-Modul"}} ansible/playbook -.-> lab-290159{{"Ansible Fetch-Modul"}} end

Abrufen einer einzelnen Datei

In diesem Schritt werden Sie lernen, wie Sie das Ansible Fetch-Modul verwenden, um eine einzelne Datei von einem Remote-Rechner abzurufen. Dies wird Ihnen helfen, die grundlegende Verwendung und Syntax des Moduls zu verstehen.

Zunächst vervollständigen Sie die Datei /home/labex/project/fetching_a_single_file.yml.
Öffnen Sie sie in einem Texteditor und fügen Sie den folgenden Inhalt in die Playbook-Datei ein:

- name: Fetch Module Lab
  hosts: localhost
  gather_facts: false

  tasks:
    - name: Fetch a single file
      fetch:
        src: /home/labex/example/example_1.txt
        dest: /home/labex/project/example_1.txt
        flat: true
  • fetch: Dies ist das Ansible-Modul, das zum Abrufen von Dateien von Remote-Hosts verwendet wird.
  • src: Dies gibt den Pfad der Datei auf dem Remote-Host an, die abgerufen werden muss. In diesem Beispiel ist es /home/labex/example/example_1.txt.
  • dest: Dies gibt den Zielpfad an, an dem die abgerufene Datei auf dem lokalen Host gespeichert werden soll. In diesem Beispiel ist es /home/labex/project/example_1.txt.
  • flat: Dieser Parameter steuert das Verhalten des Zielpfads. Wenn er auf true gesetzt ist, wird sichergestellt, dass die abgerufene Datei im Zielverzeichnis abgelegt wird, ohne dass Unterverzeichnisse erstellt werden. Dies ist nützlich, wenn Sie eine einzelne Datei abrufen und die Verzeichnisstruktur einfach halten möchten.

Das fetch-Modul in Ansible wird verwendet, um Dateien von Remote-Hosts auf den lokalen Host abzurufen. In dieser Konfiguration wird es verwendet, um eine Datei namens "example_1.txt" aus dem Verzeichnis /home/labex/example/ des Remote-Hosts abzurufen und als "example_1.txt" im Verzeichnis /home/labex/project/ des lokalen Hosts zu speichern. Der Parameter flat: true stellt sicher, dass die abgerufene Datei direkt im Zielverzeichnis abgelegt wird, ohne Unterverzeichnisse.

Führen Sie dann das Playbook mit dem folgenden Befehl aus:

ansible-playbook fetching_a_single_file.yml

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 [Fetch Module Lab] **************************************************

TASK [Fetch a single file] *****************************************************
changed: [localhost]

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

Verifizieren Sie schließlich, dass die Datei example_1.txt lokal vom Remote-Host abgerufen wurde.

ll /home/labex/project/example_1.txt

Beispielausgabe:

-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 /home/labex/project/example_1.txt

Abrufen mehrerer Dateien

In diesem Schritt vertiefen Sie Ihr Verständnis des Fetch-Moduls, indem Sie mehrere Dateien von einem Remote-Rechner abrufen. Dies ermöglicht es Ihnen, mehrere Dateien in einer einzigen Aufgabe zu sammeln.

Zunächst vervollständigen Sie die Datei /home/labex/project/fetching_multiple_files.yml.
Öffnen Sie sie in einem Texteditor und fügen Sie den folgenden Inhalt in die Playbook-Datei ein:

- name: Fetch Module Lab
  hosts: localhost
  gather_facts: false

  tasks:
    - name: Fetch multiple files
      loop:
        - example_2.txt
        - example_3.txt
      fetch:
        src: "/home/labex/example/{{ item }}"
        dest: "/home/labex/project/{{ item }}"
        flat: true
  • loop: Dieses Schlüsselwort wird verwendet, um über eine Liste von Elementen zu iterieren.
  • fetch: Dies ist das Ansible-Modul, das zum Abrufen von Dateien von Remote-Hosts verwendet wird.
  • src: Dies gibt den Quellpfad der abzurufenden Datei an. Der Platzhalter {{ item }} wird durch jedes Element aus der Schleife ersetzt, so dass example_2.txt und example_3.txt aus dem Verzeichnis /home/labex/example/ abgerufen werden.
  • dest: Dies gibt den Zielpfad an, an dem die abgerufenen Dateien gespeichert werden sollen. Auch hier wird der Platzhalter {{ item }} verwendet, um sicherzustellen, dass jede Datei im entsprechenden Verzeichnis innerhalb von /home/labex/project/ abgelegt wird.
  • flat: Dieser Parameter steuert das Verhalten des Zielpfads. Wenn er auf true gesetzt ist, wird sichergestellt, dass die abgerufene Datei im Zielverzeichnis abgelegt wird, ohne dass Unterverzeichnisse erstellt werden. Dies ist nützlich, wenn Sie eine einzelne Datei abrufen und die Verzeichnisstruktur einfach halten möchten.

In dieser Konfiguration wird es verwendet, um mehrere Dateien (example_2.txt und example_3.txt) aus dem Verzeichnis /home/labex/example/ auf dem lokalen Host abzurufen und in den entsprechenden Verzeichnissen innerhalb von /home/labex/project/ zu speichern. Der loop-Konstrukt ermöglicht es, über eine Liste von Elementen zu iterieren und die Abrufoperation für jedes Element in der Liste auszuführen.

Führen Sie dann das Playbook mit dem folgenden Befehl aus:

ansible-playbook fetching_multiple_files.yml

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 [Fetch Module Lab] **************************************************

TASK [Fetch multiple files] ****************************************************
changed: [localhost] => (item=example_2.txt)
changed: [localhost] => (item=example_3.txt)

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

Verifizieren Sie schließlich, dass example_2.txt und example_3.txt lokal vom Remote-Host abgerufen wurden.

ll /home/labex/project/ | grep example

Beispielausgabe:

-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 example_1.txt
-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_2.txt
-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_3.txt

Verwenden von Variablen im Fetch-Modul

In diesem Schritt werden Sie eine fortgeschrittenere Verwendung des Ansible Fetch-Moduls erkunden, indem Sie Variablen einbeziehen. Sie werden Dateien basierend auf dynamischen Werten abrufen, die in Ihrem Playbook definiert sind.

Zunächst vervollständigen Sie die Datei /home/labex/project/using_variablesin_fetch_modules.yml.
Öffnen Sie sie in einem Texteditor und fügen Sie den folgenden Inhalt in die Playbook-Datei ein:

- name: Fetch Module Lab
  hosts: localhost
  gather_facts: false
  vars:
    file_path: "/home/labex/example/example_4.txt"
    dest_path: "/home/labex/project/example_4.txt"

  tasks:
    - name: Fetch files using variables
      fetch:
        src: "{{ file_path }}"
        dest: "{{ dest_path }}"
        flat: true
  • vars: Dieser Abschnitt ermöglicht die Definition von Variablen, die innerhalb des Playbooks verwendet werden können.
  • fetch: Dies ist das Ansible-Modul, das zum Abrufen von Dateien von Remote-Hosts verwendet wird.
  • src: Dies gibt den Quellpfad der abzurufenden Datei an. Es verwendet die Variable file_path, um den Quellpfad der Datei dynamisch bereitzustellen.
  • dest: Dies gibt den Zielpfad an, an dem die abgerufene Datei gespeichert werden soll. Es verwendet die Variable dest_path, um den Zielpfad der Datei dynamisch bereitzustellen.
  • flat: Dieser Parameter steuert das Verhalten des Zielpfads. Wenn er auf true gesetzt ist, wird sichergestellt, dass die abgerufene Datei im Zielverzeichnis abgelegt wird, ohne dass Unterverzeichnisse erstellt werden. Dies ist nützlich, wenn Sie eine einzelne Datei abrufen und die Verzeichnisstruktur einfach halten möchten.

In dieser Konfiguration wird es verwendet, um eine Datei aus dem Quellpfad (file_path-Variable) auf dem Remote-Host abzurufen und in den Zielpfad (dest_path-Variable) auf dem lokalen Ansible-Steuerungsknoten zu speichern. Die Verwendung von Variablen ermöglicht die dynamische Angabe von Dateipfaden, was Flexibilität und Wiederverwendbarkeit im Playbook bietet.

Führen Sie dann das Playbook mit dem folgenden Befehl aus:

ansible-playbook using_variablesin_fetch_modules.yml

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 [Fetch Module Lab] **************************************************

TASK [Fetch files using variables] *********************************************
changed: [localhost]

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

Verifizieren Sie als Nächstes, dass die Datei example_4.txt lokal vom Remote-Host abgerufen wurde.

ll /home/labex/project/example_4.txt

Beispielausgabe:

-rw-rw-r-- 1 labex labex 23 Mar 14 11:16 /home/labex/project/example_4.txt

Versuchen Sie schließlich, file_path und dest_path mit der Option -e anzugeben:

ansible-playbook using_variablesin_fetch_modules.yml -e file_path="/tmp/example_5.txt" -e dest_path="/tmp/target/example_5.txt"

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 [Fetch Module Lab] **************************************************

TASK [Fetch files using variables] *********************************************
changed: [localhost]

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

Verifizieren Sie, dass die Datei example_5.txt lokal vom Remote-Host abgerufen wurde.

ll /tmp/target/example_5.txt

Beispielausgabe:

-rw-rw-r-- 1 labex labex 23 Mar 14 11:24 /tmp/target/example_5.txt

Zusammenfassung

Herzlichen Glückwunsch, dass Sie das Ansible Fetch-Modul-Lab abgeschlossen haben! In diesem Lab haben Sie gelernt, wie Sie das Ansible Fetch-Modul verwenden, um Dateien von Remote-Rechnern abzurufen und auf die Steuerungsmaschine zu kopieren. Begonnen haben Sie mit dem Abrufen einer einzelnen Datei, sind dann zum Abrufen mehrerer Dateien übergegangen und haben Variablen für den dynamischen Dateiabruf eingesetzt.

Durch die Absolvierung dieses Labs haben Sie wertvolle Erfahrungen in der Nutzung des Fetch-Moduls gesammelt, um bestimmte Dateien oder Artefakte von Ihren verwalteten Hosts zu sammeln. Setzen Sie Ihre Erkundung von Ansible und seinen Modulen fort, um Ihre Automatisierungsfähigkeiten weiter zu verbessern.

Viel Spaß bei der Automatisierung!