Comment télécharger des fichiers à l'aide du module ANSIBLE GET_URL

Comment télécharger des fichiers à l'aide du module ANSIBLE GET_URL

En tant qu'utilisateur Linux, vous connaissez probablement des outils qui vous permettent de télécharger des fichiers à partir de serveurs distants à l'aide de protocoles HTTP, HTTPS et FTP, tels que WGET et Curl. Lorsque vous effectuez des tâches d'automatisation, vous devrez parfois télécharger des fichiers et des packages pour des hôtes distants. Bien que vous puissiez utiliser WGet et Curl sur les hôtes distants pour effectuer cette fonction, vous pouvez également contourner l'installation requise pour utiliser ces outils à l'aide du module ANSIBLE GET_URL.

Ce didacticiel vous montre comment utiliser la commande ANSIBLE GET_URL pour télécharger des fichiers à partir de serveurs distants.

Avant de commencer, la commande ANSIBLE GET_URL nécessite les conditions suivantes:

  1. Le serveur distant à partir duquel les fichiers doivent être téléchargés devraient avoir un accès direct au serveur hôte.
  2. Le serveur hôte doit prendre en charge les protocoles HTTP et HTTPS.

À propos du module get_url

Avant d'apprendre comment implémenter le module get_url, d'abord, il y a quelques choses qui valent la peine d'être comprises sur ce module. Le module get_url prend en charge les fonctionnalités suivantes:

  • Téléchargement et validation de la somme de contrôle à partir du serveur
  • Serveurs HTTP, HTTPS et FTP
  • Serveurs proxy, qui peuvent être spécifiés par la directive _proxy
  • Définir un délai d'attente pour les demandes de GET
  • Web rampant sur le Web
  • Autorisation Web de base

Ensuite, nous vous montrerons comment utiliser le module get_url pour télécharger des fichiers avec divers protocoles et configurations.

Utilisation du module get_url pour obtenir des fichiers

Voici quelques exemples que vous pouvez implémenter à l'aide du module get_url lors du téléchargement de fichiers à partir d'un serveur distant.

Téléchargez des fichiers à partir du serveur HTTP / HTTPS avec URL directe

Considérez le livre de jeu suivant qui crée un répertoire dans le ~ /.local et utilise le module get_url pour télécharger le package Debian MySQL.

NOTE: Vous pouvez trouver des packages MySQL Server dans la ressource fournie ci-dessous:

https: // linkfy.to / mysql packages

- hôtes: tout
- Nom: Téléchargez Debian MySQL Server à l'aide de HTTP / HTTPS
Tâches:
- Nom: créez le répertoire MySQL-Server dans / Home / User /.local
déposer:
Chemin: ~ /.local / mysql-server
État: répertoire
Mode: 0777
- Nom: Obtenez des packages MySQL-Server
get_url:
URL: «https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron"
dest: ~ /.local / mysql-server
Mode: 0777
Vérification: MD5: 5568E206A187A3B658392520540F556E

Le playbook ci-dessus commence par créer un répertoire dans $ home /.local / mysql-server, où le package téléchargé doit être stocké. Si vous créez un répertoire dans un répertoire privilégié, n'oubliez pas d'utiliser la directive «devenir».

Ensuite, le playbook appelle le module get_url et spécifie l'URL à partir de laquelle télécharger le package, suivi du répertoire de destination auquel stocker le fichier. La dernière section du playbook spécifie la somme de contrôle MD5 pour vérifier la validité du fichier.

NOTE: Dans le livre de jeu ci-dessus, nous avons codé en dur la somme de contrôle, mais vous pouvez spécifier l'URL à laquelle la somme de contrôle est hébergée.

Après avoir exécuté le livre de jeu, vous obtiendrez une sortie indiquant le succès ou l'échec des tâches.

$ anible-playbook download_mysql_server.yml play [Télécharger Debian MySQL Server en utilisant http / https] ************************************** **************************************************** **************************************************** ******************
Tâche [rassemblement des faits] ********************************************* **************************************************** **************************************************** *****************************************
OK: [35.222.210.12]
Tâche [Faire du répertoire MySQL-Server dans / Home / User /.local] ************************************************ **************************************************** **************************************************** ***********
35.222.210.12: OK = 3 Modification = 1 inaccessible = 0 Échec = 0 sauté = 0 RESSURÉ = 0 ignoré = 0

Une fois le processus terminé, vous pouvez vous connecter à l'hôte et vérifier si le fichier existe.

Télécharger des fichiers avec la somme de contrôle Sha256

Vous pouvez également télécharger des fichiers et les vérifier à l'aide de la somme de contrôle SHA256, comme indiqué dans l'exemple de playbook ci-dessous:

- hôtes: tout
- Nom: Téléchargez Debian MySQL Server à l'aide de HTTP / HTTPS
Tâches:
- Nom: créez le répertoire MySQL-Server dans / Home / User /.local
déposer:
Chemin: ~ /.local / mysql-serveur
État: répertoire
Mode: 0777
- Nom: Obtenez des packages MySQL-Server
get_url:
URL: https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron
dest: ~ /.local / mysql-server
Mode: 0777
Vérification: SHA256: B5BB9D8014A0F9B1D61E21E796D78EEFDF1352F23CD32812F4850B878AE4944C

