Введение
В этом лабораторном задании вы изучите модуль Ansible get_url, который позволяет загружать файлы из интернета и сохранять их на удаленных узлах. Модуль get_url предоставляет различные параметры для настройки процесса загрузки, включая аутентификацию, заголовки и проверку контрольной суммы.
Загрузить файл из URL-адреса
В этом шаге вы будете использовать модуль Ansible get_url для загрузки файла из URL-адреса и сохранения его на удаленном узле.
Сначала создайте новый файл playbook Ansible с именем /home/labex/project/get_url-module-playbook.yaml и откройте его в текстовом редакторе.
Добавьте следующее содержимое в файл 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: Это задает целевой узел, на котором будет выполняться playbook. В данном случае playbook будет выполняться на локальном узле, так как целевой узел -localhost.tasks: Это список задач для выполнения.name: Это описательное имя задачи, которое идентифицирует цель задачи.get_url: Это модуль в Ansible, используемый для загрузки файлов из интернета.url: Этот параметр задает URL-адрес, из которого будет загружен файл. В данном случае он загружает версиюAnsible2.9.25 из официальных выпусков Ansible.dest: Этот параметр задает путь назначения на целевом узле, где будет сохранен загруженный файл. В данном случае файл сохраняется в/tmp/ansible-2.9.25.tar.gz.
Кратко говоря, этот playbook загружает архив версии Ansible 2.9.25 из указанного URL-адреса и сохраняет его в /tmp/ansible-2.9.25.tar.gz на локальном узле.
Затем запустите playbook с помощью следующей команды:
ansible-playbook get_url-module-playbook.yaml
Просмотрите вывод, чтобы убедиться, что файл был успешно загружен и сохранен на удаленном узле. Пример вывода:
[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
Проверьте, что файл был успешно загружен и сохранен на удаленном узле.
ll /tmp/ansible-2.9.25.tar.gz
Пример вывода:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz
Настроить HTTP-заголовки запроса
В этом шаге вы будете использовать модуль Ansible get_url для настройки HTTP-заголовков запроса, отправляемых в процессе загрузки файла.
Сначала измените существующий файл playbook, удалив все содержимое и добавив следующее содержимое в файл 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: Это модуль в Ansible, используемый для загрузки файлов из интернета.url: Этот параметр задает URL-адрес, из которого будет загружен файл. В данном случае он загружает версиюAnsible2.9.25 из официальных выпусков Ansible.dest: Этот параметр задает путь назначения на целевом узле, где будет сохранен загруженный файл. В данном случае файл сохраняется в/tmp/ansible-2.9.25-1.tar.gz.headers: Это необязательный параметр, который позволяет вам указать пользовательские заголовки, которые будут включены в HTTP-запрос, отправляемый на сервер при загрузке файла. В данном случае он установлен для включения двух пользовательских заголовков:Custom-Header-1со значениемValue1иCustom-Header-2со значениемValue2. Эти заголовки могут быть использованы для аутентификации, авторизации или других целей по требованию сервера, на котором размещен файл.
Кратко говоря, этот playbook загрузит архив версии Ansible 2.9.25 из указанного URL-адреса с включением пользовательских заголовков в HTTP-запрос и сохранит его в виде ansible-2.9.25-1.tar.gz в директории /tmp на локальном узле.
Затем запустите playbook с помощью следующей команды:
ansible-playbook get_url-module-playbook.yaml
Просмотрите вывод, чтобы убедиться, что файл был успешно загружен и сохранен на удаленном узле, и проверьте, включены ли пользовательские заголовки в HTTP-запрос. Пример вывода:
[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
Проверьте, что файл был успешно загружен и сохранен на удаленном узле.
ll /tmp/ansible-2.9.25-1.tar.gz
Пример вывода:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz
Проверить целостность файла с использованием контрольной суммы
В этом шаге вы будете использовать модуль Ansible get_url для проверки целостности загруженного файла с использованием контрольной суммы.
Сначала измените существующий файл playbook, удалив все содержимое и добавив следующее содержимое в файл 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: Это модуль в Ansible, используемый для загрузки файлов из интернета.url: Этот параметр задает URL-адрес, из которого будет загружен файл. В данном случае он загружает версиюAnsible2.9.25 из официальных выпусков Ansible.dest: Этот параметр задает путь назначения на целевом узле, где будет сохранен загруженный файл. В данном случае файл сохраняется в/tmp/ansible-2.9.25-2.tar.gz.checksum: Этот параметр используется для указания контрольной суммы загружаемого файла, а также его типа. В данном случае он установлен наsha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha, что означает, что Ansible должен проверить контрольную суммуSHA256загруженного файла с контрольной суммой, предоставленной по указанному URL-адресу. Это обеспечивает целостность загруженного файла.
Кратко говоря, этот playbook загрузит архив версии Ansible 2.9.25 из указанного URL-адреса, сохранит его в виде ansible-2.9.25-2.tar.gz в директории /tmp на локальном узле и проверит его целостность, сравнив его контрольную сумму SHA256 с контрольной суммой, предоставленной по указанному URL-адресу.
Затем запустите playbook с помощью следующей команды:
ansible-playbook get_url-module-playbook.yaml
Просмотрите вывод, чтобы убедиться, что файл был успешно загружен и сохранен на удаленном узле, и проверьте, пройдена ли проверка контрольной суммы. Пример вывода:
[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
Проверьте, что файл был успешно загружен и сохранен на удаленном узле.
ll /tmp/ansible-2.9.25-2.tar.gz
Пример вывода:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz
Резюме
Поздравляем! Вы успешно завершили лабораторную работу по модулю Ansible get_url. Вы узнали, как загружать файлы из URL-адреса, сохранять их на удаленных узлах, настраивать HTTP-заголовки запроса и проверять целостность файла с использованием контрольной суммы.
Модуль get_url - это универсальный инструмент, который позволяет автоматизировать загрузку файлов и обрабатывать различные аспекты процесса загрузки. С этой информацией вы можете улучшить свои playbook Ansible и эффективно управлять распределением файлов по всей инфраструктуре.
Продолжайте изучать документацию Ansible и экспериментировать с разными модулями, чтобы расширить свои возможности автоматизации. Хороших успехов в использовании Ansible!


