Разработайте скрипты по автоматизации установки и запуска Web-приложения на языке Ruby. Данные скрипты должны позволять разворачивать ваше приложение в рамках Playground-окружения.

Требование к расположению исходному коду приложения и скриптов для развёртывания:

  • Исходные коды Ruby-приложения должны находиться на основном компьютере.
  • В подкаталоге deploy должны находиться все файлы, которые необходимо развернуть на удалённой системе.
  • В каталоге deploy должен находиться Gemfile и Gemfile.lock, в которых должны находиться зависимости скрипта по установке.
  • Код скриптов для установки приложения должен быть написан на Ruby версии не ниже 2.5.
  • Скрипт должен называться deploy-app.rb.

Требование к первоначальному состоянию Playground.

  • Playground изначально находится в состоянии, сформированном на первом занятии. Никаких дополнительных приложений не установлено.
  • Дополнительно для пользователя user введено разрешение на выполнение команд от имени суперпользователя.

Формат сдачи

Вы должны загрузить в качестве ответа архив, содержащий каталог с вашим приложением. Согласно требованиям в каталоге также должен находится подкаталог deploy со скриптами, которые должны реализовать развёртывание приложения.

Рекомендации по реализации

  1. Для взаимодействия с удалённым компьютером используйте библиотеку net-ssh.
  2. Для загрузки файлов на удалённый компьютер используйте библиотеку net-scp.
  3. Параметры для подключения к удалённому компьютеру (имя пользователя, хост) принимайте через аргументы командной строки.
  4. Для подключения к Playground необходимо использовать пользователя user, не суперпользователя root.
  5. Статический контент должен раздаваться с помощью Nginx, а динамический контент с помощью вашего приложения.

Процедура проверки

  1. Сбросить состояние Playground в изначальное с помощью снепшотов.
  2. Распаковать во временный каталог архив с решением.
  3. Перейти в каталог deploy.
  4. Выполнить bundle install.
  5. Выполнить bundle exec ruby deploy-app.rb --user=user --host=PLAYGROUND_HOST --password=PASSWORD.
  6. Проверить доступность веб-приложения по порту 80 на playground.
    • Доступность приложения.
    • Корректность раздачи статического контента.

Дополнительно

Обеспечьте корректную работу приложения, если его вызвать второй раз.