Ссылка на оригинал

Это последняя часть из Chef Basics. И посвящена она краткому описанию (очень краткому) функций поиска и data bags, не знаю как перевести на русский это словосочетание. В ближайшее время постараюсь собрать все четыре части в PDF. Также в планах дальнейшие переводы по Chef: Chef.Architecture и Chef Essentials. Но об этом позже :)

Поиск

Поиск - это функциональность Chef, позволяющая использовать полнотекстовый поисковый движок (основанный на Apache Solr) для запроса информации об инфраструктуре и приложениях. Информация, содержащаяся в аттрибутах узла, data bags (смотрите ниже), окружения, роли и API клиентов также могут запрашиваться.

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

app_servers = search(:node, 'role:appserver')

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

Как вариант, может потребоваться быстро получить список узлов, использующихся как серверы приложений, с рабочей станции:

knife search node 'role:appserver'

Для получения более подробной информации следует обратиться к Поиску.

Data Bag

Data Bags хранят вложенные данные ключ-значение (как аттрибуты) на серверах chef. По данным Data Bag можно производить поиск, также их можно загружать прямо по имени в рецепте. Data Bags глобальны для конкретной установки сервера Chef - их можно представить в качестве аттрибутов для всей инфраструктуры.

Например, указанному узлу требуется множество учетных записей пользователей. Вместо того, чтобы создавать описание ресурса нового пользователя для каждого из них, можно сохранить информацию о каждом пользователе в data bag и упростить рецепт:

search(:users, '*:*') do |u|
    user u["username"] do
        home u["home"]
        shell u["shell"]
        comment u["comment"]
    end
end

Теперь, всякий раз при необходимости создать пользователя на узлах, можно сделать это просто отредактировав data bag вместо рецепта. Это не только упрощает рецепты, но и позволяет убедиться, что важные данные об инфраструктуре будут доступны для поиска. Доступность для поиска означает, что можно будет быстро получить ответ на вопросы об инфраструктуре, используя knife.Например, скажем, если требуется узнать оболочку по умолчанию пользователя “hank”, можно проделать с knife следующее:

knife search users 'username:hank' -a shell

Для data bags, которые содержат конфиденциальную информацию, Chef предоставляет Encrypted Data Bags, позволяющие безопасно хранить информацию на Chef Server в зашифрованном виде. Для получения более подробной информации о databags и зашифрованных data bags следует обратиться к Data Bags и Encrypted Data Bags.

Краткий итог

  • Поиск позволяет делать запросы на получение информации об инфраструктуре из рецептов или через knife.
  • Data bags позволяет хранить данные в виде, пригодном для поиска. Эти данные в дальнейшем могут быть найдены и использованы в рецептах.