Cómo descargar archivos usando el módulo get_url ansible

Cómo descargar archivos usando el módulo get_url ansible

Como usuario de Linux, probablemente esté familiarizado con las herramientas que le permiten descargar archivos de servidores remotos utilizando protocolos HTTP, HTTPS y FTP, como WGET y CURL. Al realizar tareas de automatización, ocasionalmente necesitará descargar archivos y paquetes a hosts remotos. Si bien puede usar WGet y Curl en los hosts remotos para realizar esta función, también puede evitar la instalación requerida para usar estas herramientas utilizando el módulo get_url ansible.

Este tutorial le muestra cómo usar el comando ansible get_url para descargar archivos de servidores remotos.

Antes de comenzar, el comando ansible get_url requiere los siguientes requisitos previos:

  1. El servidor remoto desde el cual se descargarán los archivos deben tener acceso directo al servidor host.
  2. El servidor host debe admitir los protocolos HTTP y HTTPS.

Sobre el módulo get_url

Antes de conocer cómo implementar el módulo get_url, primero hay algunas cosas que vale la pena entender sobre este módulo. El módulo get_url admite las siguientes características:

  • Descarga y validación de la suma de verificación desde el servidor
  • Servidores HTTP, HTTPS y FTP
  • Servidores proxy, que pueden especificarse mediante la directiva _proxy
  • Establecer un tiempo de espera para obtener solicitudes
  • Rastreo web
  • Autorización web básica

A continuación, le mostraremos cómo usar el módulo get_url para descargar archivos con varios protocolos y configuraciones.

Usando el módulo get_url para obtener archivos

Los siguientes son algunos ejemplos que puede implementar utilizando el módulo get_url al descargar archivos de un servidor remoto.

Descargue archivos del servidor HTTP/HTTPS con URL directa

Considere el siguiente libro de jugadas que crea un directorio en el ~/.local y usa el módulo get_url para descargar el paquete Debian MySQL.

NOTA: Puede encontrar paquetes de servidor MySQL en el recurso que se proporciona a continuación:

https: // linkfy.a/mysql-paquetes

- Anfitriones: todos
- Nombre: Descargar Debian MySQL Server usando http/https
tareas:
- Nombre: Realice el directorio mysql-server in/home/user/.local
archivo:
Camino: ~/.Local/MySQL-Server
Estado: directorio
Modo: 0777
- Nombre: Obtener paquetes MySQL-Server
get_url:
URL: "https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán"
Dest: ~/.Local/MySQL-Server
Modo: 0777
suma de verificación: MD5: 5568e206a187a3b658392520540f556e

El libro de jugadas anterior comienza creando un directorio en $ home/.local/mysql-server, donde se debe almacenar el paquete descargado. Si está creando un directorio en un directorio privilegiado, recuerde usar la directiva 'convertirse en'.

A continuación, el libro de jugadas llama al módulo get_url y especifica la URL de la cual descargar el paquete, seguido del directorio de destino al que almacenar el archivo. La sección final del libro de jugadas especifica la suma de verificación MD5 para verificar la validez del archivo.

NOTA: En el libro de jugadas anterior, codificamos la suma de verificación, pero puede especificar la URL en la que se aloja la suma de verificación.

Después de ejecutar el libro de jugadas, obtendrá una salida que indica el éxito o el fracaso de las tareas.

$ ansible-playbook download_mysql_server.YML Play [Descargar Debian MySQL Server usando HTTP/HTTPS] ********************************************** ************************************************************ ************************************************************ ********************
Tarea [Reuniendo hechos] ********************************************** ************************************************************ ************************************************************ ******************************************
OK: [35.222.210.12]
Tarea [Realice el directorio mysql-server in/home/user/.local] ************************************************ ************************************************************ ************************************************************ ***********
35.222.210.12: OK = 3 cambiado = 1 inalámbrico = 0 fallido = 0 omitido = 0 rescatado = 0 ignorado = 0

Una vez que se completa el proceso, puede iniciar sesión en el host y verificar si existe el archivo.

Descargar archivos con SHA256 CheckSum

También puede descargar archivos y verificarlos usando la suma de verificación SHA256, como se muestra en el libro de jugadas de ejemplo a continuación:

- Anfitriones: todos
- Nombre: Descargar Debian MySQL Server usando http/https
tareas:
- Nombre: Realice el directorio mysql-server in/home/user/.local
archivo:
Camino: ~/.Local/MySQL-Server
Estado: directorio
Modo: 0777
- Nombre: Obtener paquetes MySQL-Server
get_url:
URL: https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán
Dest: ~/.Local/MySQL-Server
Modo: 0777
suma de verificación: SHA256: B5BB9D8014A0F9B1D61E21E796D78EEFDF1352F23CD32812F4850B878AE4944C

