Статьи

Отто делает разработку и развертывание легким

эфирное масло

Otto — это инструмент с открытым исходным кодом для создания виртуальных сред разработки для вашего приложения. Это преемник популярного инструмента виртуальной разработки vagrant . Оба проекта созданы Hashicorp .

Виртуальные среды разработки абстрагируют среду приложения от базовой операционной системы. Это обеспечит согласованность приложения на большинстве / всех платформах и устранит возникающие проблемы на платформе. Otto упрощает создание таких сред разработки и может помочь в настройке той же среды на производственных серверах.

Сегодня мы увидим, как развернуть простое приложение Rails на базе базы данных в AWS с помощью Otto. Начните с установки Otto на свой компьютер, если его там еще нет.

Установка Отто

Установка Отто довольно проста. Для Windows, Mac и популярных дистрибутивов Linux уже доступны упакованные двоичные файлы. Следуйте инструкциям на этой странице, чтобы установить и настроить Otto.

Прежде чем продолжить, убедитесь, что Otto правильно установлен на вашем компьютере, введя следующую команду в вашем терминале:

otto version 

Если вы видите ошибку Command not available , проверьте, правильно ли добавлен бинарный файл в системный путь, или попробуйте в новом сеансе терминала.

Настройка приложения Rails

Давайте создадим приложение Rails сейчас. Введите следующую команду в своем терминале:

 rails new otto-example -d postgresql 

CD в ​​каталог и создайте файл с именем Appfile в корне каталога и добавьте содержимое ниже к нему. Appfile используется Otto для настройки специфичных для приложения конфигураций, таких как зависимости.

 application { name = "otto-example" type = "ruby" dependency { source = "github.com/cromulus/otto-postgres" } } 

Запустите следующую команду для компиляции приложения:

 otto compile 

Даже без Appfile Отто автоматически обнаруживает, что это приложение Rails, вычисляет зависимость (в нашем случае PostgreSQL) и компилирует приложение. Но это всегда хорошая практика, чтобы быть явным. Теперь запустите среду разработки:

 otto dev 

Если на вашем компьютере не установлен Vagrant, эта команда установит Vagrant, VirtualBox и другие инструменты, необходимые для запуска вашего приложения и Otto. Это будет довольно большая загрузка и займет некоторое время для завершения всего процесса. Однако это разовый процесс, поэтому оно того стоит.

Если вы видите сообщение, что Otto can't install Vagrant automatically , перейдите на страницу загрузок Vagrant и установите соответствующий пакет для вашей операционной системы.

Если вы видите сообщение об ошибке с ошибкой Vagrant failed with status code 1 , попробуйте установить VirtualBox вручную со страницы загрузки .

Если вы видите какое-либо сообщение об ошибке, похожее на «невозможно подключиться к серверу», попробуйте войти в среду dev с помощью otto dev ssh и проверить, установлен ли Postgres, введя psql в командную строку. Если нет, установите его с помощью следующих команд:

 . /etc/default/locale sudo apt-get install -y postgresql-9.1 sudo -u postgres createuser --superuser vagrant и . /etc/default/locale sudo apt-get install -y postgresql-9.1 sudo -u postgres createuser --superuser vagrant по . /etc/default/locale sudo apt-get install -y postgresql-9.1 sudo -u postgres createuser --superuser vagrant 

и выполните команды rake для настройки базы данных:

 rake db:create 

При этом база данных создается для нашего приложения. Как упоминалось выше, вы можете попасть в среду разработки, используя:

 otto dev ssh 

Давайте быстро создадим каркас для нашего приложения Rails:

 rails generate scaffold post title body:text rake db:migrate 

Вы можете запускать эти команды как вне среды, так и внутри нее. Файлы автоматически синхронизируются. Чтобы убедиться, что все работает правильно, запустите приложение Rack в среде Otto:

 rackup --host 0.0.0.0 

В другом терминале получите IP-адрес виртуальной машины, выполнив следующую команду из каталога проекта:

 otto dev address 

