2020-04, Проверочная работа №1
Разработайте скрипты по автоматизации установки и запуска Web-приложения на языке Ruby. Данные скрипты должны позволять разворачивать ваше приложение в рамках Playground-окружения.
Требование к расположению исходному коду приложения и скриптов для развёртывания:
- Исходные коды Ruby-приложения должны находиться на основном компьютере.
- В подкаталоге
deploy
должны находиться все файлы, которые необходимо развернуть на удалённой системе. - В каталоге
deploy
должен находиться Gemfile и Gemfile.lock, в которых должны находиться зависимости скрипта по установке. - Код скриптов для установки приложения должен быть написан на Ruby версии не ниже 2.5.
- Скрипт должен называться
deploy-app.rb
.
Требование к первоначальному состоянию Playground.
- Playground изначально находится в состоянии, сформированном на первом занятии. Никаких дополнительных приложений не установлено.
- Дополнительно для пользователя
user
введено разрешение на выполнение команд от имени суперпользователя.
Формат сдачи
Вы должны загрузить в качестве ответа архив, содержащий каталог с вашим приложением. Согласно требованиям в каталоге также должен находится подкаталог deploy
со скриптами, которые должны реализовать развёртывание приложения.
Рекомендации по реализации
- Для взаимодействия с удалённым компьютером используйте библиотеку
net-ssh
. - Для загрузки файлов на удалённый компьютер используйте библиотеку
net-scp
. - Параметры для подключения к удалённому компьютеру (имя пользователя, хост) принимайте через аргументы командной строки.
- Для подключения к Playground необходимо использовать пользователя
user
, не суперпользователяroot
. - Статический контент должен раздаваться с помощью Nginx, а динамический контент с помощью вашего приложения.
Процедура проверки
- Сбросить состояние Playground в изначальное с помощью снепшотов.
- Распаковать во временный каталог архив с решением.
- Перейти в каталог
deploy
. - Выполнить
bundle install
. - Выполнить
bundle exec ruby deploy-app.rb --user=user --host=PLAYGROUND_HOST --password=PASSWORD
. - Проверить доступность веб-приложения по порту 80 на playground.
- Доступность приложения.
- Корректность раздачи статического контента.
Дополнительно
Обеспечьте корректную работу приложения, если его вызвать второй раз.