Intereting Posts

Git Deploy PHP-приложение для множественных узлов EC2

Я читал много статей, в которых рассказывается о крючках после обновления для развертывания веб-сайтов с использованием Git, однако я не понимаю, как это делается на EC2.

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

Как я могу это сделать:

  1. Мои узлы автоматически извлекают последнюю версию сайта из репозитория при запуске

  2. Отправляйте обновления всем узлам (если это возможно, сразу же запускайте обновление триггера), даже те, которые динамически добавлены (поэтому нет конфигурации, превышающей то, что AMI уже содержит).

Что касается средств автоматизации, вы можете использовать марионетку или шеф-повара, чтобы выполнить эту работу. Компании, предоставляющие услуги, также предлагают:

Лично мы используем scalarium для развертывания наших серверов и для их автомасштабирования.

Если это не то, что вы хотите, вы можете, например, написать свои собственные сценарии для шеф-повара для развертывания на экземпляре. Там уже есть ресурс развертывания, который отлично работает с git. Я бы, вероятно, рекомендовал chef-solo, так как это не требовало бы запуска chef-сервера (имеет множество зависимостей и управление потребностями) или что-то вроде littlechef, которое позволяет запускать настройку, подобную chef-server , но без burdon работает chef-сервер.

Целью было бы, например, настроить частный AMI, который Amazon использует для автомасштабирования.

Этот AMI будет иметь ваши услуги (HTTP и т. Д.), Рубин и шеф-повар, установленные ( gem install chef ) и все, что вам нужно, а затем, в свою очередь, запускать скрипты для дальнейшей настройки вашего экземпляра и развертывания кода из GIT.

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

Вот пример, чтобы проверить код из GIT с помощью рецепта шеф-повара:

 git "/var/www/example.org" do repository "git://github.com/yourname/example.git" revision "production" action :sync end 

Это проверит вашу производственную ветвь от git.

Поскольку это выполняется по умолчанию как root, вы должны иметь свою команду deploykey в /root/.ssh/id_rsa . Вы можете сделать это до создания личного AMI. Вы также можете извлечь ключ из безопасного места перед развертыванием:

 directory "/root/.ssh/" do action :create end execute "download my deploy key" do command "wget https://secure.location/id_rsa -O /root/.ssh/id_rsa" not_if do File.exists?("/root/.ssh/id_rsa") end end 

(Я просто набрал это, я не запускал это, но я почти уверен, что он должен работать, поскольку мы делаем что-то очень похожее на не-EC2-хостах.)

Если вы не запустите chef-server или little-chef, я бы использовал capistrano для выполнения chef-solo снова – например, чтобы проверить новую версию кода. Capistrano отправил команды экземпляру (через ssh), для которого я бы, вероятно, установил учетную запись без пароля с ключом ssh и т. Д.

Дайте мне знать, если вам нужно больше указателей!