Ansible

Как загружать файлы с помощью модуля Ansible get_url

Как загружать файлы с помощью модуля Ansible get_url

Как пользователь Linux вы, вероятно, знакомы с инструментами, которые позволяют загружать файлы с удаленных серверов с использованием протоколов HTTP, HTTPS и FTP, таких как wget и cURL. При выполнении задач автоматизации вам иногда необходимо загружать файлы и пакеты на удаленные хосты. Хотя вы можете использовать wget и cURL на удаленных хостах для выполнения этой функции, вы также можете обойти необходимую установку для использования этих инструментов с помощью модуля Ansible get_url.

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

Прежде чем мы начнем, команда Ansible get_url требует следующих предварительных условий:

  1. Удаленный сервер, с которого должны быть загружены файлы, должен иметь прямой доступ к хост-серверу.
  2. Хост-сервер должен поддерживать протоколы HTTP и HTTPS.

О модуле get_url

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

Далее мы покажем вам, как использовать модуль get_url для загрузки файлов с различными протоколами и конфигурациями.

Использование модуля get_url для получения файлов

Ниже приведены несколько примеров, которые можно реализовать с помощью модуля get_url при загрузке файлов с удаленного сервера.

Загрузка файлов с сервера HTTP / HTTPS с прямым URL-адресом

Рассмотрим следующую книгу, которая создает каталог в ~ /.local и использует модуль get_url для загрузки пакета Debian MySQL.

ПРИМЕЧАНИЕ: Вы можете найти серверные пакеты MYSQL в ресурсах, представленных ниже:

https: // linkfy.в / mysql-packages

- хосты: все
- имя: Загрузить сервер MySQL Debian с использованием HTTP / HTTPS
задачи:
- имя: Сделать каталог mysql-server в / home / user /.местный
файл:
путь: ~ /.локальный / mysql-сервер
состояние: каталог
режим: 0777
- имя: ПОЛУЧИТЬ пакеты MySQL-сервера
get_url:
url: «https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь »
пункт назначения: ~ /.локальный / mysql-сервер
режим: 0777
контрольная сумма: md5: 5568e206a187a3b658392520540f556e

Приведенный выше сценарий начинается с создания каталога в $ HOME /.local / mysql-server, где должен храниться загруженный пакет. Если вы создаете каталог в привилегированном каталоге, не забудьте использовать директиву «стать».

Затем плейбук вызывает модуль get_url и указывает URL-адрес, с которого следует загрузить пакет, за которым следует целевой каталог, в котором следует сохранить файл. В последнем разделе плейбука указывается контрольная сумма md5 для проверки действительности файла.

ПРИМЕЧАНИЕ: В приведенном выше сценарии мы жестко запрограммировали контрольную сумму, но вы можете указать URL-адрес, по которому размещается контрольная сумма.

После того, как вы запустите playbook, вы получите вывод, указывающий на успех или неудачу задач.

$ ansible-playbook download_mysql_server.yml PLAY [Загрузить сервер MySQL Debian с использованием HTTP / HTTPS] ************************************ ************************************************* ************************************************* ******************
ЗАДАЧА [Сбор фактов] ******************************************* ************************************************* ************************************************* *****************************************
ок: [35.222.210.12]
ЗАДАЧА [Сделать каталог mysql-server в / home / user /.местный] ************************************************ ************************************************* ************************************************* ***********
35 год.222.210.12: нормально = 3 изменено = 1 недоступен = 0 сбой = 0 пропущен = 0 спасен = 0 проигнорирован = 0

После завершения процесса вы можете войти на хост и проверить, существует ли файл.

Скачать файлы с контрольной суммой sha256

Вы также можете загружать файлы и проверять их с помощью контрольной суммы sha256, как показано в примере ниже:

