развертывание шеф-повара? - PullRequest
11 голосов
/ 29 июля 2011

Я заинтересован в переходе с Capistrano на Chef, но у меня возникли некоторые проблемы при объединении всех частей.

Я следовал http://wiki.opscode.com/display/chef/Quick+Start и могу запускать экземпляры EC2 сknife.Что касается развертывания кода, похоже, что я хочу делать то, что в http://wiki.opscode.com/display/chef/Deploy+Resource,, единственная проблема заключается в том, что нигде на этой странице не упоминается, в каком каталоге / файле должен находиться блок кода deploy /to/path.

Другая проблема, с которой я сталкиваюсь, это понимание того, как развернуть изменения кода после настройки сервера.Возможно, я просто привык к своему текущему рабочему процессу (git push && cap deploy), но лучшее, что я могу сказать, это то, что после того, как я фиксирую свои изменения, я должен зайти на сервер и запустить sudo chef-client?что-то об этом чувствует себя неправильно.Разве нет эквивалента верхнего предела, то есть chef deploy?

Наконец (и, возможно, это немного сложнее), я хочу развернуть несколько приложений rails на одном сервере.Кажется целесообразным хранить какой-либо файл конфигурации chef в репозитории каждого приложения, описывая особенности его развертывания, но я не уверен, как это будет взаимодействовать с сервером chef-repo / hosted.Будет ли каждое приложение роль?И из моего понимания того, как все работает, я также немного обеспокоен тем, что «chef-client» будет пытаться развернуть все приложения при запуске.С git push && cap deploy Я уверен в том, что я развертываю.Принимая во внимание, что некоторые другие репозитории приложений могут не находиться в развертываемом состоянии.Будет ли способ развернуть только одно приложение в этой конфигурации?

Ответы [ 4 ]

8 голосов
/ 16 августа 2011

Таким образом, нож действительно способен выполнять задачи типа capistrano-esque - в частности, запускать команду на нескольких серверах.

Чтобы развернуть свое приложение на всех серверах приложений, если вы следовали пути поваренной книги приложения opscode rails, вы можете просто сделать следующее:

knife ssh role:t<appserver-role> chef-client -xroot -P<pass>

Это будет запускать chef-client как root на всех ваших серверах приложений. Он использует API поиска chef, чтобы найти все узлы с этой ролью и выполнить для них эту команду.

Это довольно мощно.

5 голосов
/ 08 августа 2012

Я написал следующую статью, описывающую, как приступить к развертыванию Ruby on Rails с помощью chef.

http://tech.hulu.com/blog/2012/07/06/automating-system-provisioning-and-application-deployment-with-chef/

Ну ... эта статья не только о Rails, но и о львеЧасть примера посвящена развертыванию Rails.

Существует также поваренная книга сообщества, называемая поваренной книгой "application", которую можно использовать для развертывания Ruby on Rails.По сравнению с этой кулинарной книгой пример в этой статье должен быть немного проще для понимания новыми людьми.Однако, как только вы привыкнете делать это, используя пример, приведенный в статье, вам непременно стоит взглянуть на поваренную книгу приложения, чтобы узнать, имеет ли это для вас больше смысла.

3 голосов
/ 25 июля 2012

Предложение об использовании ножа ssh для развертывания по требованию абсолютно верно.Если бы я мог более подробно остановиться на использовании Chef в качестве решения для развертывания (особенно по сравнению с такими инструментами, как Capistrano).Chef разработан как инструмент для управления конфигурациями и системной интеграции, и это означает, что все, что работает в системе, должно быть идемпотентным.

При использовании развертывания Chef иногда возникает путаница по поводу повторного запуска всего, когда Chefбег имеет место.Имейте в виду, что Capistrano работает, говоря системе «сделай это», Chef работает, говоря системе «будь этим», поэтому, какая версия приложения и какая схема должна использоваться базой данных, обычно определяется в атрибутах и ​​пакетах данных.Когда Chef запускается, если приложение уже развернуто и база данных уже имеет правильную схему, ничего не должно происходить, действия следует выполнять только в том случае, если система еще не находится в желаемом состоянии.Вот почему даже при развертывании нескольких приложений повторный запуск не должен вызывать проблем.

2 голосов
/ 07 мая 2013

По моему опыту, лучше сохранить capistrano, так как он имеет некоторые функции RoR, которые вам придется реплицировать с Chef.Chef - очень гибкий инструмент, и с ним можно многое сделать, чтобы он мог заменить многие другие инструменты.Лично я нахожу целевые инструменты более полезными.

Аддоны Capistrano для Unicorn, Синхронизация активов с S3 и другие (например, https://github.com/bokmann/dunce-cap) всегда очень полезны.

Как более простой способразвертывать приложения Ruby on Rails и управлять ими, я также могу предложить http://www.cloud66.com

Отказ от ответственности: я работаю в Cloud 66.

...