Jack та Elastic Beanstalk — Простий спосіб керувати середовищами AWS Elastic Beanstalk

pic

Дякую за відгуки, які я отримав щодо інструмента Jack:

Jack дійсно крутий та корисний, а також дуже спрощує початок роботи з EB. Дякую за оновлення збірки та детальні інструкції, мені знадобилося менше ніж 10 хвилин, щоб налаштувати все спочатку — я вражений, як це було просто. — Бенжамін Кантер з Tuli

Документацію до інструмента можна знайти на jack-eb.com

Вступ

Близько двох років тому я почав більше використовувати AWS ElasticBeanstalk. Це не випадковість, оскільки саме тоді AWS додав підтримку Docker-контейнерів для Elastic Beanstalk.

По-перше, Elastic Beanstalk — це PaaS сервіс AWS, який пропонує простий у використанні інструмент для розгортання та масштабування веб-додатків. Це своєрідна версія AWS на кшталт Heroku, принаймні, вони працюють в одному сегменті. Як тільки код завантажено в Elastic Beanstalk, система автоматично займається розподілом ресурсів, балансуванням навантаження, автоскейлінгом і моніторингом здоров’я додатка. Водночас розробники зберігають контроль над базовими AWS ресурсами, які підтримують їхні додатки.

Як і з більшістю PaaS сервісів, таких як Elastic Beanstalk, зазвичай існує офіційно підтримуваний список мов. Elastic Beanstalk офіційно підтримує: Go, Java SE, Java з Tomcat, .NET на Windows Server з IIS, Node.js, PHP, Python, Ruby.

Але завдяки підтримці Docker, Elastic Beanstalk надає розробникам можливість використовувати будь-яку мову програмування та сервер додатків, які вони обирають для свого сервісу. Розробники можуть налаштовувати Docker-контейнери і встановлювати додаткові пакети та бібліотеки, не змінюючи сам сервер. Elastic Beanstalk автоматично займається розгортанням Docker-контейнера.

Як і більшість сервісів AWS, Elastic Beanstalk чудово працює, але вимагає наявності інструментів для пришвидшення робочого процесу. Цей пост розглядає інструмент Jack, який можна використовувати для швидкого створення та керування середовищами Elastic Beanstalk.

Jack і Elastic Beanstalk

Я розгляну кілька прикладів можливостей інструмента Jack. Більш детальну інформацію можна знайти в README проекту на GitHub.

Створення середовищ

По-перше, дуже легко створювати нове середовище EB за допомогою Jack. Зазвичай, при використанні EB, спочатку потрібно створити "EB Application", а потім створити "EB Environment". Jack автоматично створює додаток за вас під час створення середовища. Ось приклад того, як це працює.

$ git clone https://github.com/tongueroo/sinatra  
$ cd sinatra  
$ jack create hi-web-stag-1  
Running: eb init -r us-east-1 -p "64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1" "hi"Running: eb create --sample --nohang --keyname "default" --platform "64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1" --cname hi-web-stag-1 hi-web-stag-1  
Environment details for: hi-web-stag-1  
 Application name: hi  
 Region: us-east-1  
 Deployed Version: Sample Application  
 Environment ID: e-3kqcygpdmb  
 Platform: 64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1  
 Tier: WebServer-Standard  
 CNAME: hi-web-stag-1.us-east-1.elasticbeanstalk.com  
 Updated: 2016-11-30 04:04:56.608000+00:00  
Alert: An update to the EB CLI is available. Run "pip install --upgrade awsebcli" to get the latest version.  
$ jack deploy # to deploy fresh code now

Застосунок hi автоматично створюється, а також створюється середовище hi-web-stag-1.
Зазначений додаток за замовчуванням для EB (Elastic Beanstalk) спочатку завантажується до середовища, щоб ви могли перевірити, чи все працює, перш ніж додавати власний код. Ви можете отримати DNS-адресу зі сторінки EB Console і перевірити, чи працює вона.

pic

Ось команда curl, щоб перевірити, чи повертає додаток відповідь 200:

$ curl -svo /dev/null hi-web-stag-1.us-east-1.elasticbeanstalk.com 2>&1 | grep '< HTTP'  
< HTTP/1.1 200 OK  
$

Створення кількох середовищ EB

Створення одного середовища та додавання додатка — це не складно. Та ось що цікаво: Jack може завантажити конфігурацію існуючого середовища, і ви можете використовувати її для швидкого відтворення нових середовищ. EB має функцію клонування, яка також виконує це, але якщо у вас є трохи різні конфігурації між середовищами, ви можете швидко редагувати завантажену конфігурацію та створити нове середовище за допомогою текстового редактора. Я виявив, що цей процес може бути швидшим.

Оскільки Jack завантажує всю конфігурацію, він також дозволяє "перейменовувати" додаток EB. Функція клонування в EB зрозуміло працює лише в межах одного додатка. За допомогою Jack ви можете завантажити конфігурацію з середовища будь-якого додатка та повністю відтворити його в новому додатку. Ось приклад:

