Introducción
En este laboratorio, explorarás el módulo get_url de Ansible, que te permite descargar archivos desde Internet y guardarlos en hosts remotos. El módulo get_url ofrece varias opciones para personalizar el proceso de descarga, incluyendo autenticación, encabezados y verificación de resumen de comprobación.
Descargar un archivo desde una URL
En este paso, utilizarás el módulo get_url de Ansible para descargar un archivo desde una URL y guardarlo en un host remoto.
Primero, crea un nuevo archivo de playbook de Ansible llamado /home/labex/project/get_url-module-playbook.yaml y dile a un editor de texto que lo abra.
Agrega el siguiente contenido al archivo de playbook:
- hosts: localhost
tasks:
- name: Descargar un archivo desde una URL
get_url:
url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
dest: "/tmp/ansible-2.9.25.tar.gz"
hosts: Esto especifica el host destino en el que se ejecutará el playbook. En este caso, el playbook se ejecutará en el host local porque el host destino eslocalhost.tasks: Esta es una lista de tareas que se ejecutarán.name: Este es el nombre descriptivo de la tarea que identifica el propósito de la tarea.get_url: Este es un módulo en Ansible utilizado para descargar archivos desde Internet.url: Este parámetro especifica la URL desde la que se descargará el archivo. En este caso, está descargando la versión 2.9.25 deAnsibledesde las versiones oficiales de Ansible.dest: Este parámetro especifica la ruta de destino en el host destino donde se guardará el archivo descargado. En este caso, está guardando el archivo en/tmp/ansible-2.9.25.tar.gz.
En resumen, este playbook descarga el archivo comprimido de la versión 2.9.25 de Ansible desde la URL especificada y lo guarda en /tmp/ansible-2.9.25.tar.gz en el host local.
Luego, ejecuta el playbook con el siguiente comando:
ansible-playbook get_url-module-playbook.yaml
Observa la salida para ver si el archivo se ha descargado y guardado correctamente en el host remoto. Salida de ejemplo:
[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
Verifica que el archivo se haya descargado y guardado correctamente en el host remoto.
ll /tmp/ansible-2.9.25.tar.gz
Salida de ejemplo:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz
Personalizar los encabezados de la solicitud HTTP
En este paso, utilizarás el módulo get_url de Ansible para personalizar los encabezados de la solicitud HTTP enviados durante el proceso de descarga de archivos.
Primero, modifica el archivo de playbook existente eliminando todo el contenido y agregando el siguiente contenido al archivo de playbook:
- hosts: localhost
tasks:
- name: Descargar un archivo desde una URL con encabezados personalizados
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: Este es un módulo en Ansible utilizado para descargar archivos desde Internet.url: Este parámetro especifica la URL desde la que se descargará el archivo. En este caso, está descargando la versión 2.9.25 deAnsibledesde las versiones oficiales de Ansible.dest: Este parámetro especifica la ruta de destino en el host destino donde se guardará el archivo descargado. En este caso, está guardando el archivo en/tmp/ansible-2.9.25-1.tar.gz.headers: Este es un parámetro opcional que te permite especificar encabezados personalizados que se incluirán en la solicitud HTTP enviada al servidor al descargar el archivo. En este caso, está configurado para incluir dos encabezados personalizados:Custom-Header-1con un valor deValue1, yCustom-Header-2con un valor deValue2. Estos encabezados pueden utilizarse para la autenticación, autorización u otros propósitos según sea necesario por el servidor que hospeda el archivo.
En resumen, este playbook descargará el archivo comprimido de la versión 2.9.25 de Ansible desde la URL especificada con los encabezados personalizados incluidos en la solicitud HTTP, y lo guardará como ansible-2.9.25-1.tar.gz en el directorio /tmp del host local.
Luego, ejecuta el playbook con el siguiente comando:
ansible-playbook get_url-module-playbook.yaml
Observa la salida para ver si el archivo se ha descargado y guardado correctamente en el host remoto, y comprueba si los encabezados personalizados se incluyeron en la solicitud HTTP. Salida de ejemplo:
[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
Verifica que el archivo se haya descargado y guardado correctamente en el host remoto.
ll /tmp/ansible-2.9.25-1.tar.gz
Salida de ejemplo:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz
Verificar la integridad del archivo con resumen de comprobación
En este paso, utilizarás el módulo get_url de Ansible para verificar la integridad del archivo descargado utilizando un resumen de comprobación.
Primero, modifica el archivo de playbook existente eliminando todo el contenido y agregando el siguiente contenido al archivo de playbook:
- hosts: localhost
tasks:
- name: Descargar un archivo y verificar el resumen de comprobación
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: Este es un módulo en Ansible utilizado para descargar archivos desde Internet.url: Este parámetro especifica la URL desde la que se descargará el archivo. En este caso, está descargando la versión 2.9.25 deAnsibledesde las versiones oficiales de Ansible.dest: Este parámetro especifica la ruta de destino en el host destino donde se guardará el archivo descargado. En este caso, está guardando el archivo en/tmp/ansible-2.9.25-2.tar.gz.checksum: Este parámetro se utiliza para especificar el resumen de comprobación del archivo que se está descargando, junto con su tipo. En este caso, está configurado comosha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha, lo que indica que Ansible debe verificar el resumen de comprobaciónSHA256del archivo descargado con el resumen de comprobación proporcionado en la URL especificada. Esto garantiza la integridad del archivo descargado.
En resumen, este playbook descargará el archivo comprimido de la versión 2.9.25 de Ansible desde la URL especificada, lo guardará como ansible-2.9.25-2.tar.gz en el directorio /tmp del host local y verificará su integridad comparando su resumen de comprobación SHA256 con el resumen de comprobación proporcionado en la URL especificada.
Luego, ejecuta el playbook con el siguiente comando:
ansible-playbook get_url-module-playbook.yaml
Observa la salida para ver si el archivo se ha descargado y guardado correctamente en el host remoto, y comprueba si la verificación del resumen de comprobación tuvo éxito. Salida de ejemplo:
[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
Verifica que el archivo se haya descargado y guardado correctamente en el host remoto.
ll /tmp/ansible-2.9.25-2.tar.gz
Salida de ejemplo:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz
Resumen
¡Felicidades! Has completado con éxito el laboratorio del módulo get_url de Ansible. Has aprendido cómo descargar archivos desde una URL, guardarlos en hosts remotos, personalizar los encabezados de la solicitud HTTP y verificar la integridad del archivo utilizando un resumen de comprobación.
El módulo get_url es una herramienta versátil que te permite automatizar la descarga de archivos y manejar varios aspectos del proceso de descarga. Con este conocimiento, puedes mejorar tus playbooks de Ansible y administrar eficientemente la distribución de archivos en toda tu infraestructura.
Sigue explorando la documentación de Ansible y experimentando con diferentes módulos para ampliar tus capacidades de automatización. ¡Que disfrutes trabajando con Ansible!


