Module Ansible get_url

AnsibleAnsibleBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez explorer le module Ansible get_url, qui vous permet de télécharger des fichiers depuis Internet et de les sauvegarder sur des hôtes distants. Le module get_url propose diverses options pour personnaliser le processus de téléchargement, notamment l'authentification, les en-têtes et la vérification de la somme de contrôle.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible/ModuleOperationsGroup -.-> ansible/get_url("Download URL") ansible/ModuleOperationsGroup -.-> ansible/shell("Execute Shell Commands") ansible/ModuleOperationsGroup -.-> ansible/template("Generate Files from Templates") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") subgraph Lab Skills ansible/get_url -.-> lab-290188{{"Module Ansible get_url"}} ansible/shell -.-> lab-290188{{"Module Ansible get_url"}} ansible/template -.-> lab-290188{{"Module Ansible get_url"}} ansible/playbook -.-> lab-290188{{"Module Ansible get_url"}} end

Télécharger un fichier à partir d'une URL

Dans cette étape, vous allez utiliser le module Ansible get_url pour télécharger un fichier à partir d'une URL et le sauvegarder sur un hôte distant.

Tout d'abord, créez un nouveau fichier de playbook Ansible appelé /home/labex/project/get_url-module-playbook.yaml et ouvrez-le dans un éditeur de texte.
Ajoutez le contenu suivant au fichier de playbook :

- hosts: localhost
  tasks:
    - name: Télécharger un fichier à partir d'une URL
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25.tar.gz"
  • hosts : Cela spécifie l'hôte cible sur lequel exécuter le playbook. Dans ce cas, le playbook sera exécuté sur l'hôte local car l'hôte cible est localhost.
  • tasks : Il s'agit d'une liste de tâches à exécuter.
  • name : C'est le nom descriptif de la tâche qui identifie le but de la tâche.
  • get_url : C'est un module dans Ansible utilisé pour télécharger des fichiers depuis Internet.
  • url : Ce paramètre spécifie l'URL à partir de laquelle télécharger le fichier. Dans ce cas, il télécharge la version Ansible 2.9.25 à partir des versions officielles d'Ansible.
  • dest : Ce paramètre spécifie le chemin de destination sur l'hôte cible où le fichier téléchargé sera enregistré. Dans ce cas, il enregistre le fichier dans /tmp/ansible-2.9.25.tar.gz.

En résumé, ce playbook télécharge le fichier tarball de la version Ansible 2.9.25 à partir de l'URL spécifiée et le sauvegarde dans /tmp/ansible-2.9.25.tar.gz sur l'hôte local.

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

ansible-playbook get_url-module-playbook.yaml

Observez la sortie pour voir si le fichier a été téléchargé et enregistré avec succès sur l'hôte distant.
Sortie d'exemple :

