Récupération de plusieurs fichiers avec Ansible
Utilisation d'une boucle pour récupérer plusieurs fichiers
Pour récupérer plusieurs fichiers à partir d'hôtes distants, vous pouvez utiliser une boucle dans votre playbook Ansible. Voici un exemple :
- hosts: all
tasks:
- name: Fetch multiple files from remote host
ansible.builtin.fetch:
src: "{{ item }}"
dest: /local/path/{{ inventory_hostname }}/{{ item | basename }}
flat: yes
loop:
- /path/to/file1.txt
- /path/to/file2.txt
- /path/to/file3.txt
Dans cet exemple, le module ansible.builtin.fetch
est utilisé à l'intérieur d'une boucle pour récupérer trois fichiers différents à partir de l'hôte distant. Le paramètre src
utilise la variable {{ item }}
pour spécifier le chemin du fichier pour chaque itération de la boucle. Le paramètre dest
construit le chemin du fichier local en utilisant les variables {{ inventory_hostname }}
et {{ item | basename }}
, ce qui assure que les fichiers sont enregistrés avec les bons noms.
Récupération de fichiers à l'aide d'une variable de liste
Alternativement, vous pouvez stocker la liste des fichiers à récupérer dans une variable et utiliser cette variable dans le paramètre src
. Cela peut être utile si la liste des fichiers est dynamique ou stockée dans un fichier séparé. Voici un exemple :
- hosts: all
vars:
files_to_fetch:
- /path/to/file1.txt
- /path/to/file2.txt
- /path/to/file3.txt
tasks:
- name: Fetch multiple files from remote host
ansible.builtin.fetch:
src: "{{ item }}"
dest: /local/path/{{ inventory_hostname }}/{{ item | basename }}
flat: yes
loop: "{{ files_to_fetch }}"
Dans cet exemple, la liste des fichiers à récupérer est stockée dans la variable files_to_fetch
, qui est ensuite utilisée dans le paramètre loop
du module ansible.builtin.fetch
.
Récupération de fichiers à l'aide de motifs jumeaux
Le module Ansible Fetch prend également en charge l'utilisation de motifs jumeaux dans le paramètre src
. Cela peut être utile lorsque vous avez besoin de récupérer plusieurs fichiers qui correspondent à un certain motif. Voici un exemple :
- hosts: all
tasks:
- name: Fetch log files from remote host
ansible.builtin.fetch:
src: /var/log/*.log
dest: /local/path/{{ inventory_hostname }}/logs/
flat: no
Dans cet exemple, le paramètre src
utilise le motif jumeau *.log
pour récupérer tous les fichiers de journal situés dans le répertoire /var/log
sur l'hôte distant. L'option flat: no
assure que la structure de répertoire est conservée dans le chemin de destination local.
En utilisant ces techniques, vous pouvez récupérer efficacement plusieurs fichiers à partir d'hôtes distants à l'aide du module Ansible Fetch, ce qui facilite la gestion et l'analyse des données dans toute votre infrastructure.