Pour utiliser une URL au lieu de coder en dur la somme de contrôle, considérez l'exemple suivant:

- hôtes: tout
- Nom: Téléchargez Debian MySQL Server à l'aide de HTTP / HTTPS
Tâches:
- Nom: créez le répertoire MySQL-Server dans / Home / User /.local
déposer:
Chemin: ~ /.local / mysql-serveur
État: répertoire
Mode: 0777
- Nom: Obtenez des packages MySQL-Server
get_url:
URL: https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron
dest: ~ /.local / mysql-serveur
Mode: 0777
Vérification: sha256: https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron.sha265

Téléchargez des fichiers avec un temps mort en ne répondant pas

Dans certains cas, vous pouvez avoir une URL de ressources spécifiée qui peut prendre plus de temps pour répondre ou n'est pas disponible. Cela peut entraîner la fermeture de la connexion avant la réponse du serveur, car le délai d'expiration par défaut est généralement de 10 secondes. Pour spécifier explicitement la valeur de délai d'expiration, utilisez le délai d'expiration: directive.

Considérez le livre de jeu suivant:

- hôtes: tout
- Nom: Téléchargez Debian Mysql Server avec le délai d'expiration
Tâches:
- Nom: créez le répertoire MySQL-Server dans / Home / User /.local
déposer:
Chemin: ~ /.local / mysql-server
État: répertoire
Mode: 0777
- Nom: Obtenez des packages MySQL-Server
get_url:
URL: https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron
dest: ~ /.local / mysql-serveur
Mode: 0777
Vérification: sha256: https: // téléchargements.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.déboucher.le goudron.sha265
Timeout: 30

Le playbook ci-dessus spécifie le délai d'attente à 30 secondes, et la connexion sera supprimée si le serveur ne répond pas dans le temps défini.

Télécharger des fichiers avec l'authentification

Pour télécharger un fichier sur un serveur qui nécessite une authentification, vous devrez spécifier les valeurs de connexion.

Considérez le livre de jeu suivant:

- hôtes: tout
- Nom: téléchargez le fichier avec l'authentification
devenir: oui
get_url:
URL: http: // 102.15.192.120 / BASEUS / BASE DE DATA.le goudron.gz
dest: / sauvegardes
Nom d'utilisateur: utilisateur
mot de passe: 'pass'
Mode: 0777
Timeout: 5

Télécharger les fichiers à partir du chemin du fichier local

Pour télécharger un fichier à partir d'un chemin de fichier local, vous pouvez utiliser le schéma de fichier: // URI, suivi du chemin d'accès au fichier.

Considérez le livre de jeu suivant:

- hôtes: serveurs Web
- Nom: téléchargez le fichier depuis le chemin du fichier local
devenir: oui
get_url:
URL: fichier: /// sauvegarde / sécurisé / config.le goudron.gz
dest: / dev / null

Télécharger les fichiers FTP

Le téléchargement des fichiers FTP est très similaire au processus décrit dans la section précédente. Tout ce que vous avez à faire est de spécifier ftp: // en tant que protocole au serveur.

Pour télécharger un fichier sécurisé, vous devez également ajouter les informations de connexion, comme indiqué précédemment.

Considérez le livre de jeu suivant:

- hôtes: tout
Tâches:
- Nom: téléchargez le fichier depuis le serveur FTP
devenir: oui
get_url:
URL: FTP: // 192.168.11.101
dest: / sauvegardes
Mode: 0777

Options de module GET_URL ANSIBLE

Le module get_url prend également en charge diverses options que vous pouvez utiliser pour spécifier et surveiller le téléchargement et la gestion des fichiers. Les options disponibles avec le module get_url incluent les éléments suivants:

  • Sauvegarde: L'option de sauvegarde, un booléen de oui et non, vous permet de spécifier s'il faut créer une copie de sauvegarde du fichier à télécharger.
  • Groupe: L'option de groupe spécifie le groupe qui possède la propriété du fichier téléchargé; Cette option est comme la commande chown dans Unix.
  • Têtes: L'option d'en-têtes est utilisée pour spécifier des en-têtes HTTP personnalisés dans un dictionnaire au format de hachage.
  • http_agent: L'option http_agent spécifie l'agent http.
  • Propriétaire: L'option propriétaire spécifie le propriétaire des fichiers de téléchargement.
  • Sésateur: L'option Seuser définit l'utilisateur dans le contexte du fichier selinux.
  • Utiliser un proxy: L'option use_proxy définit si un proxy doit être utilisé. Si cette option est définie sur False, tous les proxies seront ignorés, même si vous en avez un spécifié dans l'hôte cible.

Conclusion

Cet article a discuté du module get_url dans Ansible en détail et vous a montré comment utiliser ce module pour télécharger des fichiers à partir de diverses sources. Vous pouvez utiliser cet article pour référencer comment télécharger des fichiers dans ANSIBLE en utilisant le module get_url.