О репозитории chef-repo
Репозиторий 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/