3

Я хочу настроить Elastic Beanstalk для моего существующего приложения rails.

Мне удалось создать пример приложения foo.

Вот такие у меня вопросы

Мне нужно, чтобы развертывание происходило из моего репозитория git, а не с моего локального пути, где я развертываюсь. Как мне сделать это для примера приложения Foo.

Команда git aws.push, похоже, развернута на новом экземпляре ec2. Однако, это не повлияло на изменения в моем git-репозитории. Должен ли я сделать git push отдельно перед выполнением git aws.push? Обратите внимание, что моя ветвь впереди на 1 коммит, когда я делаю git-статус. Поддерживает ли aws отдельный репозиторий git? Как я могу заставить его использовать вместо этого мой репозиторий git?

[mymac:~/Projects/new/foo(master)]$ git aws.push
Counting objects: 4949, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1115/1115), done.
Writing objects: 100% (4949/4949), 14.11 MiB | 1.90 MiB/s, done.
Total 4949 (delta 3800), reused 4944 (delta 3798)
remote: 
To https://AKIAJZT3WFY2WLO6CHQQ:20121127T030627Zf56675b2f4c9c731ca6f51b11d36a438e8bcee25c5171061ce5ac681495318c9@git.elasticbeanstalk.ap-southeast-1.amazonaws.com/v1/repos/617069/commitid/39396162666436346439656465313537613561343561626465643931393366623762386265303138/environment/6170692d656e76
 * [new branch]      HEAD -> master


[mymac:~/Projects/new/foo(master)]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Ниже приведен результат только git push.

[mymac:~/Projects/new/foo(master)]$ git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 340 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@github.com:xxxx/foo.git
   885cc33..99abfd6  master -> master

Отдельно мне нужно иметь ловушку развертывания before_symlink. Как я могу это сделать ?

2 ответа2

5

Из вашего вопроса не было ясно, если вы уже использовали опцию git aws.push . Вы можете отослать сообщение в блоге AWSBlog о развертывании приложений на основе стойки в AWS Elastic Beanstalk. Подводя итог, вы можете сделать это в следующие простые шаги:

  1. eb init
  2. eb start
  3. git aws.push

Это, конечно, требует загрузки инструментов командной строки AWS Elastic Beanstalk.

К слову, AWS Elastic Beanstalk еще не имеет интеграции с ловушками развертывания Git, но это довольно просто, если вы уже используете CI Server, такой как Jenkins. Github может очень хорошо интегрироваться с большинством серверов CI. Вы можете добиться git push запуска git aws.push со своего CI-сервера, добавив новое задание Jenkins с помощью пользовательских команд оболочки. Вы также можете выполнить тестовый жгут перед тем, как выложить новую сборку. Jenkins или Travis CI сделают всю работу за вас!

Что касается выполнения задач типа before_symlink , то способ работы AWS Elastic Beanstalk отличается от традиционного развертывания Capistrano. Он объединяет весь ваш код в исполняемый архив и просто копирует его на узлы с балансировкой нагрузки. Для выполнения задач, подобных before_symlink , вы можете написать некоторые пользовательские файлы конфигурации и поместить их в .ebextensions в корневом пути вашего Git-репозитория. Я сделал это, добавив файл .ebextensions/symlink.config . Вот пример кода для символической ссылки вашего файла database.yml на сервере.

container_commands:
  symlink-db:
    command: ln -sf /var/app/shared/database.yml $EB_CONFIG_APP_ONDECK/config/database.yml

Обратите внимание, что я запускаю пользовательский AMI с каталогом /var/app/shared/ который, в противном случае, отсутствует при запуске ванильного контейнера Ruby. Кроме того, переменная среды $EB_CONFIG_APP_ONDECK содержит текущее имя каталога развертывания (обычно /var/app/ondeck), которое перемещается в /var/app/current после завершения развертывания и до перезапуска сервера Rails (Passenger), что делает его доступным для обслуживания запросов. Узнайте больше о настройке контейнеров AWS Elastic Beanstalk.

Надеюсь это поможет.

0

Мне удалось интегрировать тестовые сборки Travis CI с развертываниями Amazon Beanstalk. Для этого мне пришлось автоматизировать инструменты eb, потому что текущая версия 2.5.1 работает только в интерактивном режиме, поэтому я отредактировал код инструментов EB в некоторых файлах python, а затем создал файл .travis.yml с соответствующими инструкциями для разверните приложение в AWS Beanstalk.

Вот ссылка на мой блог, который дает полное описание процесса:

http://www.sysadminops.com/amazon-beanstalk-and-travis-ci-integration/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .