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