Като потребител на 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-пакети
- домакини: всички- име: Изтеглете сървъра на Debian MySQL, използвайки HTTP / HTTPS
задачи:
- name: Направете директория mysql-server в / home / user /.местни
файл:
път: ~ /.локален / mysql-сървър
състояние: директория
режим: 0777
- име: ВЗЕМЕТЕ MySQL-сървърни пакети
get_url:
url: „https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран ”
dest: ~ /.локален / mysql-сървър
режим: 0777
контролна сума: md5: 5568e206a187a3b658392520540f556e
Горната книга за игри започва със създаване на директория в $ HOME /.local / mysql-сървър, където изтегленият пакет трябва да се съхранява. Ако създавате директория в привилегирована директория, не забравяйте да използвате директивата „стани“.
След това книгата за игри извиква модула get_url и посочва URL адреса, от който да изтеглите пакета, последван от целевата директория, в която да се съхранява файла. В последния раздел на учебната книга се посочва контролната сума md5 за проверка на валидността на файла.
ЗАБЕЛЕЖКА: В горната книга за игри сме кодирали твърдо контролната сума, но можете да посочите URL адреса, на който се хоства контролната сума.
След като стартирате книгата за игри, ще получите изход, показващ успеха или неуспеха на задачите.
$ ansible-playbook download_mysql_server.yml PLAY [Изтеглете сървъра на Debian MySQL, използвайки HTTP / HTTPS] ************************************** **************************************************** **************************************************** ******************ЗАДАЧА [Събиране на факти] *********************************************** **************************************************** **************************************************** *****************************************
добре: [35.222.210.12]
ЗАДАЧА [Направете директория mysql-server в / home / user /.местно] ************************************************** **************************************************** **************************************************** ***********
35.222.210.12: добре = 3 променени = 1 недостижим = 0 неуспешно = 0 пропуснато = 0 спасено = 0 игнорирано = 0
След като процесът приключи, можете да влезете в хоста и да проверите дали файлът съществува.
Изтеглете файлове с контролна сума sha256
Можете също така да изтеглите файлове и да ги проверите, като използвате контролната сума sha256, както е показано в примерната книга за игра по-долу:
- домакини: всички- име: Изтеглете сървъра на Debian MySQL, използвайки HTTP / HTTPS
задачи:
- name: Направете директория mysql-server в / home / user /.местни
файл:
път: ~ /.локален / mysql-сървър
състояние: директория
режим: 0777
- име: ВЗЕМЕТЕ MySQL-сървърни пакети
get_url:
url: https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран
dest: ~ /.локален / mysql-сървър
режим: 0777
контролна сума: sha256: b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c
За да използвате URL адрес, вместо да кодирате твърдо контролната сума, разгледайте следния пример:
- домакини: всички- име: Изтеглете сървъра на Debian MySQL, използвайки HTTP / HTTPS
задачи:
- name: Направете директория mysql-server в / home / user /.местни
файл:
път: ~ /.локален / mysql-сървър
състояние: директория
режим: 0777
- име: ВЗЕМЕТЕ MySQL-сървърни пакети
get_url:
url: https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран
dest: ~ /.локален / mysql-сървър
режим: 0777
контролна сума: sha256: https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран.sha265
Изтеглете файлове с изчакване при липса на отговор
В някои случаи може да имате посочен URL адрес на ресурс, който може да отнеме повече време за отговор или е недостъпен. Това може да доведе до затваряне на връзката, преди сървърът да отговори, тъй като времето за изчакване по подразбиране обикновено е 10 секунди. За да посочите изрично стойността на времето за изчакване, използвайте времето за изчакване:
Обмислете следната книга за игри:
- домакини: всички- име: Изтеглете сървъра на Debian MySQL с изчакване
задачи:
- name: Направете директория mysql-server в / home / user /.местни
файл:
път: ~ /.локален / mysql-сървър
състояние: директория
режим: 0777
- име: ВЗЕМЕТЕ MySQL-сървърни пакети
get_url:
url: https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран
dest: ~ /.локален / mysql-сървър
режим: 0777
контролна сума: sha256: https: // изтегляния.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-bundle.катран.sha265
изчакване: 30
Горната книга за игри определя времето за изчакване като 30 секунди и връзката ще бъде прекъсната, ако сървърът не отговори в рамките на зададеното време.
Изтеглете файлове с удостоверяване
За да изтеглите файл на сървър, който изисква удостоверяване, ще трябва да посочите стойностите за вход.
Обмислете следната книга за игри:
- домакини: всички- име: Изтеглете файл с удостоверяване
ставам: да
get_url:
url: http: // 102.15.192.120 / архиви / база данни.катран.gz
dest: / архиви
потребителско име: потребител
парола: „pass“
режим: 0777
изчакване: 5
Изтеглете файлове от локалния файлов път
За да изтеглите файл от локален файлов път, можете да използвате схемата file: // URI, последвана от пътя към файла.
Обмислете следната книга за игри:
- хостове: уеб сървъри- име: Изтеглете файла от локалния път на файла
ставам: да
get_url:
url: file: /// backups / secure / config.катран.gz
dest: / dev / null
Изтеглете FTP файлове
Изтеглянето на FTP файлове е много подобно на процеса, описан в предишния раздел. Всичко, което трябва да направите, е да посочите ftp: // като протокол към сървъра.
За да изтеглите защитен файл, трябва също да добавите данните за вход, както е показано по-рано.
Обмислете следната книга за игри:
- домакини: всичкизадачи:
- име: Изтеглете файл от FTP сървър
ставам: да
get_url:
url: ftp: // 192.168.11.101
dest: / архиви
режим: 0777
Отговорни опции на модула get_url
Модулът get_url също така поддържа различни опции, които можете да използвате за определяне и наблюдение на изтеглянето и управлението на файлове. Опциите, достъпни с модула get_url, включват следното:
- Архивиране: Опцията за архивиране, булева стойност от да и не, ви позволява да посочите дали да създадете резервно копие на файла, който да бъде изтеглен.
- Група: Опцията за група определя групата, която притежава собствеността върху изтегления файл; тази опция е като командата chown в Unix.
- Хедъри: Опцията за заглавия се използва за задаване на персонализирани HTTP заглавки в речник в хеш формат.
- http_agent: Опцията http_agent указва HTTP агента.
- Собственик: Опцията собственик определя собственика на файловете за изтегляне.
- Seuser: Опцията за потребител задава потребителя в контекста на файла SELinux.
- използвай прокси: Опцията use_proxy задава дали да се използва прокси. Ако тази опция е зададена на false, всички прокси ще бъдат игнорирани, дори ако имате такъв, посочен в целевия хост.
Заключение
Тази статия обсъди подробно модула get_url в Ansible и ви показа как да използвате този модул за изтегляне на файлове от различни източници. Можете да използвате тази статия за справка как да изтегляте файлове в Ansible с помощта на модула get_url.