Зв'язок між Vagrant, Docker, Chef та OpenStack (або подібними продуктами)?


56

Я веб-розробник, але мене також цікавлять кілька адміністративних завдань. Отже, новий крок від чистої адміністрації до розробників стає для мене корисним.

У всякому разі, у мене є деякі проблеми, щоб поставити кілька речей у стосунки. Можливо, їх немає, тому я хотів попросити допомоги, щоб уточнити.

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

  • Вагрант: Наскільки я розумію, це автоматизувати створення та управління віртуальними машинами: Налаштування їх, запуск та зупинка. Це можна зробити за допомогою локального VM або дистанційного, наприклад, на хмарній платформі.
  • Docker: "Легка VM", заснована на декількох концепціях ядра Linux, які можна використовувати для запуску процесів ізольовано, наприклад, у спільному веб-хостингу.
  • Шеф-кухар: інструмент для налаштування та налаштування операційної системи, наприклад, всередині VM.
  • OpenStack: інструмент, який дозволяє створити власну приватну хмару, отже, порівнянний з чимось таким, як AWS.

Питання №1: Чи правильні мої пояснення, чи я помиляюся з деякими (або всіма) цими споживаннями?

Питання №2: Як я змішу всі ці інструменти? Чи має це сенс?

У моїй уяві та з моєї точки зору, ви могли б піти і

  • використовуйте OpenStack для створення власної хмари,
  • використовувати Vagrant для управління VM, запущеними в хмарі,
  • використовуйте шеф-кухаря для налаштування цих віз
  • і нарешті використовувати Docker для запуску процесів всередині віртуальних машин.

Це правильно? І якщо так, чи можете ви дати мені поради, як почати використовувати все це (це одночасно дуже багато, і я ще не знаю, з чого почати)?


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

Відповіді:


54

Давайте скористаємося їх відповідними веб-сторінками, щоб дізнатися, про що всі ці проекти. Я зміню порядок, у якому ви вказали:

  • Шеф-кухар : шеф-кухар - це платформа автоматизації, яка перетворює інфраструктуру в код.

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

  • Vagrant : Створення та налаштування легкої, відтворюваної та портативної середовищ розробки.

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

  • Docker : проект з відкритим кодом для упаковки, доставки та запуску будь-якої програми у вигляді легкого контейнера

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

  • OpenStack : програмне забезпечення з відкритим кодом для створення приватних та загальнодоступних хмар.

    Хоча це правда, що OpenStack можна розгорнути на одній машині , таке розгортання суто для підтвердження концепції, ймовірно, не дуже функціональне через обмеження ресурсів.

    Основна мета для установки OpenStack - це багатовузлові середовища з голими металами, де різні компоненти можуть бути використані у спеціальному обладнання для досягнення кращих результатів.

    Основна функціональність OpenStack - це підтримка багатьох технологій віртуалізації, від повністю віртуалізованих (VirtualBox, VMWare), до паравіртуалізованих (KVM / Qemu), а також контейнерів (LXC) і навіть користувальницького режиму Linux (UML) .

Я намагався представити ці продукти як компоненти певної архітектури. З моєї точки зору, є сенс спочатку мати змогу визначити свої потреби щодо середовища, яке вам потрібно (шеф-кухар, лялька, відповідь, ...), а потім мати змогу розгорнути це в контрольованому вигляді (бродячий, докер , ...) і, нарешті, масштабуйте його до глобального розміру, якщо це потрібно.

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

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


є Chef і Puppet тим же інструментом? Я маю на увазі, що вони рівноцінні? Якщо ви хочете запустити це на хості Windows 10, які інструменти ви б використали?
ReynierPM

Лялька - це подібний інструмент до шеф-кухаря. Не
знаєте,

3

Я думаю, що з-за передумови розробника зробить стати «девепсом» насправді більш складним, вашому питанню майже три роки, тому було б цікаво почути, як ви знаходите подорож, я дам відповідь з точки зору системний адміністратор щодо заявок, про які ви згадали вище, і, сподіваємось, він прожене трохи світла, або дасть нетехнічну перспективу, яка допоможе пояснити, чому людина (адміністратор чи розробник) почне розглядати саме те, що ви запитали, наприклад, від devops з точки зору, яка залежність між x, y, z наскільки ці інструменти перевищують суму їх частин?

Насправді я думаю, що тут адмініструють системні адміністратори, більшість застосунків, які ви згадуєте у своєму питанні, вирішують проблеми адміністратора і тим самим забезпечують більш абстрактне середовище центру обробки даних, а це, в свою чергу, більш програмоване для розробників та нових " стратегія девепса (читай стратегію / команду, девепс - це не людина). Отже, які стосунки з додатками, які ви згадуєте? як це забезпечує цілісний підхід до ІТ-сервісу?

OpenStack: інструмент, який дозволяє створити власну приватну хмару, отже, порівнянний з чимось таким, як AWS

