Spec-Zone.ru › Chef 16

О репозитории chef-repo

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

chef-repo — это каталог на вашей рабочей станции, который хранит всё необходимое для определения вашей инфраструктуры с помощью Chef Infra:

  • Кухни (включая рецепты, атрибуты, пользовательские ресурсы, библиотеки и шаблоны)
  • Мешки данных
  • Policyfiles

Каталог chef-repo должен быть синхронизирован с системой управления версиями, например, git. Все данные в chef-repo должны рассматриваться как исходный код.

Вы будете использовать команды chef и knife для загрузки данных на сервер Chef Infra из каталога chef-repo. После загрузки Chef Infra Client использует эти данные для управления узлами, зарегистрированными на сервере Chef Infra, и для обеспечения применения правильных кук, policyfiles и настроек к правильным узлам в правильном порядке.

Структура каталогов

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

Подкаталоги в chef-repo:

Каталог Описание
.chef/ Скрытый каталог, используемый для хранения файлов ключей валидации и, необязательно, файла config.rb.
cookbooks/ Содержит кухни, загруженные из Chef Supermarket или созданные локально.
data_bags/ Хранит мешки данных (и элементы мешков данных) в формате JSON (.json).
policyfiles/ Хранит Policyfiles в формате Ruby (.rb).

.chef/

Каталог .chef — это скрытый каталог, используемый для хранения файлов ключей валидации и, необязательно, файла config.rb.

cookbooks/

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

data_bags/

Каталог data_bags/ используется для хранения всех мешков данных, существующих для организации. Каждый подкаталог соответствует одному мешку данных на сервере Chef Infra и содержит файл JSON для каждого элемента мешка данных. Если подкаталог не существует, создайте его с помощью команд SSL. После создания элемента мешка данных его можно загрузить на сервер Chef Infra.

policyfiles/

Каталог policyfiles/ используется для хранения Policyfiles, которые определяют набор кук и атрибутов, которые необходимо применить к определённым системам, управляемым сервером Chef Infra.

Файлы chefignore

Файл chefignore используется для указания knife, какие файлы кук в chef-repo следует игнорировать при загрузке данных на сервер Chef Infra. К такому типу данных относятся файлы подкачки, данные системы управления версиями, данные выходных данных сборки и т. д. Файл chefignore использует синтаксис Ruby File.fnmatch для определения шаблонов игнорирования, используя *, **, и ? шаблоны подстановки.

  • Шаблон относит к корню кухни
  • Шаблон может содержать имена относительных каталогов
  • Шаблон может соответствовать всем файлам в каталоге

Файл chefignore может находиться в любом подкаталоге chef-repo: /, /cookbooks, /cookbooks/COOKBOOK_NAME/, и т. д. Он должен содержать разделы, похожие на следующие:

## section
*ignore_pattern

## section
ignore_pattern*

## section
**ignore_pattern

## section
ignore_pattern**

## section
?ignore_pattern

## section
ignore_pattern?

Примеры

Следующие примеры показывают, как добавлять записи в файл chefignore.

Игнорирование файлов подкачки редактора

Многие текстовые редакторы оставляют файлы. Чтобы предотвратить загрузку этих файлов на сервер Chef Infra, добавьте запись в файл chefignore. Для Emacs сделайте что-то вроде:

*~

а для vim, что-то вроде:

*.sw[a-z]

Игнорирование данных Subversion верхнего уровня

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

Чтобы предотвратить загрузку данных Subversion верхнего уровня, добавьте что-то подобное в файл chefignore:

*/.svn/*

Чтобы проверить, что данные Subversion верхнего уровня не загружаются на сервер Chef Infra, используйте knife и выполните команду, подобную следующей:

knife cookbook show name_of_cookbook cookbook_version | grep .svn

Игнорирование всех файлов в каталоге

Файл chefignore можно использовать для игнорирования всех файлов в каталоге. Например:

files/default/subdirectory/*

или:

files/default/subdirectory/**

Несколько пользователей, один репозиторий

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

Пример config.rb:

current_dir = File.dirname(__FILE__)
  user = ENV['CHEF_USER'] || ENV['USER']
  node_name                user
  client_key               "#{ENV['HOME']}/chef-repo/.chef/#{user}.pem"
  chef_server_url          "https://api.opscode.com/organizations/#{ENV['ORGNAME']}"
  syntax_check_cache_path  "#{ENV['HOME']}/chef-repo/.chef/syntax_check_cache"
  cookbook_path            ["#{current_dir}/../cookbooks"]
  cookbook_copyright       "Your Company, Inc."
  cookbook_license         "Apache-2.0"
  cookbook_email           "cookbooks@yourcompany.com"

  # Amazon AWS
  knife[:aws_access_key_id] = ENV['AWS_ACCESS_KEY_ID']
  knife[:aws_secret_access_key] = ENV['AWS_SECRET_ACCESS_KEY']

Создание chef-repo

Используйте команду chef generate repo для создания каталога chef-repo вместе с основной структурой папок. Эта команда использует инструмент командной строки chef, который входит в состав Chef Workstation, для создания chef-repo.

chef generate repo REPO_NAME

Примечание

По умолчанию команда chef generate repo создаёт базовый chef-repo, настроенный для Policyfiles. Чтобы создать репозиторий для ролей и сред, используйте флаг --roles при выполнении команды.

© 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_repo/

Spec-Zone.ru

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