Как развернуть существующее приложение с CodeDeploy на новом экземпляре EC2

Я использую CodeShip для развертывания своего приложения на экземплярах AWS EC2, когда выходит новая версия приложения. CodeShip сначала упаковывает мое приложение в .zip и помещает его в S3. Каждый пакет развертывания создается с другим именем файла. Когда я развертываю с помощью CodeShip, они создают новую версию в CodeDeploy и развертывают ее во всех текущих экземплярах.

С одной стороны, каждый раз, когда я развертываю новую версию, она развертывается во всех моих уже запущенных экземплярах, но как я могу развернуть последнюю версию моего приложения из CodeDeploy в только что созданный экземпляр? Есть ли способ использовать aws-sdk (Ruby или cli) для этого?

Я использую OpsWorks для обслуживания своих экземпляров и использую специальную поваренную книгу Chef для создания среды.

Спасибо


person LoNormaly    schedule 27.12.2014    source источник
comment
Создайте разные имена тегов для каждой функции / слоя, поэтому при применении изменения будут применяться ко всем экземплярам с этим тегом, независимо от того, был ли он создан заново или нет.   -  person BMW    schedule 28.12.2014


Ответы (2)


Поскольку у вас есть группа экземпляров EC2, на которых вы хотите запустить одно и то же приложение, рассмотрите возможность использования AutoScaling Group (ASG). Затем создайте группу развертывания на основе ASG (а не тегов экземпляра EC2). В следующий раз, когда в этой ASG будет запущена какая-либо новая машина, Code Deploy автоматически запустится и развернет последний успешный пакет развертывания. Я использую этот метод уже много месяцев, и он отлично работает.

person Calvin Boey    schedule 12.09.2016

Из CodeDeploy http://aws.amazon.com/codedeploy/faqs/, если вы перейдете в раздел концепций и посмотрите на вопрос «Что такое группа развертывания», в ответе вы получите больше информации о том, как работает группа развертывания.

CodeDeploy использует теги в группе развертывания для поиска экземпляров EC2 при создании нового развертывания. Итак, для вновь созданных экземпляров вам просто нужно пометить их одними и теми же тегами в этой группе развертывания, а затем начать новое развертывание с нужной ревизией. CodeDeploy найдет все экземпляры EC2, помеченные тегами в группе развертывания.

Но вы должны это заметить: если вы хотите вручную запустить новый экземпляр EC2, вам нужно сделать несколько вещей. Вы можете выполнить следующие действия: http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-prepare-instances.html, чтобы запустить экземпляр, работающий с CodeDeploy.

После того, как экземпляр был помечен и настроен правильно, вы можете просто начать новое развертывание с последней версией, как вы это делаете сейчас. Редакция должна быть автоматически развернута в новом экземпляре с помощью CodeDeploy.

person Bangxi Yu    schedule 17.01.2015
comment
Спасибо. Развертывание ревизии каждый раз при рождении нового экземпляра - это большие накладные расходы, так как он будет развертывать код для всех членов тега. - person LoNormaly; 16.04.2015