Статьи

Отто: следующее поколение бродяг

Не так давно Vagrant был основным инструментом, который пытался решить эту извечную во времени проблему «он работает на моей машине». Разработчики могут создавать совместно используемые файлы Vagrant, чтобы коллеги могли раскручивать машины реплики для тестирования кода и взаимосвязанных частей типичного современного проекта. Vagrant далеко не мертв, но страдает от нескольких долговременных проблем, включая объем ресурсов создаваемых виртуальных машин, скорость обмена файлами между хостом и виртуальной машиной и скорость изменения конфигурации виртуальных машин.

Затем появился Docker , который исправил некоторые из этих проблем (и создал свои собственные) и взял с собой множество пользователей Vagrant.

И Vagrant, и Docker изначально были инструментами для разработчиков, и развертывание проектов в этих средах никогда не было таким простым, как должно быть. Docker многое сделал для решения этой проблемы, но Vagrant никогда не проектировался с учетом этого и только недавно добавил эту функциональность .

Hashicorp , создатели Vagrant, признают, что, возможно, Vagrant должен быть заменен, и постепенно подталкивают пользователей к переходу на Otto , который построен на Vagrant. Отто уделяет большое внимание микросервисным инфраструктурам и имеет следующие отличия от Vagrant:

  • Уровень применения. Vagrant фокусируется на настройке конфигурации на уровне машины, а Отто — на уровне приложений. Это учитывает гораздо более сложную, взаимосвязанную конфигурацию и зависимости.
  • Развертывание. Хотя развертывание возможно прямо из файла Vagrant, оно никогда не было идеальной или оптимальной задачей. С Отто развертывание в производство запекается прямо в.

Настройка

Otto доступен для пользователей Mac в виде предварительно настроенных двоичных файлов и Homebrew with Cask ( brew cask install otto ). В этом примере я буду использовать приложение Rails, но Otto также поставляется со встроенной поддержкой Java и Python.

1
rails new ottotest

Затем, чтобы управлять проектом с помощью Otto и скомпилировать его исходный код в несколько файлов, содержащихся в новой папке .otto , выполните следующую команду:

1
otto compile

Otto-структура

Отто принимает разумные решения по поводу настроек по умолчанию для этой команды, но если вам нужен больший контроль, вы можете создать Appfile внутри проекта, чтобы переопределить эти настройки. Простой пример для указания имени приложения и версии Ruby:

1
2
3
4
5
6
7
8
application {
  name = "Otto Test"
  type = "ruby"
}
 
customization {
  ruby_version = "2.3"
}

Читайте больше на Appfiles здесь .

Развивайся с Отто

Запуск следующего:

bash
otto dev

создаст целую виртуализированную среду разработки, соответствующую потребностям вашего приложения. При этом по-прежнему используются Vagrant и Virtualbox, поэтому Otto — скорее утилита для Vagrant, чем его замена. При первом запуске этой команды сборка может занять некоторое время, так как Otto создаст виртуальные машины для разработки этой конкретной разработки приложений, а также общие виртуальные машины, используемые Otto.

Теперь вы можете использовать:

1
otto dev ssh

Чтобы получить доступ к «машине разработки» и выполнить любые команды, которые вам могут понадобиться, например:

1
bundle && rackup --host 0.0.0.0

Отто должен был дать вам IP-адрес на этом этапе, но если вам нужно напомнить, вы можете использовать эту команду:

1
otto dev address

Добавить инфраструктуру

У Otto есть команда для добавления инфраструктуры развертывания, но в настоящее время она поддерживает только AWS. Это ограничивает, но скоро появятся и другие . Если у вас есть и учетная запись AWS, запустите:

1
otto infra

Otto проведет вас через процесс установки, чтобы подключить ваше приложение и учетную запись AWS.

Построить и развернуть

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

1
otto build

Команда otto build требует, чтобы ваш проект имел настройку управления версиями, но это не указано в документации.

Вы можете увидеть статус вашей сборки с помощью следующей команды:

1
otto status

Последний шаг — запустить:

1
otto deploy

Эти шаги соединяют два последних шага, взяв результат команды build, запустив сервер с ним в вашей инфраструктуре и предоставив вам IP-адрес для доступа к приложению.

Здесь работает больше Отто, «автоматика». Он обнаружит, требуется ли вашему приложению (или вы его определили) несколько серверов, а затем настроит балансировщик нагрузки для соответствующей обработки трафика.

Что дальше?

Является ли попытка Отто Хашикорпа устранить недостатки Vagrant и некоторых их конкурентов? В этой простой демонстрации этого поста Отто по-прежнему генерировал более 3 ГБ виртуальных машин. Хотя некоторые из них используются другими приложениями, это все же занимает больше места, чем контейнерные технологии.

Большое обещание Отто — «все, что вам нужно сделать, это запустить команду x», что является большим обещанием. Но мы все видели проекты и продукты, которые обещают это, и на самом деле, это редко бывает.

Чтобы Otto был успешным (и более гибким), Hashicorp необходимо добавить поддержку большего количества языков и поставщиков инфраструктуры. Они также должны добавить более подробную документацию. Слишком много разделов затмевают то, что действительно происходит, и некоторые вещи отсутствуют. Например, я не смог найти упоминания о том, как остановить и удалить виртуальные машины, созданные Otto, если не делать это в VirtualBox.

Для проекта это первые дни, но если вы ищете новое решение для вашей разработки для рабочего процесса развертывания и Otto удовлетворяет вашим потребностям, тогда взгляните.

Ссылка: Отто: следующее поколение Vagrant от нашего партнера по JCG Криса Уорда в блоге Codeship Blog .