Що таке juju

Щоб зрозуміти Juju потрібно розібратися з деякими термінами, які нерозривно пов'язані з juju.

Терміни і поняття.

Убунту на мові народу зулу і народу коса означає "людяність". Це південноафриканське напрямок етики і гуманістичної філософії, особливу увагу приділяє поняттям вірності і лояльності у відносинах між людьми. Приблизна тлумачення слова Убунту - людяність по відношенню до інших. Інший можливий варіант перекладу - віра у вселенські узи спільності, що зв'язують все людство.

Архієпископ Десмонд Туту так описав визначення "Убунту":
Людина з Убунту відкритий і доступний для інших, приймає інших людей, не бачить для себе небезпеки в тому, що інші талановиті й добрі, оскільки він твердо впевнений у собі, розуміючи, що є частиною більшого цілого, і, навпаки, людина з Убунту пригнічений , коли інших ображають або принижують, катують або пригнічують.

DevOps - це ідея, що спільні робочі відносини між розробниками та ІТ підрозділом дозволяють швидше виконати заплановану роботу, одночасно збільшуючи надійність, стабільність, стійкість і безпеку production середовища.

Що таке juju

Оркестровка (Orchestration) - автоматичне розміщення, координація і управління складними комп'ютерними системами і службами.
Оркестровка описує те, як сервіси повинні взаємодіяти між собою, використовуючи для цього обмін повідомленнями, включаючи бізнес-логіку і послідовність дій. Оркестровка підпорядкована якомусь одному з учасників бізнес-процесу. В сервіс-орієнтованої архітектури оркестровка сервісів реалізується відповідно до стандарту Business Process Execution Language (WS-BPEL).

Juju так само корінням сягає в африканські вірування про духів. Juju - це переконаність в існуванні невидимих ​​істот, що володіють магічною силою, які можуть бути використані, щоб допомогти людям в їх повсякденному житті.

Використання juju.

Juju is DevOps Distilled ™. Juju - Найчистіше ДевОпс. Завдяки використанню charms, juju дозволяє команді девопсов легко створювати необхідні конфігурації і з'єднувати їх в немислимі конструкції. Розгортання charms ніж те схоже на установку пакета в Ubuntu. Ви просто встановлюєте, легко видаляєте.

Juju це досвід DevOps спільноти. Як розгорнути потрібне вам додаток, ви завжди знайдете в juju. Juju забезпечує прямий і вільний доступ до колекцій charms, які створюються, тестуються спільнотою DevOps.

Juju забезпечує оркестровку служб. Juju фокусується на управлінні службою, пропонуючи єдине рішення, що допомагає легко конфігурувати сервера або хмарні екземпляри під потреби цієї служби. Charms розроблені, відтестували щоб надійно працювати на ваших власних потужностях або в EC2 сумісних хмарах.

Juju розумний. Juju надає повторне використання обладнання під сервіс і чіткі інтерфейси, які дозволяють швидко, органічно налаштувати і масштабувати ваше рішення.

Juju це легко. Немає обходимости вивчати domain specific language (DSL), щоб використовувати juju або створювати charms. Ви можете запустити ваш сервіс за допомогою готового charm буквально за хвилини.

Протягом довгого часу, розгортання Linux серверів рухалося в сторону спільної роботи декількох фізичних машин.

У деяких випадках, різні сервери запускали свої відмінні набори додатків, дозволяючи організовувати або навпаки ізолювати і резервувати ресурси.

В інших ситуаціях, сервера створювалися з дуже схожими конфігураціями, так щоб вся система ставала більш масштабується, розподіляючи навантаження між екземплярами. Вся система так само ставала більш надійною, тому що вихід з ладу будь-якого примірника не впливав на весь кластер. Системні адміністратори ставали маестро, органічно керуючи оркестром зі служб і серверів.

Але все одно, багато сил витрачається на управління конфігураціями програм на окремих машинах. Менеджери пакетів, dbus і dconf тому приклади.

Інша розпорошення сил виходило з проблеми управління декількома машинами як єдиним цілим, хоча механізм масштабування спирається на управління службами по окремості.

Іншими словами, адміністратору надають можливість одночасно налаштувати конфігурацію кількох екземплярів служб, але не допомагають у налаштуванні спільну роботу цих служб з іншими інструментами.

Це тонка різниця може стати ключовим фактором, який дозволить всім сторонам (системні адміністратори, розробники програмного забезпечення, постачальники та інтегратори ПО) спільно брати участь у розгортанні, обслуговуванні, розширенні таких розподілених конфігурацій ПО.

Canonical створила juju якраз для таких цілей. Juju прагне стати тим інструментом, яким легко спільно управляти розгортанням служб. Juju - це спроба створити інструмент "apt для служб".

Поширені запитання.

Juju готова до виробництва?
Станом на сьогоднішній стабільний, долгоподдержіваемий реліз Ubuntu 12.04 - juju вважається бета. Офіційно, juju не рекомендується для використання в продакшн. Однак, досвідченим користувачам пропонується оцінити можливості juju, почати вивчати juju, писати свої charms.

Якою мовою розроблений juju?
Сам juju написаний на Python. Проте, створити charm для juju можна на будь-який мові програмування. Турботу про знаходження і виклику потрібних файлів juju бере на себе.

Juju використовує переднастроєні Amazon Machine Images (AMI)?
Ні, juju використовує звичайні образи операційної системи Ubuntu. Всі необхідні компоненти встановлюються в режимі реального часу. Якщо вам потрібні образи AMI, то ви можете вказати це у файлі environments.yaml.

Можна розгорнути кілька служб (сервісів) на одній машині?
В даний час кожна служба розгортається на окрему машину, що допомагає створювати зв'язку з іншими службами, що працюють на різних вузлах. Це було зроблено для того, щоб отримати робочий juju якомога швидше. Juju в майбутньому буде підтримувати кілька сервісів на одній машині.

Чи можна передавати параметри juju charms?
Така "настраиваемость" скоро з'явиться в juju. Як тільки це буде реалізовано, ви зможете використовувати juju set service key = value. Це дозволить динамічно управляти поведінкою charm.

Можна перемикатися між оточеннями?
У вас може бути безліч оточень (environments) в environments.yaml і одне з них вказано як дефолтний: default: default-env-name. Можна вказати так само через змінну оточення JUJU_ENV. Так само у juju є параметр -e через який можна вказати необхідну оточення.

Juju в дії.