Кращі практики / питання шеф-кухаря


48

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

Це мої запитання:

  • Чи краще встановлювати ролі в Ruby DSL, JSON або з консолі управління? Чому існує кілька способів зробити те саме?
  • Чи можете ви організувати кулінарні книги в підкаталоги? Наприклад: у нас є власне програмне забезпечення, для якого я б хотів написати кулінарну книгу і дотримуватися цього: chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook, це буде хорошою практикою?
  • Чи потрібно створювати кулінарну книжку для кожного типу ролей, яка визначає, що вона робить? Чи є у мене ці кулінарні книги, що включають інші кулінарні книги (тобто кулінарна книга для моєї ролі веб-сервера включає кухарську книгу apache). Я не впевнений, як обробляються взаємозалежності кулінарної книги та успадкування.
  • Чи є щось на зразок класичного класифікатора зовнішнього вузла Ляльки, щоб вузли автоматично визначали їх ролі?
  • Здається, ви можете налаштувати речі ножем або в консолі управління або редагувати файли JSON? Це дуже заплутано для мене, чому існує так багато способів робити речі, це паралізує! Чи є причина використовувати те чи інше? З маріонетки здається, що було б легко випадково неправильно налаштувати щось із цими інструментами (тобто - щось залишити)
  • Як я можу автоматично забезпечити вузли шеф-кухарем у своєму клавіші розробників? За допомогою лялечки я запускаю VM, який підключається до лялькового майстра, і починає маріонетковий запуск і встановлює себе (роль визначається зовнішнім класифікатором вузла). Як мені це зробити з шеф-кухарем? Встановіть шеф-кухаря з файлами pem / rb, які прив’язують його до шеф-кухаря, вручну розкажіть вузлу його ролі ножем або відредагуйте це в інтерфейсі управління, а потім відштовхуйтесь від запуску шеф-кухаря, щоб налаштувати себе?

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

Документи на Opscode в порядку, але не настільки великі, як у лялечки. Чи є якісь інші хороші ресурси шеф-кухаря, які мені можуть бути відсутні у пошуку?


5
Занадто багато питань в одному дописі. Подумайте, як розділити кожен на свій власний. Краще для громади в цілому, а також отримає кращі, детальніші відповіді.
Веслі

Відповіді:


84

Редагувати Це запитання та відповідь років. Остаточні найкращі практики викладаються через самостійні навчальні модулі Learn Chef Rally, створені Chef Software, Inc. Основна частина оригінальної відповіді наведена нижче.

У цій відповіді "шеф-кухар" або "шеф-кухар-клієнт" зазвичай посилається на продукт шеф-кухаря. Opscode перейменовано в Chef Software, Inc у 2013 році . У квітні 2019 року шеф-кухар відкрив вихідний код для всіх своїх продуктів, а також створив послідовну назву бренду.

Не зрозуміло, чи краще встановлювати ролі в рубінових DSL, JSON або на консолі управління? Чому існує кілька способів зробити те саме?

Оновлення 2019 року : політичні файли - найкращий робочий процес для використання. Ролі вважаються неповноцінною практикою, і Chef Software, Inc. рекомендує перейти до Policyfiles.

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

Існує Ruby DSL for Roles, щоб полегшити писати ролі, не знаючи синтаксису JSON. Це простий спосіб розпочати роботу з Ролями. Після внесення змін ви завантажуєте їх на сервер шеф-кухарів ножем.

knife role from file myrole.rb

Це перетворює роль у JSON та зберігає її на сервері. Якщо у вас є середовище, яке застосовує Chef Repository, де ваші ролі живуть як джерело істини, це працює досить добре.

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

Недоліком використання консолі webui / управління для редагування ролей є те, що вони відсутні у вашій локальній системі управління версіями, якщо ви не завантажуєте їх із сервера. Зробити це можна ножем:

knife role show myrole -Fj

-FjКаже ніж «дисплей в форматі JSON.» Ви можете перенаправити вихід на .json файл, якщо вам подобається.

Оновлення років тому : Існують додаткові команди ножа для роботи з файлами в місцевому сховищі кухарів. В даний час ці команди підтримують лише файли формату JSON. Відкрито RFC спільноти , яке буде адресувати додавання підтримки для Ruby DSL для цих плагінів. Ось короткий підсумок робочого процесу.

Перевірте різницю вмісту між сервером та локальним файлом.

knife diff roles/myrole.json

Завантажте файл ролей у форматі JSON. roles/Шлях потрібно. Це відображається на тій самій кінцевій точці API на сервері.

knife upload roles/myrole.json

Завантажте вміст із сервера, перезаписуючи вміст файлу у сховищі.

knife download roles/myrole.json

Ці команди походять knife-essentials, що вбудовано в клієнтський пакет клієнтів.

Чи можете ви організувати кулінарні книги в підкаталоги? Наприклад, у нас є власне програмне забезпечення, для якого я б хотів написати кулінарну книгу і дотримуватися цього: chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook, це буде хорошою практикою?

Ні. Ніж сподівається, де повинні жити кулінарні книги, оскільки він використовує API для завантаження кулінарних книг на Сервер. Це встановлено в knife.rbс cookbook_path. У старих версіях Chef Infra ви можете вказати масив шляхів для кулінарних книг, але це застаріло, оскільки воно вимагало більшого обслуговування та заплутало користувачів.

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

