Публикация приложения в Elastic Beanstalk

от автора

Привет! image

Сегодня я расскажу как легко создавать приложения в Elastic Beanstalk и публиковать их прямо из Git!

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

Установили. В консоли у нас появится команда eb, с которой мы и начнём.

1. Создание приложения

Для начала создадим папку приложения и инициализируем Git репозиторий. Например:

$ mkdir ~/Work/testapp/ && cd ~/Work/testapp/ $ git init 

Создадим приложение Elastic Beanstalk

$ eb init 

Вопросы от EB

 To get your AWS Access Key ID and Secret Access Key,    visit "https://aws-portal.amazon.com/gp/aws/securityCredentials". Enter your AWS Access Key ID: AKIA**********7KAQ Enter your AWS Secret Access Key: puKfEWZwNr*******************wx7iwU/U6NnE Select an AWS Elastic Beanstalk service region. Available service regions are: 1) US East (Virginia) 2) US West (Oregon) 3) US West (North California) 4) EU West (Ireland) 5) Asia Pacific (Singapore) 6) Asia Pacific (Tokyo) 7) Asia Pacific (Sydney) 8) South America (Sao Paulo) Select:  (1 to 8): 1 Enter an AWS Elastic Beanstalk application name (auto-generated value is "testapp"): testapp Enter an AWS Elastic Beanstalk environment name (auto-generated value is "testapp-env"):  Select a solution stack. Available solution stacks are: 1) 32bit Amazon Linux running PHP 5.4 2) 64bit Amazon Linux running PHP 5.4 3) 32bit Amazon Linux running PHP 5.3 4) 64bit Amazon Linux running PHP 5.3 5) 64bit Windows Server 2008 R2 running IIS 7.5 6) 64bit Windows Server 2012 running IIS 8 7) 32bit Amazon Linux running Tomcat 7 8) 64bit Amazon Linux running Tomcat 7 9) 32bit Amazon Linux running Tomcat 6 10) 64bit Amazon Linux running Tomcat 6 11) 32bit Amazon Linux running Python 12) 64bit Amazon Linux running Python 13) 32bit Amazon Linux running Ruby 1.8.7 14) 64bit Amazon Linux running Ruby 1.8.7 15) 32bit Amazon Linux running Ruby 1.9.3 16) 64bit Amazon Linux running Ruby 1.9.3 Select:  (1 to 16): 2 Create an RDS DB Instance? [y/n]: n Updated AWS Credential file at "/home/korjik/.elasticbeanstalk/aws_credential_file".

Отлично! В консоли у нас появится приложение:
image

Давайте его запустим через CLI:

$ eb start 
Запуск приложения

 Starting application "testapp". Waiting for environment "testapp-env" to launch. 2012-12-21 11:36:54	INFO	createEnvironment is starting. 2012-12-21 11:37:00	INFO	Using elasticbeanstalk-us-east-1-8******7906425 as Amazon S3 storage bucket for environment data. 2012-12-21 11:37:35	INFO	Created load balancer named: awseb-e-m-AWSEBLoa-3Y756XH4GS6C 2012-12-21 11:37:51	INFO	Created security group named: awseb-e-mcmpmiq7vv-stack-AWSEBSecurityGroup-1P8Y0FB06SVMD 2012-12-21 11:37:57	INFO	Created Auto Scaling launch configuration named: awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingLaunchConfiguration-1PPFVPGQK4PV8 2012-12-21 11:39:09	INFO	Waiting for EC2 instances to launch. This may take a few minutes. 2012-12-21 11:39:09	INFO	Created Auto Scaling group named: awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingGroup-1WLKAEZBZ8ZGT 2012-12-21 11:40:45	INFO	Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:8******7906425:scalingPolicy:8d0accbb-fa54-483a-a3c0-8b91921a738e:autoScalingGroupName/awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingGroup-1WLKAEZBZ8ZGT:policyName/awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingScaleDownPolicy-184TBBCOHLRB3 2012-12-21 11:40:50	INFO	Created CloudWatch alarm named: awseb-e-mcmpmiq7vv-stack-AWSEBCloudwatchAlarmLow-WZWD04T7WB4O 2012-12-21 11:40:53	INFO	Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:8******7906425:scalingPolicy:acc43498-d4ce-4421-896b-84ea7eb05fb2:autoScalingGroupName/awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingGroup-1WLKAEZBZ8ZGT:policyName/awseb-e-mcmpmiq7vv-stack-AWSEBAutoScalingScaleUpPolicy-1GZEQ8O807OFD 2012-12-21 11:40:56	INFO	Created CloudWatch alarm named: awseb-e-mcmpmiq7vv-stack-AWSEBCloudwatchAlarmHigh-XLWNREY9ZVKY Application is available at "testapp-env-p3n7aesmip.elasticbeanstalk.com". 

Далее установим скрипты для Git в репозиртори:

$ cp -r ~/AWS_CLI_TOOLS/AWS-ElasticBeanstalk-CLI-2.3/AWSDevTools/Linux/* . $ ./AWSDevTools-RepositorySetup.sh 

В папке .git появились нужные файлы:

$ ll .git/AWSDevTools/ total 24 drwxr-xr-x 3 korjik korjik 4096 Dec 21 12:27 . drwxrwxr-x 8 korjik korjik 4096 Dec 21 12:27 .. drwxr-xr-x 2 korjik korjik 4096 Dec 21 12:27 aws -rwxr-xr-x 1 korjik korjik 4372 Dec 21 12:27 aws.elasticbeanstalk.config -rwxr-xr-x 1 korjik korjik 2798 Dec 21 12:27 aws.elasticbeanstalk.push 

2. Деплой приложения

Итак, наше приложение готово, его нужно задеплоить.

Создадим самое простое что пришло в голову:

$ echo "<?php phpinfo(); ?>" > index.php 

Добавим и закоммитим в git:

$ git add index.php $ git commit -m "PHP INFO" 

Ну и собственно деплой:

$ git aws.push --environment "testapp-env" Counting objects: 3, done. Writing objects: 100% (3/3), 240 bytes, done. Total 3 (delta 0), reused 0 (delta 0) remote:  To https://AKIAII*********7KAQ:20121221T103218Z8abd2f8768ce64d97f85dd0902b5f8efadcf8148a227924464fe8e6fc41998a1@git.elasticbeanstalk.us-east-1.amazonaws.com/v1/repos/74657374617070/commitid/39383466343734663539393639396130316535336661353933656461383661333461353766636632/environment/746573746170702d656e76  + 755988e...984f474 HEAD -> master (forced update) 

Проверим, статус:

$ eb status URL	: testapp-env-yp333cyrp2.elasticbeanstalk.com Status	: Updating Health	: Grey 

Когда статус будет Ready проверяем!

Ну вот, приложение задеплоено и работает:
image

Собственно говоря, всё крайне просто. Вы легко можете создавать ветки приложения с помощью eb btanch и деплоить из Git как угодно и куда угодно. В статье адрес приложения менялся — это были разные тесты. При деплое адрес не меняется.

А вообще, очень рекомендую почитать про Elastic Beanstalk.

Используете ли вы EB? Что-то интересное расскажете?

ссылка на оригинал статьи http://habrahabr.ru/company/epam_systems/blog/163489/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *