Módulo get_url de Ansible

AnsibleAnsibleBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


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{{"Módulo get_url de Ansible"}} ansible/shell -.-> lab-290188{{"Módulo get_url de Ansible"}} ansible/template -.-> lab-290188{{"Módulo get_url de Ansible"}} ansible/playbook -.-> lab-290188{{"Módulo get_url de Ansible"}} end

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 es localhost.
  • 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 de Ansible desde 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 de Ansible desde 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-1 con un valor de Value1, y Custom-Header-2 con un valor de Value2. 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 el 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 de Ansible desde 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 como sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha, lo que indica que Ansible debe verificar el resumen de comprobación SHA256 del 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!