Выход для вышеуказанной команды является адресом IPV4. Перейдите по http://<IP-ADDRESS>:9292 и, если все будет работать, вы увидите страницу Rails по умолчанию.

Сборка приложения

Теперь посмотрим, как создать наше приложение, чтобы оно было готово для AWS.

У Otto есть концепция, называемая инфраструктурой, которая относится к целевой облачной платформе, где мы хотим развернуть наше приложение. В этом руководстве наша инфраструктура — AWS. Для каждой инфраструктуры существует несколько разновидностей с различными конфигурациями. Для AWS доступны два варианта — simple и vpc-public-private . Простой вариант предназначен для простых приложений и фокусируется на стоимости, жертвуя масштабируемостью. Опция vpc-public-private, с другой стороны, настраивает другие ресурсы, такие как экземпляры NAT, для будущей масштабируемости. Вы можете указать свой вкус в Appfile, и, если он не задан явно, по умолчанию принимается simple .

Давайте начнем создавать приложение, введя следующую команду в терминал:

 otto infra 

Эта команда настраивает облачную среду согласно указанному варианту. Это заботится о создании всех необходимых модулей, таких как подсети VPC, шлюзы маршрутизатора, экземпляры инициализации и тому подобное. На этом этапе Otto запросит ваш ключ доступа и секретный ключ AWS, который вы можете получить здесь, если у вас уже есть учетная запись. Если вы этого не сделаете, вы можете подписаться на бесплатную учетную запись, которая дает бесплатный уровень на первые 12 месяцев, который вы можете использовать для экспериментов с этим учебником.

После ввода учетных данных AWS Отто запросит подтверждение установки Terraform . Введите «да» и продолжите процесс. Проще говоря, Terraform — это инструмент управления конфигурацией для сред, в том числе и от Hashicorp.

Наберите otto status чтобы убедиться, что все прошло хорошо. Если вы видите зеленое состояние инфраструктуры, это означает, что мы успешно настроили инфраструктуру для нашего приложения. Давайте создадим приложение и развернем его.

Сейчас мы создадим приложение. Создайте образ машины Amazon (AMI), который представляет собой образ диска, распознаваемый AWS. Вы также можете создать Docker-контейнер, если хотите, используя этот шаг. Чтобы начать сборку приложения, введите следующую команду в терминал:

 otto build 

Он запросит ваш пароль, который вы ввели после ввода Ключа доступа и Секрета доступа на этапе настройки инфраструктуры. Введите пароль и введите «да», если он просит установить Packer . Packer — это еще один инструмент Hashicorp, который создает образы контейнера и машины для нескольких пунктов назначения (например, AWS или Digital Ocean) из конфигурации.

Если вы видите сообщение об ошибке, подобное этому, попробуйте инициализировать репозиторий в git и зафиксировать изменения:

 Error building app: error getting git commit: exit status 128 stdout: stderr: fatal: bad default revision 'HEAD' 

Процесс сборки может занять несколько минут. Как только это будет сделано, убедитесь, что сборка завершена, набрав:

 otto status 

Вы должны увидеть статус сборки зеленым цветом.

Развертывание приложения

Это последний шаг урока. Давайте развернем наш пользовательский AMI в настроенной инфраструктуре AWS. Введите следующую команду в терминал:

 otto deploy 

Отто возьмет построенный нами AMI и запустит новый сервер в нашей инфраструктуре, а затем развернет там наш AMI. После завершения развертывания вы увидите IP-адрес сервера, откройте его в своем браузере и увидите, что наше веб-приложение работает на AWS. Если вы хотите повторно посетить IP-адрес развертывания, вы можете набрать

 otto deploy info 

в терминал, чтобы получить информацию о развертывании.

Вывод

На этом шаге мы подошли к завершению этого урока. Отто, как показано здесь, так прост, но так силен. Я рекомендую просмотреть их документацию и извлечь максимальную пользу из нее. Люди из Hashicorp являются яркими примерами того, почему открытый исходный код — отличная вещь, а Отто — очень убедительный вход на форум менеджеров среды. Проверьте Отто и дайте мне знать, как вы его используете.