2015-08-15 4 views
8

Я использую AWS CodeCommit, который, похоже, как урезанная версия git.Как я могу рассказать всем моим экземплярам AW2 EC2, чтобы вытащить из git/codecommit?

Если все эти экземпляры EC2 имеют один и тот же тег ролика, как это сделать?

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

Я знаю, что мне нужно поставить ключи SSH для доступа к CodeCommit на каждом из моих серверов EC2 и установить git на каждый из них (я буду испечь это в AMI). Я просто не уверен, как «запускать» каждую из машин EC2, чтобы сделать git pull? Есть ли команда AWS?

Я не парень разработчиков и знаю только основные Linux и PHP.

ответ

12

Для экземпляров EC2, которые запускаются с ролью IAM, вам даже не нужно печь в SSH-ключах. Git может получать учетные данные CodeCommit из метаданных экземпляра EC2. Выпекать Linux на основе AMI с последним пакетом AWS CLI и следующие строки в ~/.gitconfig:

[credential] 
    helper = !aws --profile default codecommit credential-helper [email protected] 
    UseHttpPath = true 

Запуск экземпляра с IAM роли прилагается, а затем вы можете клонировать CodeCommit репо без дополнительной настройки ,

Возможно, вы захотите изучить Capistrano и Capify-EC2, если вы хотите запускать команды git через флот экземпляров EC2 на основе тегов.

Обновлено: Если вы открыты для использования AWS OpsWorks для развертывания с CodeCommit, есть recent blog article о том, как это сделать.Вы также можете использовать OpsWorks для run arbitrary commands через экземпляры с Capistrano.

+0

Мне жаль, что я не ответил на этот вопрос, когда задал вопрос. В итоге я использовал Fabric для запуска команд git clone в моем парке EC2. –

+1

Если кто-то пытается это и имеет проблемы с «default default not found», попробуйте '' ''указать пустой профиль. Ваш профиль может/должен храниться в переменной среды '$ AWS_DEFAULT_PROFILE' на экземпляре EC2. –

+2

@RobbieAverill Вы можете просто полностью исключить бит '-profile default' (и, как вы говорите, установка его по умолчанию не работает, если у вас нет профиля по умолчанию) –

4

Ближайший вы получите к нему с АМС управляемых услуг является CodeDeploy. С его помощью вы можете организовать развертывание в экземплярах EC2 через командную строку или веб-консоль. Но CodeDeploy просто тянет артефакты от S3 или GitHub, до сих пор. К настоящему времени, CodeCommit, кажется, полностью изолированы от других сопутствующих услуг Amazon, как CodePipeline и CodeDeploy, так что это, кажется, не будет хорошим выбором. Но, конечно же, дорожная карта Amazon должна объединить все их (не делать этого было бы бессмысленно). Итак, теперь вы бы лучше использовали GitHub чем CodeCommit.

Но, учитывая, что вы не использует GitHub, то вам необходим раствор CI (непрерывная интеграция) между вами хранилищем и CodeDeploy, потянув код из источника, возможно, построение или выполнение тестов, толкая его S3 и сообщение CodeDeploy об этом. Например, есть CodeShip, который может это сделать и интегрируется с большим количеством внешних сервисов. Или у вас может быть свой собственный сервер CI, например Jenkins, выполняя роль «клей» для вас. (Дженкинс, вероятно, будет самым гибким, потому что он с открытым исходным кодом и может иметь плагины для всего.)

Так, разбивая вниз немного, вы рабочий будешь что-то вроде этого:

  • толчка код в репозиторий;
  • всякий раз, когда есть событие (фиксация на какой-либо ветке или новый тег, он должен быть настраиваемым), ваш CI вытаскивает его, запускает все, что вам нужно или требуется (строит, тестирует, упаковывает его) и толкает его до S3 (в качестве файла архива, обычно);
  • в зависимости от того, как вы установили вещи, ваш CI говорит код Deploy развернуть его на EC2 экземпляры сразу, или он просто говорит, что есть новая версия, и позволяет вам запускать развернуть , вручную, через CLI на веб-консоли, когда захотите.

(На самом деле, CodeDeploy не нажмет код EC2 экземпляров. Вместо этого, каждый экземпляр EC2 должен запустить агент, бассейны регулярно сервер CodeDeploy для того, чтобы знать, если есть что-то новое быть применена на местном уровне. Во всяком случае, CodeDeploy координаты и получить обратную связь от агентов, поэтому он просто работает, как если бы это было 100% активным вещество на CodeDeploy стороны и 100% пассивными на стороне экземпляров.)

Наиболее "чистое" решение AWS будет CodeCommit ->CodePipeline ->CodeDeploy, или просто CodeCommit ->CodeDeploy, но эти услуги не являются полностью интегрированными к настоящему времени.

В вашем случае, самое простое и эффективное решение прямо сейчас бы Github ->CodeDeploy. Все, что отличается от этого, потребует некоторых промежуточных шагов на пути, как в примерах, которые я предоставил (CodeShip, Jenkins и т. Д.).

 Смежные вопросы

  • Нет связанных вопросов^_^