Ось що це таке, але що це робить? - операційною системою, яку найчастіше назвали DOS, вона керувала вашим диском, абстрагуючи BIOS, OpenStack керує вашим центром обробки даних та абстрагує вашу інфраструктуру (IaaS - це Jargon для операційної системи центрів обробки даних). Тепер ваш центр обробки даних має API, синтаксис команди і графічний інтерфейс, OpenStack може управляти гіпервізора, комутатори, маршрутизатори, міжмережеві екрани, мережі зберігання даних, балансування навантаження, Docker хости і т.д .. OpenStack використовує ваше обладнання виробництва «плагін» або конкретну функцію може існувати виключно в програмному забезпеченні, оскільки програмне забезпечення щось визначаєабо віртуалізація мережевих функцій. Крім цього, OpenStack та всі інші хмари можуть організовувати власну інфраструктуру, читаючи сценарії, які ви кидаєте в двигун оркестрації, або спрацьовуєте на основі правил (масштабування, зменшення масштабів тощо). Отже, opentack - це гігантський шар абстракції, наприклад, мені все одно, який перемикач у мене є, дайте мені мережу з цією командою, або, побудуйте мені складну збалансовану завантаженість, HA, загальнодоступне, автоматичне масштабування, зареєстроване ім'я домену, зберігання додається річ - з цим сценарієм я знайшов в Інтернеті.

Docker: "Легка VM", заснована на декількох концепціях ядра Linux, які можна використовувати для запуску процесів ізольовано, наприклад, у спільному веб-хостингу.

Докер - це ще один шар абстракції, і як хмара - це руйнівна технологія, вона змінює галузь, оскільки вона вирішує багато оперативних «проблем», таких як залежність від програмного забезпечення, оновлення, ізоляція даних і суцільна портативність. Java стала популярною завдяки переносу вихідного коду, про який розробникам не доводилося думати, а запущений JVM означав, що їхній код повинен працювати на кавовій машині до тих пір, поки він підтримує Java. Docker вирішує подібну проблему, для запуску мого додатка вам потрібен хост докер, а не, вам потрібна ця версія python, це ядро, цей Linux-дистрибутив і так далі, додаток як і раніше має ті залежності, але основний хост не хвилює, і адміністратору все одно, що ви робите в ізольованому контейнері ( до точки). Docker змінює парадигму розробки та операцій, трактуючи всю операційну систему та її служби, як двійкові. ми можемо отримати їх із сховища , їх версію, змінити, запустити з параметрами тощо.

Шеф-кухар: інструмент для налаштування та налаштування операційної системи, наприклад, всередині VM.

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

Вагрант: Наскільки я розумію, це автоматизувати створення та управління віртуальними машинами: Налаштування їх, запуск та зупинка. Це можна зробити за допомогою локального VM або дистанційного, наприклад, на хмарній платформі.

Це не дивно у списку згаданих вами додатків, Vagrant - це інструмент для розробників і іграшка для адміністраторів, ви можете швидко створити середовище розробки з бродяжником, наприклад, я хочу розробити додаток для Android, захопити IDE з бродячий, я думаю, що незабаром його наздожене Докер.

ви можете дати мені пораду, як почати використовувати все це (це одночасно дуже багато, і я ще не знаю, з чого почати)?

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


0

Щойно я закінчив проект розгортання OpenStack, який використовує сервер Chef всередині екземпляра Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Основна проблема з цим способом - отримання екземпляра Vagrant одного і того ж IP кожного разу, коли ви хочете керувати вузлами. Якщо ви робите статичну адресацію, вона працює добре. Робити це через VPN - це менш ніж ідеально.


0

Зрештою, я використовую лише комбінацію Вагранта та Докера.

Я використовую бродячий, щоб забезпечити машини (є додаткові постачальники хмар, але я використовую вбудований VirtualBox. Оскільки я використовую такий підхід, зовнішня мережа та зберігання є значною мірою вручну, але якщо ви використовуєте щось на кшталт плагіну vagrant-aws, ви можете скажіть AWS надати необхідні вам деталі.

Сценарій забезпечення я використовую вказівки на захищене місце, яке містить сертифікат CA та ключі, які використовуються для підпису CSR разом із docker swarm joinмаркерами. Крім того, я встановлюю докер-движок і налаштовую його на приєднання до рою (ініціалізую, якщо такого немає).

Після того, як це буде вирішено, я просто роблю docker stack deployз моєї локальної машини або будую коробку для розгортання стека з усім необхідним.

У моєму випадку я просто відмовився від шеф-кухаря на користь простого використання простих сценаріїв після встановлення, які виконуються yumабо apt-getвикористовуються як мої сценарії забезпечення.

Я також використовую плагін -триггер для додавання додаткового сценарію перед знищенням (у моєму випадку залишити рой).

Приємною частиною централізації за допомогою Vagrant є те, що ти можеш тиражувати середовище на іншій системі або на одному комп’ютері, для розробки просто потрібно додати або змінити providerрозділ. Зауважте, я не пройшов налаштування OpenStack на одному комп’ютері для управління VirtualBox.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.