Para usar una URL en lugar de codificar la suma de verificación, considere el siguiente ejemplo:

- Anfitriones: todos
- Nombre: Descargar Debian MySQL Server usando http/https
tareas:
- Nombre: Realice el directorio mysql-server in/home/user/.local
archivo:
Camino: ~/.Local/MySQL-Server
Estado: directorio
Modo: 0777
- Nombre: Obtener paquetes MySQL-Server
get_url:
URL: https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán
Dest: ~/.Local/MySQL-Server
Modo: 0777
SUMACIÓN DE CHECKS: SHA256: https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán.SHA265

Descargue archivos con tiempo de espera sobre la falla de responder

En algunos casos, puede tener una URL de recursos especificada que puede tardar más en responder o no está disponible. Esto puede hacer que la conexión se cierre antes de que responda el servidor, ya que el tiempo de espera predeterminado suele ser de 10 segundos. Para especificar explícitamente el valor de tiempo de espera, use el tiempo de espera: Directiva.

Considere el siguiente libro de jugadas:

- Anfitriones: todos
- Nombre: Descargar Debian MySQL Server con Tiempo de espera
tareas:
- Nombre: Realice el directorio mysql-server in/home/user/.local
archivo:
Camino: ~/.Local/MySQL-Server
Estado: directorio
Modo: 0777
- Nombre: Obtener paquetes MySQL-Server
get_url:
URL: https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán
Dest: ~/.Local/MySQL-Server
Modo: 0777
SUMACIÓN DE CHECKS: SHA256: https: // descargas.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.Debundle.alquitrán.SHA265
Tiempo de espera: 30

El libro de jugadas anterior especifica el tiempo de espera como 30 segundos, y la conexión se eliminará si el servidor no responde dentro del tiempo establecido.

Descargar archivos con autenticación

Para descargar un archivo a un servidor que requiere autenticación, deberá especificar los valores de inicio de sesión.

Considere el siguiente libro de jugadas:

- Anfitriones: todos
- Nombre: Descargar archivo con autenticación
convertirse en: si
get_url:
URL: http: // 102.15.192.120/copias de seguridad/base de datos.alquitrán.GZ
Dest: /copias de seguridad
Nombre de usuario: usuario
Contraseña: 'pass'
Modo: 0777
Tiempo de espera: 5

Descargar archivos de la ruta de archivo local

Para descargar un archivo de una ruta de archivo local, puede usar el archivo: // esquema URI, seguido de la ruta al archivo.

Considere el siguiente libro de jugadas:

- Hosts: servidores web
- Nombre: Descargar archivo de la ruta del archivo local
convertirse en: si
get_url:
url: archivo: /// copias de seguridad/segura/config.alquitrán.GZ
Dest: /dev /null

Descargar archivos FTP

La descarga de archivos FTP es muy similar al proceso descrito en la sección anterior. Todo lo que necesita hacer es especificar ftp: // como protocolo al servidor.

Para descargar un archivo seguro, también debe agregar la información de inicio de sesión, como se muestra anteriormente.

Considere el siguiente libro de jugadas:

- Anfitriones: todos
tareas:
- Nombre: Descargar archivo del servidor FTP
convertirse en: si
get_url:
URL: ftp: // 192.168.11.101
Dest: /copias de seguridad
Modo: 0777

Opciones de módulo get_url ansible

El módulo get_url también admite varias opciones que puede usar para especificar y monitorear la descarga y administración de archivos. Las opciones disponibles con el módulo get_url incluyen lo siguiente:

  • Respaldo: La opción de copia de seguridad, un booleano de sí y no, le permite especificar si crea una copia de copia de seguridad del archivo para descargar.
  • Grupo: La opción de grupo especifica el grupo que tiene la propiedad del archivo descargado; Esta opción es como el comando chown en unix.
  • Encabezado: La opción de encabezados se utiliza para especificar encabezados HTTP personalizados en un diccionario en formato hash.
  • http_agent: La opción http_agent especifica el agente http.
  • Dueño: La opción del propietario especifica el propietario de los archivos de descarga.
  • Vapor: La opción Seuser establece al usuario en el contexto del archivo Selinux.
  • usa proxy: La opción USE_PROXY establece si se debe usar un proxy. Si esta opción se establece en False, todos los proxies serán ignorados, incluso si tiene uno especificado en el host de destino.

Conclusión

Este artículo discutió el módulo get_url en Ansible en detalle y le mostró cómo usar este módulo para descargar archivos de varias fuentes. Puede usar este artículo para hacer referencia a cómo descargar archivos en Ansible usando el módulo get_url.