Spec-Zone.ru › Chef 17

Обзор Chef Infra

[править на GitHub]

Chef Infra — это мощная платформа автоматизации, которая превращает инфраструктуру в код. Независимо от того, работаете ли вы в облаке, локально или в гибридной среде, Chef Infra автоматизирует конфигурацию, развертывание и управление инфраструктурой по всей вашей сети, независимо от её размера.

На данной схеме показано, как вы разрабатываете, тестируете и развертываете свой код Chef Infra.

image
  • Рабочая станция Chef — это место, где пользователи взаимодействуют с Chef Infra. С помощью рабочей станции Chef пользователи могут создавать и тестировать кулинарные книги с использованием инструментов, таких как Test Kitchen, и взаимодействовать с сервером Chef Infra с помощью командных инструментов knife и chef.
  • Клиент Chef Infra Клиент Chef Infra работает на системах, управляемых Chef Infra. Клиент Chef Infra выполняется по расписанию, чтобы настроить систему в соответствии с желаемым состоянием.
  • Сервер Chef Infra выступает в качестве центра данных конфигурации. Сервер Chef Infra хранит кулинарные книги, политики, применяемые к узлам, и метаданные, описывающие каждый зарегистрированный управляемый узел. Узлы используют Клиент Chef Infra для запроса у Сервера Chef Infra деталей конфигурации, таких как рецепты, шаблоны и распределение файлов.

Компоненты Chef Infra

На следующей схеме показаны взаимосвязи между различными элементами Chef Infra, включая узлы, сервер и рабочую станцию. Эти элементы работают вместе, предоставляя клиенту Chef Infra информацию и инструкции, необходимые для выполнения его задачи. При просмотре остальной части темы используйте значки в таблицах, чтобы сослаться на это изображение.

Diagram of Chef Infra Client, Server, and Workstation

Chef Infra имеет следующие основные компоненты:

Компонент Описание

image

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

Системы рабочих станций используют пакет Chef Workstation, который включает инструменты, такие как клиент Chef Infra, Chef InSpec, Test Kitchen, ChefSpec, Cookstyle и другие инструменты, необходимые для разработки и тестирования вашей инфраструктуры с продуктами Chef.

image

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

image

