Module Ansible Fetch

AnsibleBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire (lab) sur le module Ansible Fetch! Dans ce laboratoire, vous allez plonger dans l'utilisation du module Ansible Fetch. Le module Fetch vous permet de récupérer des fichiers depuis des machines distantes et de les copier sur la machine de contrôle où Ansible est exécuté. Cela est utile lorsque vous avez besoin de collecter des fichiers ou des artefacts spécifiques à partir de vos hôtes gérés.

Commençons!

Récupération d'un seul fichier

Dans cette étape, vous allez apprendre à utiliser le module Ansible Fetch pour récupérer un seul fichier depuis une machine distante. Cela vous aidera à comprendre l'utilisation de base et la syntaxe du module.

Tout d'abord, complétez le fichier /home/labex/project/fetching_a_single_file.yml. Ouvrez-le dans un éditeur de texte et ajoutez le contenu suivant au fichier de playbook :

- 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 : C'est le module Ansible utilisé pour récupérer des fichiers depuis des hôtes distants.
  • src : Cela spécifie le chemin du fichier sur l'hôte distant qui doit être récupéré. Dans cet exemple, il s'agit de /home/labex/example/example_1.txt.
  • dest : Cela spécifie le chemin de destination où le fichier récupéré doit être stocké sur l'hôte local. Dans cet exemple, il s'agit de /home/labex/project/example_1.txt.
  • flat : Ce paramètre contrôle le comportement du chemin de destination. Lorsqu'il est défini sur true, il garantit que le fichier récupéré est placé dans le répertoire de destination sans créer de sous-répertoires. Cela est utile lorsque vous récupérez un seul fichier et que vous souhaitez conserver une structure de répertoire simple.

Le module fetch dans Ansible est utilisé pour récupérer des fichiers depuis des hôtes distants vers l'hôte local. Dans cette configuration, il est utilisé pour récupérer un fichier nommé "example_1.txt" depuis le répertoire /home/labex/example/ de l'hôte distant et le stocker sous le nom "example_1.txt" dans le répertoire /home/labex/project/ de l'hôte local. Le paramètre flat: true garantit que le fichier récupéré est placé directement dans le répertoire de destination sans sous-répertoires.

Ensuite, exécutez le playbook avec la commande suivante :

ansible-playbook fetching_a_single_file.yml

Exemple de sortie :

[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

Enfin, vérifiez que le fichier example_1.txt a été récupéré localement depuis l'hôte distant.

ll /home/labex/project/example_1.txt

Exemple de sortie :

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

Récupération de plusieurs fichiers

Dans cette étape, vous approfondirez votre compréhension du module Fetch en récupérant plusieurs fichiers depuis une machine distante. Cela vous permettra de collecter plusieurs fichiers en une seule tâche.

Tout d'abord, complétez le fichier /home/labex/project/fetching_multiple_files.yml. Ouvrez-le dans un éditeur de texte et ajoutez le contenu suivant au fichier de playbook :

- 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 : Ce mot-clé est utilisé pour itérer sur une liste d'éléments.
  • fetch : C'est le module Ansible utilisé pour récupérer des fichiers depuis des hôtes distants.
  • src : Cela spécifie le chemin source du fichier à récupérer. Le placeholder {{ item }} est remplacé par chaque élément de la boucle, ce qui permet de récupérer example_2.txt et example_3.txt depuis le répertoire /home/labex/example/.
  • dest : Cela spécifie le chemin de destination où les fichiers récupérés doivent être stockés. Encore une fois, le placeholder {{ item }} est utilisé pour s'assurer que chaque fichier est placé dans le répertoire correspondant dans /home/labex/project/.
  • flat : Ce paramètre contrôle le comportement du chemin de destination. Lorsqu'il est défini sur true, il garantit que le fichier récupéré est placé dans le répertoire de destination sans créer de sous-répertoires. Cela est utile lorsque vous récupérez un seul fichier et que vous souhaitez conserver une structure de répertoire simple.

Dans cette configuration, il est utilisé pour récupérer plusieurs fichiers (example_2.txt et example_3.txt) depuis le répertoire /home/labex/example/ sur l'hôte local et les stocker dans les répertoires correspondants dans /home/labex/project/. La construction loop permet d'itérer sur une liste d'éléments et d'exécuter l'opération de récupération pour chaque élément de la liste.

Ensuite, exécutez le playbook avec la commande suivante :

ansible-playbook fetching_multiple_files.yml

Exemple de sortie :

[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

Enfin, vérifiez que example_2.txt et example_3.txt ont été récupérés localement depuis l'hôte distant.

ll /home/labex/project/ | grep example

Exemple de sortie :

-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

Utilisation de variables dans le module Fetch

Dans cette étape, vous allez explorer une utilisation plus avancée du module Ansible Fetch en intégrant des variables. Vous allez récupérer des fichiers en fonction de valeurs dynamiques définies dans votre playbook.

Tout d'abord, complétez le fichier /home/labex/project/using_variablesin_fetch_modules.yml. Ouvrez-le dans un éditeur de texte et ajoutez le contenu suivant au fichier de playbook :

- 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 : Cette section permet de définir des variables à utiliser dans le playbook.
  • fetch : C'est le module Ansible utilisé pour récupérer des fichiers depuis des hôtes distants.
  • src : Cela spécifie le chemin source du fichier à récupérer. Il utilise la variable file_path pour fournir dynamiquement le chemin du fichier source.
  • dest : Cela spécifie le chemin de destination où le fichier récupéré doit être stocké. Il utilise la variable dest_path pour fournir dynamiquement le chemin du fichier de destination.
  • flat : Ce paramètre contrôle le comportement du chemin de destination. Lorsqu'il est défini sur true, il garantit que le fichier récupéré est placé dans le répertoire de destination sans créer de sous-répertoires. Cela est utile lorsque vous récupérez un seul fichier et que vous souhaitez conserver une structure de répertoire simple.

Dans cette configuration, il est utilisé pour récupérer un fichier depuis le chemin du fichier source (variable file_path) sur l'hôte distant et le stocker dans le chemin du fichier de destination (variable dest_path) sur le nœud de contrôle Ansible local. L'utilisation de variables permet de spécifier dynamiquement les chemins des fichiers, offrant ainsi de la flexibilité et de la réutilisabilité dans le playbook.

Ensuite, exécutez le playbook avec la commande suivante :

ansible-playbook using_variablesin_fetch_modules.yml

Exemple de sortie :

[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

Ensuite, vérifiez que le fichier example_4.txt a été récupéré localement depuis l'hôte distant.

ll /home/labex/project/example_4.txt

Exemple de sortie :

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

Enfin, essayez de spécifier file_path et dest_path avec l'option -e :

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

Exemple de sortie :

[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

Vérifiez que le fichier example_5.txt a été récupéré localement depuis l'hôte distant.

ll /tmp/target/example_5.txt

Exemple de sortie :

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

Résumé

Félicitations pour avoir terminé le laboratoire (lab) sur le module Ansible Fetch! Dans ce laboratoire, vous avez appris à utiliser le module Ansible Fetch pour récupérer des fichiers depuis des machines distantes et les copier sur la machine de contrôle. En commençant par la récupération d'un seul fichier, vous avez progressé jusqu'à la récupération de plusieurs fichiers et l'utilisation de variables pour une récupération dynamique de fichiers.

En terminant ce laboratoire, vous avez acquis une expérience précieuse en utilisant le module Fetch pour collecter des fichiers ou des artefacts spécifiques à partir de vos hôtes gérés. Continuez à explorer Ansible et ses modules pour améliorer encore vos capacités d'automatisation.

Bonnes automatisations!