Вопрос: Лучшие практики / вопросы шеф-повара


Я использую и люблю Кукольный. Я переехал в новую компанию, и они приняли шеф-повара. Так что я пытаюсь научиться Шеф-повару, но мне сложно с этим все связать, потому что я все еще думаю в Puppet =)

Это мои вопросы:

  • Лучше ли устанавливать роли в Ruby DSL, JSON или с консоли управления? Почему существует несколько способов сделать то же самое?
  • Можете ли вы организовать кулинарные книги в подкаталоги? например: у нас есть пользовательское программное обеспечение, которое я бы хотел написать поваренной книге и придерживаться этого: chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook - это хорошая практика?
  • Создать кукрую книгу для каждого типа роли, которая определяет, что она делает? Имею ли я эти кулинарные книги другие кулинарные книги (например, кулинарная книга для моей роли в веб-сервере включает в себя поваренную книгу apache). Я не уверен, как обрабатываются взаимозависимости и наследование поваренной книги.
  • Есть ли что-то вроде классификатора внешних узлов Puppet, поэтому узлы автоматически определяют свои роли?
  • Кажется, вы можете настраивать вещи ножом или в консоли управления или редактировать файлы JSON? Это очень смущает меня, почему существует так много способов сделать что-то, это парализует! Есть ли причина использовать то или другое? Исходя из марионетки, кажется, что было бы легко случайно настроить что-то с помощью этих инструментов (т. Е. Оставить что-то)
  • Как я могу автоматически создавать узлы с шеф-поваром в моем кластере dev? С Puppet я запускаю виртуальную машину, которая соединяется с марионеткой и запускает марионетку и настраивается (роль определяется классификатором внешних узлов). Как мне это сделать с шеф-поваром? Установите шеф-повар с файлами pem / rb, которые привязывают его к серверу шеф-повара, вручную сообщите узлу его роли ножом или отредактируйте его в интерфейсе управления, а затем отпустите запуск chef-client, чтобы настроить себя?

Я закончил начатые обучающие программы, и я вижу, что у них есть учебники EC2, но я никогда не использовал EC2, поэтому мне трудно следовать. На этом этапе я организовал работу Chef, и я начинаю играть с настройкой одного узла. Куда я иду отсюда? Нужно ли мне начинать смотреть на общественные кулинарные книги?

Документы на Opscode в порядке, но не так велики, как Puppet's. Есть ли другие хорошие ресурсы шеф-повара, которые я могу потерять в своих поисках?


47
2017-09-23 20:27


Источник


Путь слишком много вопросов в одном посте. Подумайте о том, чтобы расщепить каждого на свое. Это лучше для сообщества в целом, а также поможет вам получить более подробные ответы. - Wesley


Ответы:


Ответы на ваши вопросы.

В этом ответе «Шеф-повар» или «шеф-повар» относятся к Шеф-повару продукта, обычно в форме клиента. «CHEF» относится к Chef Software, Inc. Opscode переименован в Chef Software, Inc в 2013 году,

Не ясно, лучше ли настраивать роли в Ruby DSL, JSON или с консоли управления? Почему существует несколько способов сделать то же самое?

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

Ruby DSL для ролей существует, чтобы упростить запись ролей, не зная синтаксиса JSON. Это простой способ начать работу с Ролями. После внесения изменений вы загружаете их на сервер Chef с ножом.

knife role from file myrole.rb

Это преобразует роль в JSON и сохраняет ее на сервере. Если у вас есть среда, которая защищает репозиторий Chef, где ваши роли живут как источник правды, это работает очень хорошо.

JSON - это то, что хранит сервер Chef Server, поэтому вы также можете редактировать JSON непосредственно в консоли управления. Это требует больше полей, чем Ruby DSL, чтобы Knife мог правильно его распознать для загрузки. Эти детали скрыты в некоторой степени через веб-интерфейс.

Недостаток использования консоли 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, В более старых версиях шеф-повара вы можете указать массив путей для кулинарных книг, но это устарело, потому что оно требует дополнительного обслуживания и сбивает с толку пользователей.

По соглашению мы называем кулинарные книги с конкретными клиентами или сайтами с наименованием, предваряемым в директории cookbook. Для вашего примера это будет:

chef-repo/cookbooks/ourcompany_customsoftware

В зависимости от того, что вы делаете, может быть много разных поваренных книг для «нашей компании».

Дальнейшая ссылка:

Создать кукрую книгу для каждого типа роли, которая определяет, что она делает? Имею ли я эти кулинарные книги другие кулинарные книги (например, кулинарная книга для моей роли в веб-сервере включает в себя поваренную книгу Apache). Я не уверен, как обрабатываются взаимозависимости и наследование поваренной книги.

Нет прямой зависимости или зависимости между ролями и кулинарными книгами.

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

recipe[apache2]

