#chef-infra
#шеф-повар-инфра
Вопрос:
Обычно клиент Chef в узле chef извлекает данные с сервера chef, на котором есть изменения. Как мне указать клиенту chef на локальную папку, в которой есть мои изменения. Поможет ли шеф-повар Соло
Ответ №1:
Я думаю, вы на правильном пути. Мы можем использовать chef-solo
, чтобы иметь поваренные книги локально и выполнять их непосредственно на узлах.
Давайте возьмем пример узла node1.example.net
, у нас может быть конфигурационный файл в нем solo.rb
(может быть любое имя).
solo.rb
cookbook_path '/home/user/.chef/cookbooks'
file_cache_path '/home/user/.chef/cache'
role_path '/home/user/.chef/roles'
data_bag_path '/home/user/.chef/databags'
Если мы запустим chef-solo
на этом этапе
chef-solo -c /home/user/.chef/solo.rb
Там не run_list
будет, так что ничего не произойдет, но <node name>.json
в каталоге будет создан .chef/nodes
, например node1.example.net.json
.
Теперь мы можем хранить кулинарные книги в разделе /home/user/.chef/cookbooks
и добавлять соответствующие кулинарные книги в run_list
node1.example.net.json
файл.
Или мы можем предоставить дополнительный .json
файл с нужным нам списком выполнения. Что-то вроде example.json
:
{
"name": "tftest-devops01.headquarters.healthedge.com",
"chef_environment": "_default",
"json_class": "Chef::Node",
// some lines removed
"run_list": [
"recipe[my_cookbook]"
]
}
Затем запустите как:
chef-solo -c solo.rb -j example.json
шеф-повар-ноль
Существует также chef-zero, который может помочь запустить «локальный» (в памяти) Сервер Chef для имитации функциональности сервера Chef, позволяющей нам выполнять knife
операции.
Комментарии:
1. Отсутствуют кулинарные книги: —————— Нет такой кулинарной книги: базовый расширенный список блюд: —————— * база. Теперь появилась эта ошибка
2. У вас есть все кулинарные
cookbook_path
книги? Если вы работаете с кулинарными книгами с несколькими зависимостями, то у вас должны быть все они (и их версии) в этом пути.