[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 [Download a file from a URL] **********************************************
changed: [localhost]

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

Vérifiez que le fichier a été téléchargé et enregistré avec succès sur l'hôte distant.

ll /tmp/ansible-2.9.25.tar.gz

Sortie d'exemple :

-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz

Personnaliser les en-têtes de requête HTTP

Dans cette étape, vous allez utiliser le module Ansible get_url pour personnaliser les en-têtes de requête HTTP envoyés pendant le processus de téléchargement de fichier.

Tout d'abord, modifiez le fichier de playbook existant en supprimant tout le contenu et en ajoutant le contenu suivant au fichier de playbook :

- hosts: localhost
  tasks:
    - name: Télécharger un fichier à partir d'une URL avec des en-têtes personnalisés
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25-1.tar.gz"
        headers:
          Custom-Header-1: Value1
          Custom-Header-2: Value2
  • get_url : C'est un module dans Ansible utilisé pour télécharger des fichiers depuis Internet.
  • url : Ce paramètre spécifie l'URL à partir de laquelle télécharger le fichier. Dans ce cas, il télécharge la version Ansible 2.9.25 à partir des versions officielles d'Ansible.
  • dest : Ce paramètre spécifie le chemin de destination sur l'hôte cible où le fichier téléchargé sera enregistré. Dans ce cas, il enregistre le fichier dans /tmp/ansible-2.9.25-1.tar.gz.
  • headers : Ceci est un paramètre facultatif qui vous permet de spécifier des en-têtes personnalisés à inclure dans la requête HTTP envoyée au serveur lors du téléchargement du fichier. Dans ce cas, il est configuré pour inclure deux en-têtes personnalisés : Custom-Header-1 avec une valeur de Value1 et Custom-Header-2 avec une valeur de Value2. Ces en-têtes peuvent être utilisés pour l'authentification, l'autorisation ou d'autres fins selon les exigences du serveur hébergeant le fichier.

En résumé, ce playbook téléchargera le fichier tarball de la version Ansible 2.9.25 à partir de l'URL spécifiée avec des en-têtes personnalisés inclus dans la requête HTTP, et le sauvera sous le nom ansible-2.9.25-1.tar.gz dans le répertoire /tmp sur l'hôte local.

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

ansible-playbook get_url-module-playbook.yaml

Observez la sortie pour voir si le fichier a été téléchargé et enregistré avec succès sur l'hôte distant, et vérifiez si les en-têtes personnalisés ont été inclus dans la requête HTTP.
Sortie d'exemple :

[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 [Download a file from a URL with custom headers] **************************
changed: [localhost]

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

Vérifiez que le fichier a été téléchargé et enregistré avec succès sur l'hôte distant.

ll /tmp/ansible-2.9.25-1.tar.gz

Sortie d'exemple :

-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz

Vérifier l'intégrité du fichier avec la somme de contrôle

Dans cette étape, vous allez utiliser le module Ansible get_url pour vérifier l'intégrité du fichier téléchargé en utilisant une somme de contrôle.

Tout d'abord, modifiez le fichier de playbook existant en supprimant tout le contenu et en ajoutant le contenu suivant au fichier de playbook :

- hosts: localhost
  tasks:
    - name: Télécharger un fichier et vérifier la somme de contrôle
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25-2.tar.gz"
        checksum: "sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha"
  • get_url : C'est un module dans Ansible utilisé pour télécharger des fichiers depuis Internet.
  • url : Ce paramètre spécifie l'URL à partir de laquelle télécharger le fichier. Dans ce cas, il télécharge la version Ansible 2.9.25 à partir des versions officielles d'Ansible.
  • dest : Ce paramètre spécifie le chemin de destination sur l'hôte cible où le fichier téléchargé sera enregistré. Dans ce cas, il enregistre le fichier dans /tmp/ansible-2.9.25-2.tar.gz.
  • checksum : Ce paramètre est utilisé pour spécifier la somme de contrôle du fichier en cours de téléchargement, ainsi que son type. Dans ce cas, il est défini sur sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha, indiquant qu'Ansible devrait vérifier la somme de contrôle SHA256 du fichier téléchargé par rapport à la somme de contrôle fournie à l'URL spécifiée. Cela assure l'intégrité du fichier téléchargé.

En résumé, ce playbook téléchargera le fichier tarball de la version Ansible 2.9.25 à partir de l'URL spécifiée, le sauvera sous le nom ansible-2.9.25-2.tar.gz dans le répertoire /tmp sur l'hôte local, et vérifiera son intégrité en comparant sa somme de contrôle SHA256 avec la somme de contrôle fournie à l'URL spécifiée.

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

ansible-playbook get_url-module-playbook.yaml

Observez la sortie pour voir si le fichier a été téléchargé et enregistré avec succès sur l'hôte distant, et vérifiez si la vérification de la somme de contrôle a réussi.
Sortie d'exemple :

[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 [Download a file and verify checksum] *************************************
changed: [localhost]

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

Vérifiez que le fichier a été téléchargé et enregistré avec succès sur l'hôte distant.

ll /tmp/ansible-2.9.25-2.tar.gz

Sortie d'exemple :

-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz

Sommaire

Félicitations! Vous avez réussi le laboratoire sur le module Ansible get_url. Vous avez appris à télécharger des fichiers à partir d'une URL, à les sauvegarder sur des hôtes distants, à personnaliser les en-têtes de requête HTTP et à vérifier l'intégrité des fichiers en utilisant une somme de contrôle.

Le module get_url est un outil polyvalent qui vous permet d'automatiser les téléchargements de fichiers et de gérer divers aspects du processus de téléchargement. Avec ces connaissances, vous pouvez améliorer vos playbooks Ansible et gérer efficacement la distribution de fichiers dans votre infrastructure.

Continuez à explorer la documentation Ansible et à expérimenter avec différents modules pour étendre vos capacités d'automatisation. Bonne continuation avec Ansible!