- хосты: все
- имя: Загрузить сервер MySQL Debian с использованием HTTP / HTTPS
задачи:
- имя: Сделать каталог mysql-server в / home / user /.местный
файл:
путь: ~ /.локальный / mysql-сервер
состояние: каталог
режим: 0777
- имя: ПОЛУЧИТЬ пакеты MySQL-сервера
get_url:
url: https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь
пункт назначения: ~ /.локальный / mysql-сервер
режим: 0777
контрольная сумма: sha256: b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c

Чтобы использовать URL-адрес вместо жесткого кодирования контрольной суммы, рассмотрим следующий пример:

- хосты: все
- имя: Загрузить сервер MySQL Debian с использованием HTTP / HTTPS
задачи:
- имя: Сделать каталог mysql-server в / home / user /.местный
файл:
путь: ~ /.локальный / mysql-сервер
состояние: каталог
режим: 0777
- имя: ПОЛУЧИТЬ пакеты MySQL-сервера
get_url:
url: https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь
пункт назначения: ~ /.локальный / mysql-сервер
режим: 0777
контрольная сумма: sha256: https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь.Sha265

Загрузка файлов с тайм-аутом при отсутствии ответа

В некоторых случаях у вас может быть указанный URL-адрес ресурса, ответ на который может занять больше времени, или он недоступен. Это может привести к закрытию соединения до того, как сервер ответит, поскольку время ожидания по умолчанию обычно составляет 10 секунд. Чтобы явно указать значение тайм-аута, используйте тайм-аут: директива.

Рассмотрим следующий сценарий:

- хосты: все
- имя: Загрузить сервер MySQL Debian с тайм-аутом
задачи:
- имя: Сделать каталог mysql-server в / home / user /.местный
файл:
путь: ~ /.локальный / mysql-сервер
состояние: каталог
режим: 0777
- имя: ПОЛУЧИТЬ пакеты MySQL-сервера
get_url:
url: https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь
пункт назначения: ~ /.локальный / mysql-сервер
режим: 0777
контрольная сумма: sha256: https: // загрузки.MySQL.com / архивы / получить / р / 23 / файл / mysql-server_8.0.22-1debian10_amd64.deb-bundle.деготь.Sha265
тайм-аут: 30

В приведенной выше книге задан тайм-аут 30 секунд, и соединение будет разорвано, если сервер не ответит в течение установленного времени.

Скачать файлы с аутентификацией

Чтобы загрузить файл на сервер, требующий аутентификации, вам нужно будет указать значения входа в систему.

Рассмотрим следующий сценарий:

- хосты: все
- имя: Загрузить файл с аутентификацией
стать: да
get_url:
url: http: // 102.15.192.120 / резервные копии / база данных.деготь.gz
dest: / backups
имя пользователя: пользователь
пароль: 'пароль'
режим: 0777
тайм-аут: 5

Скачать файлы из локального пути к файлу

Чтобы загрузить файл по локальному пути к файлу, вы можете использовать схему URI file: //, за которой следует путь к файлу.

Рассмотрим следующий сценарий:

- хосты: веб-серверы
- имя: Загрузить файл из локального пути к файлу
стать: да
get_url:
URL: файл: /// резервные копии / безопасность / конфигурация.деготь.gz
место назначения: / dev / null

Скачать файлы FTP

Загрузка файлов FTP очень похожа на процесс, описанный в предыдущем разделе. Все, что вам нужно сделать, это указать ftp: // в качестве протокола к серверу.

Чтобы загрузить защищенный файл, вы также должны добавить данные для входа, как показано ранее.

Рассмотрим следующий сценарий:

- хосты: все
задачи:
- имя: Загрузить файл с FTP-сервера
стать: да
get_url:
url: ftp: // 192.168.11.101
dest: / backups
режим: 0777

Параметры модуля Ansible get_url

Модуль get_url также поддерживает различные параметры, которые можно использовать для указания и отслеживания загрузки файлов и управления ими. Опции, доступные с модулем get_url, включают следующее:

Заключение

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

Как установить Doom и играть в него в Linux
Введение в Doom Серия Doom возникла в 90-х годах после выхода оригинальной Doom. Это мгновенно стал хитом, и с тех пор серия игр получила множество на...
Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...