Дякую за відгуки, які я отримав щодо інструмента 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 і перевірити, чи працює вона.
Ось команда 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.
[
[
[
Hacker Noon — це те, як хакери починають свої післяобідні години. Ми є частиною @AMI родини. Зараз ми приймаємо подання і раді обговорити рекламні та спонсорські можливості.
Якщо вам сподобалась ця історія, ми рекомендуємо вам ознайомитись з нашими останніми технічними історіями та трендовими технічними історіями. До наступного разу не приймайте реальність світу за належне!
Перекладено з: Jack and the Elastic Beanstalk —Easy Way to Manage AWS Elastic Beanstalk Environments