Spec-Zone.ru › Chef 17

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

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

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

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

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

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

Генерация chef-repo

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

chef generate repo REPO_NAME

Примечание

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

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

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

Стандартная структура нового chef-repo:

. chef-repo
├ cookbooks
| └ README.md
| ├ example
  | ├ attribtes
  | | └ default.rb
  | ├ recipes
  | | └ default.rb
  | └ metadata.rb
  | └ README.md
├ data_bags
  | ├ example
  | | └ example_item.json
  | └ README.md
├ policyfiles
  | └ README.md
└ .chef-repo.txt
└ chefignore
└ License
└ README.md

cookbooks/

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

data_bags/

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

policyfiles/

Каталог policyfiles/ используется для хранения политик в формате .rb, определяющих набор кулинарных книг и атрибутов для применения к конкретным системам, управляемым сервером 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]

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

Конфигурация 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 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