chef-repo/cookbooks/ourcompany_customsoftware

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

Подальша довідка:

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

Не існує прямого зв’язку або залежності між ролями та кулінарними книгами.

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

recipe[apache2]

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

У вас може бути кулінарна книга, визначена для ролі у вашій інфраструктурі. Частіше ви будете мати кулінарні книги, які призначені для налаштування певних типів служб, таких як apache2, mysql, redis, haproxy тощо. Потім ви поставите їх у відповідні ролі. Якщо у вас є спеціальні речі, які потрібно виконати для додатків, для виконання певної ролі, ви можете записати це в спеціальну кулінарну книгу (як я згадував вище).

Подальша довідка:

Чи є щось на зразок лялькового зовнішнього класифікатора вузлів, щоб вузли автоматично визначали їх ролі?

"Так." Інфраструктура Chef Infra Server здійснює зберігання даних у вузлі (в JSON) автоматично, а сервер також автоматично індексує всі дані вузла для пошуку.

Подальша довідка:

Здається, ви можете налаштувати речі ножем або в консолі управління або редагувати файли JSON? Це дуже заплутано для мене, чому існує так багато способів робити речі, це паралізує! Чи є причина використовувати те чи інше?

Інфраструктура шеф-кухаря має API RESTful, який надсилає та отримує відповіді JSON. Нож і консоль управління - це інтерфейс користувача для взаємодії з API з точки зору адміністрації.

Ви можете використовувати інструмент, який вам більше подобається, хоча консоль управління не має стільки функцій, як Knife. Більшість людей, які використовують Chef Infra, воліють інтерфейс командного рядка для потужності та гнучкості, яку він надає, навіть люди, які використовують Chef Infra в Windows. Крім того, knifeце інструмент на основі плагінів, за допомогою якого ви можете створювати нові плагіни для взаємодії з сервером Chef Infra або з іншими частинами інфраструктури.

Chef Infra - це набір бібліотек, примітивів та API. Це дає вам гнучкість побудови системи управління конфігурацією, яка найкраще працює для вашої інфраструктури.

Подальше читання:

Як я можу автоматично забезпечити вузли шеф-кухарем у своєму клавіші розробників? З лялькою я запускаю VM, який підключається до маріонетника, і починає маріонетковий пробіг і встановлює себе (роль визначається зовнішнім класифікатором вузла). Як це зробити з шеф-кухарем? - Встановіть шеф-кухаря з файлами pem / rb, які прив’язують його до шеф-кухаря, вручну повідомте вузлу його ролі ножем або відредагуйте це в інтерфейсі управління, а потім запустити запуск шеф-кухаря-клієнта, щоб налаштувати себе?

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

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

Це буде:

  • SSH до цільової системи (10.1.1.112) як rootкористувач, що використовує ключ SSH (ви можете ssh як інший користувач, а потім використовувати --sudo).
  • Встановити Ruby
  • Встановіть шефа
  • Створіть файл конфігурації Chef для свого Chef Server, прочитавши конфігурацію ножа (.chef / knife.rb).
  • Скопіюйте приватний ключ RSA "валідації", який вузол використовуватиме для автоматичної реєстрації на сервері шеф-кухарів.
  • Запустити, chef-clientвикористовуючи вказаний пробіг, відокремлений комами. У цьому прикладі застосовується лише webserverроль.

Це передбачає, що цільова система була налаштована, має IP-адресу, і ви можете SSH як root. Залежно від вашої локальної політики та процесу надання послуг, можливо, вам доведеться відрегулювати, як це працює. На сторінці завантаження ножа на вікі описано більше про те, як це працює.

Knife також має плагіни для багатьох постачальників громадських хмарних обчислень, таких як Amazon EC2 та Rackspace Cloud. Існують плагіни, доступні для приватних хмарних середовищ, таких як Евкаліпт та OpenStack. Також є плагіни для VMware, Vsphere та інших. Додаткову інформацію ви можете побачити в документації.

Подальше читання:

Чи є якісь хороші кухарські ресурси, яких я можу бракувати в пошуку?

Chef документації основним джерелом документації.

Детальніше Chef Rally є серією самонавідних модулів , які ви можете дізнатися все про різні аспекти Chef Infra та інших продуктах Chef.

Раніше я вела блог, де розміщувала поради, підказки та довідники про шеф-кухаря Інфра: http://jtimberman.housepub.org/ . У мене була серія під назвою « швидкі поради ». У зв’язку з реальними життєвими обставинами та іншими зобов'язаннями я більше не встигаю підтримувати сайт, але в майбутньому я можу повернутися до нього.

Клієнти шеф-кухарів можуть отримати допомогу та підтримку на сайті підтримки:

Спільнота користувачів шеф-кухаря є прекрасним джерелом додаткової допомоги:

Додаткові ресурси доступні на Chef Software, веб - сайт Inc ' .

Я сподіваюся, що це допомагає.


2
Це цінний ресурс, будь ласка, частіше посилайтеся на нього.
Пуян Хосраві

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