Introdução
Neste laboratório, você explorará o módulo get_url do Ansible, que permite baixar arquivos da internet e salvá-los em hosts remotos. O módulo get_url oferece várias opções para personalizar o processo de download, incluindo autenticação, cabeçalhos (headers) e verificação de checksum.
Baixar um Arquivo de uma URL
Nesta etapa, você usará o módulo get_url do Ansible para baixar um arquivo de uma URL e salvá-lo em um host remoto.
Primeiro, crie um novo arquivo de playbook do Ansible chamado /home/labex/project/get_url-module-playbook.yaml e abra-o em um editor de texto.
Adicione o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Download a file from a URL
get_url:
url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
dest: "/tmp/ansible-2.9.25.tar.gz"
hosts: Isso especifica o host de destino no qual executar o playbook. Neste caso, o playbook será executado no host local porque o host de destino élocalhost.tasks: Esta é uma lista de tarefas a serem executadas.name: Este é o nome descritivo para a tarefa que identifica o propósito da tarefa.get_url: Este é um módulo no Ansible usado para baixar arquivos da internet.url: Este parâmetro especifica a URL da qual baixar o arquivo. Neste caso, ele está baixando a versão 2.9.25 doAnsibledos lançamentos oficiais do Ansible.dest: Este parâmetro especifica o caminho de destino no host de destino onde o arquivo baixado será salvo. Neste caso, ele está salvando o arquivo em/tmp/ansible-2.9.25.tar.gz.
Em resumo, este playbook baixa o tarball da versão 2.9.25 do Ansible da URL especificada e o salva em /tmp/ansible-2.9.25.tar.gz no host local.
Em seguida, execute o playbook com o seguinte comando:
ansible-playbook get_url-module-playbook.yaml
Observe a saída para ver se o arquivo foi baixado e salvo com sucesso no host remoto. Exemplo de saída:
[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
Verifique se o arquivo foi baixado e salvo com sucesso no host remoto.
ll /tmp/ansible-2.9.25.tar.gz
Exemplo de saída:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz
Personalizar os Cabeçalhos (Headers) da Requisição HTTP
Nesta etapa, você usará o módulo get_url do Ansible para personalizar os cabeçalhos (headers) da requisição HTTP enviados durante o processo de download do arquivo.
Primeiro, modifique o arquivo de playbook existente removendo todo o conteúdo e adicionando o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Download a file from a URL with custom headers
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 é um módulo no Ansible usado para baixar arquivos da internet.url: Este parâmetro especifica a URL da qual baixar o arquivo. Neste caso, ele está baixando a versão 2.9.25 doAnsibledos lançamentos oficiais do Ansible.dest: Este parâmetro especifica o caminho de destino no host de destino onde o arquivo baixado será salvo. Neste caso, ele está salvando o arquivo em/tmp/ansible-2.9.25-1.tar.gz.headers: Este é um parâmetro opcional que permite especificar cabeçalhos personalizados a serem incluídos na requisição HTTP enviada ao servidor ao baixar o arquivo. Neste caso, ele está configurado para incluir dois cabeçalhos personalizados:Custom-Header-1com o valorValue1eCustom-Header-2com o valorValue2. Esses cabeçalhos podem ser usados para autenticação, autorização ou outros propósitos conforme exigido pelo servidor que hospeda o arquivo.
Em resumo, este playbook baixará o tarball da versão 2.9.25 do Ansible da URL especificada com cabeçalhos personalizados incluídos na requisição HTTP e o salvará como ansible-2.9.25-1.tar.gz no diretório /tmp no host local.
Em seguida, execute o playbook com o seguinte comando:
ansible-playbook get_url-module-playbook.yaml
Observe a saída para ver se o arquivo foi baixado e salvo com sucesso no host remoto e verifique se os cabeçalhos personalizados foram incluídos na requisição HTTP. Exemplo de saída:
[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
Verifique se o arquivo foi baixado e salvo com sucesso no host remoto.
ll /tmp/ansible-2.9.25-1.tar.gz
Exemplo de saída:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz
Verificar a Integridade do Arquivo com Checksum
Nesta etapa, você usará o módulo get_url do Ansible para verificar a integridade do arquivo baixado usando um checksum.
Primeiro, modifique o arquivo de playbook existente removendo todo o conteúdo e adicionando o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Download a file and verify checksum
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 é um módulo no Ansible usado para baixar arquivos da internet.url: Este parâmetro especifica a URL da qual baixar o arquivo. Neste caso, ele está baixando a versão 2.9.25 doAnsibledos lançamentos oficiais do Ansible.dest: Este parâmetro especifica o caminho de destino no host de destino onde o arquivo baixado será salvo. Neste caso, ele está salvando o arquivo em/tmp/ansible-2.9.25-2.tar.gz.checksum: Este parâmetro é usado para especificar o checksum do arquivo a ser baixado, juntamente com seu tipo. Neste caso, ele está configurado comosha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha, indicando que o Ansible deve verificar o checksumSHA256do arquivo baixado em relação ao checksum fornecido na URL especificada. Isso garante a integridade do arquivo baixado.
Em resumo, este playbook baixará o tarball da versão 2.9.25 do Ansible da URL especificada, salvará como ansible-2.9.25-2.tar.gz no diretório /tmp no host local e verificará sua integridade comparando seu checksum SHA256 com o checksum fornecido na URL especificada.
Em seguida, execute o playbook com o seguinte comando:
ansible-playbook get_url-module-playbook.yaml
Observe a saída para ver se o arquivo foi baixado e salvo com sucesso no host remoto e verifique se a verificação do checksum foi aprovada. Exemplo de saída:
[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
Verifique se o arquivo foi baixado e salvo com sucesso no host remoto.
ll /tmp/ansible-2.9.25-2.tar.gz
Exemplo de saída:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz
Resumo
Parabéns! Você concluiu com sucesso o laboratório do módulo get_url do Ansible. Você aprendeu como baixar arquivos de uma URL, salvá-los em hosts remotos, personalizar os cabeçalhos (headers) da requisição HTTP e verificar a integridade do arquivo usando um checksum.
O módulo get_url é uma ferramenta versátil que permite automatizar downloads de arquivos e lidar com vários aspectos do processo de download. Com este conhecimento, você pode aprimorar seus playbooks do Ansible e gerenciar eficientemente a distribuição de arquivos em toda a sua infraestrutura.
Continue explorando a documentação do Ansible e experimentando com diferentes módulos para expandir suas capacidades de automação. Feliz Ansible-ing!