Шеф-повар загрузит кукурузу apache2 для узла, чтобы он мог применить этот рецепт.

У вас может быть кулинарная книга, предназначенная для роли в вашей инфраструктуре. Чаще всего у вас будут кулинарные книги, предназначенные для создания определенных типов сервисов, таких как apache2, mysql, redis, haproxy и т. Д. Затем вы добавите их в соответствующие роли. Если у вас есть специальные приложения, которые должны выполняться для выполнения роли, вы можете записать это в пользовательскую кулинарию (как я уже упоминал выше).

Дальнейшая ссылка:

Существует ли что-то вроде классификатора внешних узлов кукол, так что узлы автоматически определяют свои роли?

"Да." Сервер Chef делает хранилище данных узлов (в JSON) автоматически, и сервер также автоматически индексирует все данные узла для поиска.

Дальнейшая ссылка:

Кажется, вы можете настраивать вещи ножом или в консоли управления или редактировать файлы JSON? Это очень смущает меня, почему существует так много способов сделать что-то, это парализует! Есть ли причина использовать то или другое?

У Chef Server есть RESTful API, который отправляет и получает ответы JSON. Нож и консоль управления - это пользовательские интерфейсы для взаимодействия с API с точки зрения администрирования.

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

Шеф-повар - это набор библиотек и примитивов, а также API. Это дает вам гибкость в создании системы управления конфигурацией, которая наилучшим образом подходит для вашей инфраструктуры.

Дальнейшее чтение:

Как я могу автоматически создавать узлы с шеф-поваром в моем кластере dev? С марионеткой я запускаю виртуальную машину, которая соединяется с puppermatser и запускает марионетку и настраивается (роль определяется классификатором внешних узлов). Как мне это сделать с шеф-поваром? - Установите шеф-повар с файлами pem / rb, которые привязывают его к серверу шеф-повара, вручную сообщите узлу его роли ножом или отредактируйте его в интерфейсе управления, а затем отпустите запуск chef-client, чтобы настроить себя?

Вы хотите использовать ножевой бутстрап. Это встроенный плагин с ножом. Вы вызываете это так:

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.
  • Бег chef-client используя указанный запятой прогон, указанный в списке. В этом примере только webserver роль.

Это предполагает, что целевая система была предоставлена, имеет IP-адрес, и вы можете использовать SSH как root. В зависимости от ваших локальных политик и процесса подготовки, вам может потребоваться настроить, как это работает. Страница загрузки ножа в вики описывает больше о том, как это работает.

Команда bootstrap для ножей использует загрузочные шаблоны, которые представляют собой сценарии оболочки платформы, которые будут устанавливать Chef в наиболее известной рабочей конфигурации. К сожалению, разные дистрибутивы имеют разные версии Ruby, поэтому есть разные сценарии. Вы также можете создать свои собственные шаблоны бутстрапов. Вы можете указать другое с помощью -d или --distro опция:

knife bootstrap [ ... ] -d centos5-gems

Opscode работает над полным установщиком клиента Chef и шаблоном начальной загрузки, который устранит многие из этих проблем. Это в бета-тестировании, и это будет способ, которым Opscode порекомендует установить шеф-повара.

У ножа также есть плагины для ряда публичных поставщиков облачных вычислений, таких как Amazon EC2 и Rackspace Cloud. Доступны плагины для частных облачных сред, таких как Eucalyptus и OpenStack. Существуют также плагины для VMware, Vsphere и других. Вы можете увидеть дополнительную информацию о вики.

Дальнейшее чтение:

Есть ли какие-либо другие хорошие ресурсы шеф-повара, которые я могу потерять в своих поисках?

Документация шеф-повара основной источник документации. CHEF Opscode работает над обновлением документации Wiki по всей доске, чтобы соответствовать текущей версии шеф-повара и соответствующим образом отделять информацию от начинающих от передовой информации. Это должно быть завершено довольно скоро.

CHEF работает Обучение основам шеф-повара, который представляет собой двухдневный учебный курс, основанный на классе, с лекциями и упражнениями. Периодически проводятся государственные учебные курсы, а материалы для обучения доступны бесплатно, регистрируясь в программе Open Training. Требуется регистрация, поэтому CHEF может узнать, чего интересуют люди, и связаться с людьми, которые подписываются о новых выпусках материалов или новых публичных классах.

Открытая учебная программа CHEF:

Я иногда публикую советы, трюки и руководства о поваре в своем блоге: http://jtimberman.housepub.org/, У меня также есть серия под названием "Быстрые советы"

Клиенты CHEF могут получить помощь и поддержку на сайте поддержки:

Сообщество пользователей Chef - отличный источник дополнительной помощи:

Дополнительные ресурсы доступны на Сайт CHEF, Надеюсь, это поможет.


81
2017-09-25 05:31



Это ценный ресурс, пожалуйста, обращайтесь к нему чаще. - Pooyan Khosravi