Шеф-повар для извлечения из локального каталога

#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 книги? Если вы работаете с кулинарными книгами с несколькими зависимостями, то у вас должны быть все они (и их версии) в этом пути.