Как пользователь Linux вы, вероятно, знакомы с инструментами, которые позволяют загружать файлы с удаленных серверов с использованием протоколов HTTP, HTTPS и FTP, таких как wget и cURL. При выполнении задач автоматизации вам иногда необходимо загружать файлы и пакеты на удаленные хосты. Хотя вы можете использовать wget и cURL на удаленных хостах для выполнения этой функции, вы также можете обойти необходимую установку для использования этих инструментов с помощью модуля Ansible get_url.
В этом руководстве показано, как использовать команду Ansible get_url для загрузки файлов с удаленных серверов.
Прежде чем мы начнем, команда Ansible get_url требует следующих предварительных условий:
- Удаленный сервер, с которого должны быть загружены файлы, должен иметь прямой доступ к хост-серверу.
- Хост-сервер должен поддерживать протоколы HTTP и HTTPS.
О модуле get_url
Прежде чем вы узнаете о том, как реализовать модуль get_url, сначала нужно понять несколько вещей об этом модуле. Модуль get_url поддерживает следующие функции:
- Загрузка контрольной суммы и проверка с сервера
- HTTP, HTTPS и FTP-серверы
- Прокси-серверы, которые могут быть указаны
директива _proxy - Установка тайм-аута для запросов на получение
- Веб-сканирование
- Базовая веб-авторизация
Далее мы покажем вам, как использовать модуль 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, включают следующее:
- Резервное копирование: Параметр резервного копирования, логическое значение "да" и "нет", позволяет указать, следует ли создавать резервную копию файла для загрузки.
- Группа: Параметр группы указывает группу, которая владеет загруженным файлом; эта опция похожа на команду chown в Unix.
- Заголовки: Параметр заголовков используется для указания пользовательских заголовков HTTP в словаре в формате хеша.
- http_agent: Параметр http_agent указывает HTTP-агент.
- Владелец: Опция владельца указывает владельца загружаемых файлов.
- Seuser: Опция seuser устанавливает пользователя в контексте файла SELinux.
- используй прокси: Опция use_proxy устанавливает, следует ли использовать прокси. Если для этого параметра установлено значение false, все прокси-серверы будут игнорироваться, даже если у вас есть один указанный на целевом хосте.
Заключение
В этой статье подробно рассмотрен модуль get_url в Ansible и показано, как использовать этот модуль для загрузки файлов из различных источников. Вы можете использовать эту статью, чтобы узнать, как загружать файлы в Ansible с помощью модуля get_url.