Які переваги роботи шеф-кухаря-сервера замість шеф-кухаря-соло?


33

Я дивлюся на автоматизовані рішення для розгортання для своєї команди і останні кілька днів граю з Chef. Мені вдалося отримати простий веб-додаток на базі Red Hat VM за допомогою шеф-кухаря.

Наша кінцева мета - використовувати Chef (або іншу систему) для автоматичного розгортання топологій додатків у хмару, коли ми запускаємо збірки. Наш процес в основному протікав би так:

  1. Наш код веб-додатків, залежності та кулінарні книги кухарів зберігаються в SCM
  2. Збірка виконується і створює єдиний пакет для придбання зображень і перевірки проти
  3. Потім двигун збирання розгортає нові зображення хмари, на яких працює клієнт-шеф-кухар, щоб встановити пакунки.
  4. Зображення отримують кулінарні книги від SCM або сервера шеф-кухаря та встановлюють усе, щоб встати та працювати

Які переваги та / або випадки використання для запуску Chef Server?

Чи є якісь переваги мати сервер шеф-кухарів і придбати кулінарні книги від SCM порівняно з використанням шеф-кухаря-соло та створення сценарію, який витягне кулінарні книги з SCM?

Відповіді:


67

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

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

Якщо ви розгортаєте шеф-кухаря, використовуйте cronjob з rsync, 'git pull' чи іншим механізмом передачі файлів ідентичності, щоб підтримувати повну копію шеф-кухаря сховища на кожному вузлі. Cronjob повинен легко налаштовуватися так, щоб (a) не запускався взагалі і (b) запускався, але без синхронізації локального сховища. Додайте у своє сховище шеф-кухаря вузли / каталогі з файлом json для кожного вузла. Ваш cronjob може бути настільки витонченим, як ви хочете, з точки зору визначення правильного вузла (хоча я рекомендую просто $ (ім'я хоста -s) .json. Ви також можете створити обліковий запис opscode і налаштувати клієнта з розміщеним шеф-кухарем, якщо для немає іншої причини, крім того, щоб мати можливість використовувати нож для завантаження кулінарних книг спільноти та створення скелетів.

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

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

Крім того, за допомогою шеф-кухаря ви можете зберігати всі ролі ваших вузлів, спеціальні атрибути та списки запуску як файли node.json у вашому головному сховищі шеф-кухаря. За допомогою шеф-кухаря-сервера ролі та списки списків змінюються на ходу за допомогою API. За допомогою шеф-кухаря ви можете відстежувати цю інформацію під контролем редагування. Тут чітко видно конфлікт між статичним та динамічним середовищем. Якщо ваш список вузлів (незалежно від того, як довго він тривав) не змінюється часто, то ці дані під контролем редагування дуже корисні. З іншого боку, якщо ви часто нерестуєте нові вузли та знищуєте старі (більше ніколи не побачите їх ім’я хоста чи fqdn), тримати це все під контролем редагування - це лише непотрібні клопоти, а наявність API для внесення змін дуже зручно. Chef-сервер також має цілі функції, спрямовані на керування динамічними хмарними середовищами, як-от параметр імені на "ножовому завантажувальному", який дозволяє замінити fqdn як спосіб за замовчуванням визначити вузол. Але в статичному середовищі ці особливості мають обмежену цінність, особливо порівняно з тим, що вони мають ролі та списки списків у контролі редагування з усім іншим.

Нарешті, середовища для тестування рецептів можуть бути налаштовані практично без зайвих робіт. Ви можете відключити роботу cronjobs на сервері та вносити зміни безпосередньо до свого локального сховища. Ви можете перевірити зміни, запустивши шеф-кухар-соло, і ви точно побачите, як сервер налаштує себе у виробництві. Після того, як все буде перевірено, ви можете зареєструвати зміни та знову ввімкнути локальну роботу. При написанні рецептів ви не зможете використовувати API "Пошук", тобто якщо ви хочете писати динамічні рецепти (наприклад, балансири), вам доведеться зламати це обмеження, збираючи дані з файлів json у ваші вузли / каталог, що, ймовірно, буде менш зручним і не матиме деяких даних, доступних у повному CMDB. Ще раз, більш динамічні середовища сприятимуть підходу, керованого базами даних, менш динамічне середовище буде добре з файлами json на локальному диску. У серверному середовищі, де запуск шеф-кухаря повинен здійснювати дзвінки API до центральної бази даних, ви будете залежати від керування всіма тестовими середовищами в цій базі даних.

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

Це основні переваги шеф-кухаря. Є деякі інші, наприклад, не потрібно адмініструвати сервер або платити за розміщеного шеф-кухаря, але це відносно незначні проблеми.

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


Як би ви зберігали / поширювали конфіденційні дані (тобто приватні ключі / паролі) за допомогою шеф-кухаря? Як я можу відстежувати його з контролем редагування, не зберігаючи його в простому тексті?
Лімбо Пен

@LimboPeng Ви можете зберігати зашифровані пакети даних у репо-шеф-кухарі. Ви повинні зберігати ключ шифрування зовні.
Віллі Уілер

27

Розкриття інформації: Я працюю на Opscode.

Основна перевага Chef Server над Solo - це можливість використовувати пошук у вашій інфраструктурі. Класичний приклад - балансир завантаження з веб-серверами. Балансир навантаження може автоматично оновлювати конфігурацію, оскільки веб-сервери додаються та видаляються в інфраструктуру, просто здійснюючи пошук у них. Solo - це лише те, що одиночні машини, в той час як Chef Server дає можливість запитувати такі речі, як "всі машини з більш ніж 4 гігами оперативної пам'яті" або "майстер бази даних".

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


1
Дякую, мрій, ця інформація допомагає ТОН. Чи знаєте ви, як можна було б сприйняти філософії DevOps при використанні сервера Chef? Що я маю на увазі під цим, - це те, що всі наші кулінарні книги живуть в SCM. Чи є простий спосіб змусити сервер шеф-кухаря отримати оновлені кулінарні книги, коли ми постачаємо новий код?
linusthe3-го

2
@ strife25 Ви обов'язково повинні мати свої кулінарні книги у системі контролю версій. Якщо ви не дотримуєтесь жодної, Opscode рекомендує Git, оскільки легко працювати з гілками та скелями для розподілених команд. Ви можете написати гачок після завершення, який завантажує кулінарні книги на сервер шеф-кухаря. Ви не просто клонуєте кулінарні книги на сервері шеф-кухаря, оскільки ви завантажуєте їх через API, і це дуже багато за призначенням.
jtimberman

1

chef-сервер керує кулінарними книгами та конфігураційними даними для ваших вузлів.

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

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

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