$ jack get hi-web-stag-1 -c hiworld-web-stag-1 # saves jack/cfg/hiworld-web-stag-1.cfg.yml  
$ jack create hiworld-web-stag-1 # creates an hiworld app using jack/cfg/hiworld-web-stag-1.cfg.yml  
$ jack deploy # deploys fresh code

Порівняння кількох середовищ EB

Інший трюк, який можна зробити з Jack, — це швидко порівняти різниці між середовищами EB. Ви можете обробити кілька середовищ, завантажити всі їхні конфігурації та швидко порівняти їхні відмінності. Припустимо, ви створили два середовища для стадії: hi-web-stag-1 та hi-web-stag-2. Тепер ви хочете порівняти ці два середовища на наявність відмінностей. Це може статися, якщо хтось оновив одне з середовищ через EB Console. І зазвичай це повідомляється як "одне з середовищ не працює". Ось приклад швидкого порівняння:

$ for i in {1..2} ; do jack get hi-web-stag-$i ; done  
$ colordiff jack/cfg/hi-web-stag-{1,2}.cfg.yml

Якщо у вас є три середовища стадії:

$ for i in {1..3} ; do jack get hi-web-stag-$i ; done  
$ colordiff jack/cfg/hi-web-stag-{1,2}.cfg.yml  
$ colordiff jack/cfg/hi-web-stag-{1,3}.cfg.yml  
$ colordiff jack/cfg/hi-web-stag-{2,3}.cfg.yml

Це дуже швидкий спосіб перевірити відмінності між середовищами і допомагає при налагодженні, коли хтось каже, що "середовище не працює".

Попередній перегляд змін

Інша корисна функція Jack, яку варто відзначити, — це те, що вона робить порівняння конфігурацій перед завантаженням, щоб переконатися, що ви випадково не перезаписуєте раніше зроблені зміни. Це дійсно чудово, що Elastic Beanstalk дозволяє розробникам використовувати графічний інтерфейс EB Console для оновлення середовища. Проте це іноді призводить до того, що один з учасників команди робить зміни, про які інші не знають. Для цього Jack завантажує поточну конфігурацію EB, а потім порівнює її з конфігурацією, яку ви збираєтесь завантажити, показуючи різницю. Це дуже корисно, щоб уникнути випадкового видалення змін конфігурації.

Ось приклад, коли тип інстанції змінюється з t2.micro на t2.small:

$ jack apply hi-web-stag-1  
Downloading config file...

Запуск: eb config save --cfg current-2016-11-29_22-19-27 hi-web-stag-1  
Конфігурацію збережено за адресою: /Users/tung/src/tongueroo/sinatra/.elasticbeanstalk/saved_configs/current-2016-11-29_22-19-27.cfg.yml  
Порівняння ./.elasticbeanstalk/saved_configs/current-2016-11-29_22-19-27.cfg.yml та jack/cfg/hi-web-stag-1.cfg.yml  
11c11  
< InstanceType: t2.micro  
---  
> InstanceType: t2.small  
Ви впевнені, що хочете оновити середовище з новою конфігурацією?  
Якщо різниця не є очікуваною, вам слід сказати "ні".  
Порожній рядок означає, що різниці немає.  
Якщо ви хочете завантажити конфігурацію зі середовища і  
перезаписати вашу jack/cfg/hi-web-stag-1.cfg.yml, використовуйте цю команду:  
$ jack get hi-web-stag-1  
$ jack get help # для отримання додаткової інформації  
так/ні? [ні] так  
Копіювання jack/cfg/hi-web-stag-1.cfg.yml до ./.elasticbeanstalk/saved_configs/hi-web-stag-1-2016-11-29_22-19-27.cfg.yml для завантаження  
Запуск: eb config put hi-web-stag-1-2016-11-29_22-19-27  
Оновлення середовища hi-web-stag-1 за шаблоном hi-web-stag-1-2016-11-29_22-19-27  
$

Підсумки

Jack — це дуже простий інструмент, який надає кілька корисних додаткових команд поверх стандартної команди eb, таких як jack create, jack get і jack apply. Сподіваюся, що інші також знайдуть цей інструмент корисним!

Дякую, що дочитали до кінця. Якщо цей пост був корисним, я буду дуже вдячний, якщо ви порекомендуєте його (натиснувши кнопку "clap"), щоб інші також могли його знайти! Також підключайтеся до мене на LinkedIn.

[pic

[pic

[pic

Hacker Noon — це те, як хакери починають свої післяобідні години. Ми є частиною @AMI родини. Зараз ми приймаємо подання і раді обговорити рекламні та спонсорські можливості.
Якщо вам сподобалась ця історія, ми рекомендуємо вам ознайомитись з нашими останніми технічними історіями та трендовими технічними історіями. До наступного разу не приймайте реальність світу за належне!

pic

Перекладено з: Jack and the Elastic Beanstalk —Easy Way to Manage AWS Elastic Beanstalk Environments

Leave a Reply

Your email address will not be published. Required fields are marked *