Язык программирования Ruby является синтаксисом написания кулинарных книг. Большинство рецептов — это простые шаблоны (блоки, которые определяют свойства и значения, сопоставляемые со специфическими элементами конфигурации, такими как пакеты, файлы, службы, шаблоны и пользователи. Полная мощность Ruby доступна в случае, когда вам необходим язык программирования.

image

Узел — это любое устройство (физическое, виртуальное, облачное, сетевое и т. д.), которое находится под управлением Chef Infra.

image

Клиент Chef Infra установлен на каждом узле, управляемом Chef Infra. Клиент Chef Infra настраивает узел локально, выполняя задачи, указанные в списке задач. Клиент Chef Infra также загрузит все необходимые данные конфигурации с сервера Chef Infra во время работы клиента.

image

Сервер Chef Infra выступает в качестве центра информации. Кулинарные книги и параметры политики загружаются на сервер Chef Infra пользователями с рабочих станций.

Клиент Chef Infra обращается к серверу Chef Infra с узла, на котором он установлен, чтобы получить данные конфигурации, выполняет поиск данных о предыдущих запусках клиента Chef Infra, а затем загружает необходимые данные конфигурации. После завершения запуска клиента Chef Infra клиент загружает обновленные данные запуска на сервер Chef Infra.

image

Chef Supermarket — это место, где кулинарные книги сообщества обмениваются и управляются. Любой пользователь Chef может использовать кулинарные книги, которые являются частью Chef Supermarket. Способ использования кулинарных книг сообщества варьируется в зависимости от организации.

Отчет о запусках клиента Chef Infra, отчеты о соблюдении требований, конфигурации высокой доступности и репликация сервера Chef Infra доступны как часть Chef Automate.

В следующих разделах эти элементы (и их различные компоненты) рассматриваются более подробно.

Рабочие станции

Рабочая станция — это ваш локальный компьютер, на котором работает Chef Workstation, который вы используете для написания кулинарных книг, взаимодействия с сервером Chef Infra и взаимодействия с узлами.

На рабочей станции пользователи выполняют большую часть своей работы, включая:

  • Разработку и тестирование кулинарных книг
  • Синхронизацию репозитория Chef Infra с системой управления версиями
  • Настройка организации, включая определение и применение файлов или групп политик
  • Взаимодействие с узлами по мере необходимости, например, выполнение операции загрузки

Компоненты и инструменты рабочей станции Chef

К некоторым важным инструментам и компонентам рабочей станции Chef относятся:

Компонент Описание

image

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

Chef Workstation включает:

  • Клиент Chef Infra
  • Chef InSpec
  • Chef Habitat
  • командные инструменты chef и knife
  • Инструменты тестирования, такие как Test Kitchen и Cookstyle
  • Все остальное, необходимое для написания кулинарных книг и загрузки их на сервер Chef Infra

image

image

Chef Workstation включает важные командные инструменты:

  • Chef Infra: используйте командную утилиту chef для работы с элементами в chef-repo, который является основным местом, где создаются, тестируются и поддерживаются кулинарные книги, а также с которого политика загружается на сервер Chef Infra
  • Knife: используйте командную утилиту knife для взаимодействия с узлами или работой с объектами на сервере Chef Infra
  • Клиент Chef Infra: агент, который настраивает ваши узлы
  • Test Kitchen: средство тестирования для быстрой проверки кода Chef
  • Chef InSpec: открытая платформа автоматизации безопасности и соблюдения требований Chef
  • chef-run: инструмент для выполнения задач ad-hoc
  • Приложение Chef Workstation: для обновления и управления вашими инструментами chef

image

chef-repo — это структура репозитория, в которой создаются, тестируются и поддерживаются кулинарные книги:

  • Кулинарные книги содержат рецепты, атрибуты, пользовательские ресурсы, библиотеки, файлы, шаблоны, тесты и метаданные
  • chef-repo должен быть синхронизирован с системой управления версиями (например, git), а затем управляться так же, как и исходный код

Структура каталогов в chef-repo может различаться. Некоторые организации предпочитают хранить все свои кулинарные книги в одном chef-repo, в то время как другие организации предпочитают использовать отдельный chef-repo для каждой кулинарной книги.

image

Используйте Test Kitchen для автоматического тестирования кулинарных книг на любой комбинации платформ и наборов тестов:

  • Наборы тестов определены в файле kitchen.yml. См. документацию по конфигурации для получения информации об опциях и синтаксисе.
  • Поддерживает тестирование кулинарных книг на многих облачных поставщиках и технологиях виртуализации.
  • Использует полную коллекцию базовых образов операционных систем из проекта Bento Chef’s Bento.

image

Используйте ChefSpec для моделирования схождения ресурсов на узле:

  • Является расширением RSpec, фреймворка поведенческого программирования (BDD) для Ruby
  • Это самый быстрый способ тестирования ресурсов и рецептов

Кулинарные книги

Кулинарная книга — это базовая единица конфигурации и распространения политики в Chef Infra.

Кулинарная книга определяет сценарий и содержит все необходимое для поддержки этого сценария:

  • Рецепты, указывающие, какие встроенные ресурсы Chef Infra использовать и в каком порядке их применять
  • Значения атрибутов, которые позволяют выполнять конфигурации, основанные на среде, такие как dev или prodution.
  • Пользовательские ресурсы для расширения Chef Infra за пределы встроенных ресурсов.
  • Файлы и шаблоны для распространения информации на системы.
  • Пользовательские плагины Ohai для расширения сбора конфигурации системы за пределами значений по умолчанию Ohai.
  • Файл metadata.rb, описывающий саму кулинарную книгу и любые зависимости, которые она может иметь.

Клиент Chef Infra использует Ruby в качестве языка-справочника для создания кулинарных книг и определения рецептов, с расширенным DSL для конкретных ресурсов. Доступен разумный набор ресурсов для клиента Chef Infra, достаточно для поддержки многих распространённых сценариев автоматизации инфраструктуры; однако, этот DSL также может быть расширен, когда необходимы дополнительные ресурсы и возможности.

Компоненты

Кулинарные книги состоят из следующих компонентов:

Компонент Описание

image

Атрибут может быть определён в кулинарной книге (или рецепте) и затем использоваться для переопределения значений по умолчанию на узле. При загрузке кулинарной книги во время выполнения Chef Infra Client, эти атрибуты сравниваются с атрибутами, которые уже присутствуют на узле. Атрибуты, определённые в файлах атрибутов, загружаются в первую очередь в соответствии с порядком кулинарных книг. Для каждой кулинарной книги атрибуты в файле default.rb загружаются первыми, а затем дополнительные файлы атрибутов (если они есть) загружаются в лексикографическом порядке. Когда атрибуты кулинарной книги имеют приоритет над атрибутами по умолчанию, Chef Infra Client применяет эти новые настройки и значения во время выполнения Chef Infra Client на узле.

image

Используйте ресурс cookbook_file для передачи файлов из подкаталога COOKBOOK_NAME/files/ в указанный путь на хосте, на котором выполняется Chef Infra Client. Файл выбирается в зависимости от специфичности файла, что позволяет использовать разные исходные файлы на основе имени хоста, платформы хоста (операционной системы, дистрибутива или соответствующим образом) или версии платформы. Файлы, расположенные в подкаталоге COOKBOOK_NAME/files/default , могут использоваться на любой платформе.

image

Библиотека позволяет включать произвольный Ruby-код в кулинарную книгу. Наиболее распространённое применение библиотек — создание вспомогательных функций, которые используются в рецептах и пользовательских ресурсах. Файл библиотеки — это Ruby-файл, расположенный в каталоге /libraries кулинарной книги. Поскольку библиотека создаётся с помощью Ruby, всё, что можно сделать с Ruby, можно сделать и в файле библиотеки, включая расширенные возможности, такие как расширение встроенных классов Chef.

image

Каждая кулинарная книга требует небольшого набора метаданных. Содержимое файла metadata.rb предоставляет информацию, которая помогает Chef Infra Client и Server правильно развертывать кулинарные книги на каждом узле.

Файл metadata.rb:

  • Расположен на верхнем уровне структуры каталога кулинарной книги.
  • Компилируется всякий раз, когда кулинарная книга загружается на сервер Chef Infra или при выполнении подкоманды knife cookbook metadata, а затем сохраняется как данные JSON.
  • Автоматически создаётся инструментом knife при выполнении подкоманды knife cookbook create.
  • Редактируется с помощью текстового редактора, а затем повторно загружается на сервер Chef Infra в рамках загрузки кулинарной книги.

image

Рецепт — это самый фундаментальный элемент конфигурации внутри системы. Рецепт:

  • Написан на Ruby, который является языком программирования, предназначенным для чтения и работы предсказуемым образом
  • В основном представляет собой набор ресурсов, определённых с помощью шаблонов (названия ресурсов, пары атрибут-значение и действия); вспомогательный код добавляется вокруг этого с помощью Ruby по мере необходимости
  • Должен определять всё необходимое для настройки части системы
  • Должен храниться в кулинарной книге
  • Может включаться в другой рецепт
  • Может использовать результаты запроса поиска и читать содержимое хранилища данных (включая зашифрованное хранилище данных)
  • Может зависеть от одного (или нескольких) рецептов
  • Должен быть добавлен в список выполнения, прежде чем его сможет использовать Chef Infra Client
  • Всегда выполняется в том же порядке, что и в списке выполнения

Chef Infra Client выполнит рецепт только по запросу. Когда Chef Infra Client выполняет тот же рецепт более одного раза, результат будет одинаковым состоянием системы каждый раз. Когда рецепт выполняется на системе, но ничего не изменилось ни на системе, ни в рецепте, Chef Infra Client ничего не изменит.

Язык Chef Infra — это комплексный язык конфигурации систем с ресурсами и вспомогательными функциями для настройки операционных систем. Этот язык в основном используется в рецептах и пользовательских ресурсах Chef Infra для указания Chef Infra Client, какие действия необходимо предпринять для настройки системы. Язык Chef Infra предоставляет ресурсы для компонентов системы, таких как пакеты, пользователи или брандмауэры, а также включает вспомогательные функции, которые позволяют принимать решения о конфигурации на основе операционных систем, облаков, виртуализационных гипервизоров и т.д.

image

Ресурс — это утверждение о политике конфигурации, которое:

  • Описывает желаемое состояние элемента конфигурации
  • Определяет шаги, необходимые для приведения элемента в желаемое состояние
  • Указывает тип ресурса, такой как package, template, или service
  • Перечисляет дополнительные детали (также известные как свойства ресурса), при необходимости
  • Объединяются в рецепты, которые описывают рабочие конфигурации

У Chef есть множество встроенных ресурсов, которые охватывают все наиболее распространённые действия на всех наиболее распространённых платформах. Вы можете создать собственные ресурсы для обработки любых ситуаций, которые не охватываются встроенными ресурсами.

image

Шаблон кулинарной книги — это шаблон Embedded Ruby (ERB), используемый для динамического создания статических текстовых файлов. Шаблоны могут содержать выражения и инструкции Ruby и являются отличным способом управления конфигурационными файлами. Используйте ресурс template для добавления шаблонов кулинарных книг в рецепты; поместите соответствующий файл шаблона Embedded Ruby (ERB) в каталог /templates кулинарной книги.

image

Тестирование кулинарных книг улучшает качество этих кулинарных книг, гарантируя, что они выполняют свои задачи и что они написаны последовательно. Тестирование на единицы и интеграционное тестирование проверяют рецепты в кулинарных книгах. Тестирование синтаксиса (часто называемое линтингом) проверяет качество самого кода. Следующие инструменты являются популярными инструментами для тестирования рецептов Chef: Test Kitchen, ChefSpec и Cookstyle.

Узлы

Узел — это любое устройство (физическое, виртуальное, облачное, сетевое устройство и т.д.), которое находится под управлением Chef Infra.

Типы узлов

Типы узлов, которые могут управляться Chef, включают, но не ограничиваются, следующими:

Тип узла Описание

image

Физический узел обычно представляет собой сервер или виртуальную машину, но может быть любым активным устройством, подключённым к сети, которое способно отправлять, получать и пересылать информацию по каналу связи. Другими словами, физический узел — это любое активное устройство, подключённое к сети, на котором может работать Chef Infra Client, а также разрешающее этому Chef Infra Client взаимодействовать с сервером Chef Infra.

image

Облачный узел размещается в внешней облачной службе, такой как Amazon Web Services (AWS), OpenStack, Rackspace, Google Compute Engine или Microsoft Azure. Доступны плагины для knife, которые предоставляют поддержку внешних облачных служб. knife может использовать эти плагины для создания экземпляров в облачных службах. После создания Chef Infra Client можно использовать для развертывания, настройки и поддержки этих экземпляров.

image

Виртуальный узел — это машина, которая работает только как программная реализация, но в остальном ведёт себя как физическая машина.

image

Сетевой узел — это любое сетевое устройство (коммутатор, маршрутизатор), которое управляется Chef Infra Client, например сетевые устройства Juniper Networks, Arista, Cisco и F5. Используйте Chef для автоматизации распространённых сетевых конфигураций, таких как свойства физических и логических Ethernet-соединений и VLAN на этих устройствах.

image

Контейнеры — это подход к виртуализации, который позволяет одной операционной системе размещать множество рабочих конфигураций, при этом каждой рабочей конфигурации (контейнеру) назначается одна задача, которая изолирована от всех других задач. Контейнеры популярны как способ управления распределёнными и масштабируемыми приложениями и службами.

Chef на узлах

Ключевые компоненты узлов, которые находятся под управлением Chef, включают:

Компонент Описание

image

Chef Infra Client — это агент, который работает локально на каждом узле, который находится под управлением сервера Chef Infra. При выполнении Chef Infra Client выполняет все необходимые шаги для приведения узла в ожидаемое состояние, включая:

  • Регистрацию и аутентификацию узла на сервере Chef Infra
  • Синхронизацию кулинарных книг с сервера Chef Infra на узел
  • Компиляцию набора ресурсов путём загрузки каждой необходимой кулинарной книги, включая рецепты, атрибуты и все другие зависимости
  • Выполнение соответствующих действий для настройки узла на основе рецептов и атрибутов
  • Отчёт о сводной информации об выполнении для Chef Automate
Chef Infra Client аутентифицируется на сервере Chef Infra с помощью пар открытых и закрытых ключей RSA каждый раз, когда Chef Infra Client нуждается в доступе к данным, хранящимся на сервере Chef Infra. Это предотвращает доступ любого узла к данным, которые ему не предназначены, и гарантирует, что только узлы, надлежащим образом зарегистрированные на сервере Chef Infra, могут быть управляемы.

image

Ohai — это инструмент для сбора данных конфигурации системы, которые затем предоставляются Chef Infra Client для использования в кулинарных книгах. Chef Infra Client запускает Ohai в начале каждого выполнения Chef Infra для определения состояния системы. Атрибуты, собранные Ohai, называются automatic attributes. Chef Infra Client использует эти атрибуты, чтобы убедиться, что узлы находятся в желаемом состоянии после каждого выполнения конфигурации.

Типы атрибутов, собираемых Ohai, включают, но не ограничиваются:

  • Операционная система
  • Сеть
  • Память
  • Диск
  • Процессор
  • Ядро
  • Имена хостов
  • Полные имена доменных имён
  • Виртуализация
  • Метаданные поставщика облачных услуг

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

Сервер Chef Infra

Сервер Chef Infra выступает в качестве центрального хранилища данных конфигурации. Сервер Chef Infra хранит кулинарные книги (cookbooks), политики, применяемые к узлам, и метаданные, описывающие каждый зарегистрированный узел, находящийся под управлением Chef Infra Client. Узлы используют Chef Infra Client для запроса у сервера Chef Infra данных конфигурации, таких как рецепты, шаблоны и распределение файлов. Chef Infra Client выполняет как можно больше работы по конфигурации на самих узлах (а не на сервере Chef Infra). Этот масштабируемый подход распределяет усилия по конфигурации по всей организации.

Функция Описание

image

Индексы поиска позволяют выполнять запросы к любому типу данных, индексируемому сервером Chef Infra, включая пакеты данных (и элементы пакетов данных), среды, узлы и роли. Для поддержки шаблонов поиска, таких как точное совпадение, подстановочные знаки, диапазон и приблизительное совпадение, используется определённый синтаксис запроса. Поиск — это полнотекстовый запрос, который можно выполнить из нескольких мест, включая рецепт, используя подкоманду search в knife, метод search в языке Chef Infra, поле поиска в консоли управления Chef, а также с помощью конечных точек /search или /search/INDEX в API сервера Chef Infra. Поисковый движок основан на Elasticsearch и работает на сервере Chef Infra.

image

Консоль управления Chef — это веб-интерфейс для сервера Chef Infra, который предоставляет пользователям возможность управлять следующими объектами:

  • Узлами
  • Кулинарными книгами (cookbooks) и рецептами
  • Ролями
  • Хранилищами данных JSON (пакеты данных), включая зашифрованные данные
  • Средами
  • Поиском индексированных данных
  • Пользовательскими учётными записями и данными пользователей, имеющих разрешение на вход и доступ к серверу Chef

image

Пакеты данных хранят глобальные переменные в формате JSON. Пакеты данных индексируются для поиска и могут загружаться кулинарной книгой или использоваться во время поиска.

image

Политика определяет, как бизнес- и операционные требования, процессы и рабочие процессы производства сопоставляются с объектами, хранящимися на сервере Chef Infra. Объекты политики на сервере Chef Infra включают роли, среды и версии кулинарных книг.

Политика

Политика сопоставляет бизнес- и операционные требования, процессы и рабочий процесс с настройками и объектами, хранящимися на сервере Chef Infra:

  • Роли определяют типы серверов, такие как «веб-сервер» или «сервер базы данных»
  • Среды определяют процесс, такие как «разработка», «предоставление» или «производство»
  • Некоторые типы данных — пароли, данные учетных записей пользователей и другие конфиденциальные данные — могут быть размещены в пакетах данных, которые находятся в защищенной подзоне на сервере Chef Infra, доступ к которой имеют только узлы, авторизованные на сервере Chef Infra с правильными сертификатами SSL
  • Кулинарные книги (и версии кулинарных книг), в которых хранятся организационные политики конфигурации

Некоторые важные аспекты политики включают:

Функция Описание

image

Роль — способ определения определенных шаблонов и процессов, которые существуют во всей организации в качестве принадлежащих к одной функциональной задаче. Каждая роль состоит из нуля (или более) атрибутов и списка выполнения. Каждый узел может иметь нуль (или более) назначенных ролей. При запуске роли на узле данные конфигурации этого узла сравниваются с атрибутами роли, а затем содержимое списка выполнения роли применяется к данным конфигурации узла. При запуске Chef Infra Client он объединяет собственные атрибуты и списки выполнения с атрибутами и списками выполнения, содержащимися в каждой назначенной роли.

image

Среда — это способ отображения реального рабочего процесса организации в том, что можно настроить и управлять с помощью Chef Infra. Это отображение достигается путем задания атрибутов и привязки кулинарных книг на уровне среды. С помощью сред вы можете изменять конфигурации кулинарных книг в зависимости от назначения системы. Например, определив разные среды предоставления и производства, вы можете определить правильный URL-адрес сервера базы данных для каждой среды. Среды также позволяют организациям уверенно перемещать новые релизы кулинарных книг из среды предоставления в производство, пройдя релизы через тестовые среды перед переходом в производство.

image

Версия кулинарной книги представляет собой набор функциональности, отличающийся от кулинарной книги, на которой она основана. Версия может существовать по многим причинам, таким как обеспечение правильного использования стороннего компонента, исправление ошибки или добавление улучшения. Версия кулинарной книги определяется с использованием синтаксиса и операторов, может быть связана со средами, метаданными кулинарной книги и/или списками выполнения и может быть заморожена (чтобы предотвратить нежелательные обновления).

Версия кулинарной книги поддерживается так же, как и кулинарная книга, с точки зрения контроля версий, загрузки на сервер Chef Infra и того, как Chef Infra Client применяет эту кулинарную книгу при конфигурации узлов.

image

Список выполнения определяет всю необходимую информацию для Chef, чтобы настроить узел в требуемое состояние. Список выполнения:
  • Упорядоченный список ролей и/или рецептов, которые выполняются в точном порядке, определенном в списке выполнения; если рецепт встречается в списке выполнения более одного раза, Chef Infra Client не выполнит его дважды
  • Всегда специфичен для узла, на котором он выполняется; узлы могут иметь список выполнения, идентичный списку выполнения, используемому другими узлами
  • Хранится как часть объекта узла на сервере Chef
  • Поддерживается с помощью knife и затем загружается со стационарного компьютера на сервер Chef Infra или поддерживается с помощью Chef Automate

Заключение

Chef — это тонкий DSL (язык домен-специфического языка), построенный поверх Ruby. Этот подход позволяет Chef предоставить достаточно абстракции, чтобы упростить понимание вашей инфраструктуры. Chef включает встроенную таксономию всех основных ресурсов, которые можно настроить на системе, плюс определенный механизм для расширения этой таксономии с использованием всех возможностей языка Ruby. Язык Ruby был выбран, потому что он обеспечивает гибкость для использования как простой встроенной таксономии, так и для обработки любого пользовательского пути, который требуется вашей организации.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/chef_overview/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API