Модуль Ansible get_url

AnsibleAnsibleBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании вы изучите модуль Ansible get_url, который позволяет загружать файлы из интернета и сохранять их на удаленных узлах. Модуль get_url предоставляет различные параметры для настройки процесса загрузки, включая аутентификацию, заголовки и проверку контрольной суммы.


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{{"Модуль Ansible get_url"}} ansible/shell -.-> lab-290188{{"Модуль Ansible get_url"}} ansible/template -.-> lab-290188{{"Модуль Ansible get_url"}} ansible/playbook -.-> lab-290188{{"Модуль Ansible get_url"}} end

Загрузка файла из 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-адрес, из которого будет загружен файл. В данном случае он загружает версию Ansible 2.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-адрес, из которого будет загружен файл. В данном случае он загружает версию Ansible 2.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-адрес, из которого будет загружен файл. В данном случае он загружает версию Ansible 2.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!