Можно ли отлаживать рецепты шеф-поваров из бродячего бокса?

Я борюсь с рецептами шеф-повара для бродячего бокса. Я использую шеф-повара.

Мне не очень нравится Ruby (я никогда не использовал его раньше), поэтому процесс написания моих рецептов очень длинный, если я должен делать vagrant provision каждый раз.

Есть ли способ отладки конкретного рецепта? Даже из оболочки виртуальной машины.

Я видел, что chef-shell существует (http://docs.opscode.com/chef_shell.html), и я могу запустить его (он работает), когда я внутри виртуальной машины, но я не могу понять, как загрузить мои рецепты и протестировать их.

Ответ 1

Вы можете использовать chef-solo непосредственно из оболочки внутри вашей виртуальной машины, но для этого требуется другая файловая структура, чем то, что у вас есть для бродяг.

Это немного похоже на то, что сделано здесь:

  • Вам нужен каталог ваших кулинарных книг
  • Вам нужен файл .json, содержащий все ваши данные, которые находятся в chef.json в вашем Vagrantfile
  • И вам нужен rubper script для обертки/запуска, как тот, который указан выше.

В общем, попробуйте найти учебники, которые объяснят шеф-повара без Vagrant.

Ответ 2

Правильный способ включить отладочный вывод в текущем резервном шеф-поваре для бродяг: chef.log_level, а не с шеф-поваром вручную или с chef.arguments:

Vagrant.configure("2") do |config|
  # ...
  config.vm.provision :chef_solo do |chef|
    chef.log_level = :debug
    # ...
  end
end

Ответ 3

В дополнение к указанному выше вводу, который является execllent; -)

Выполнение chef-solo в режиме отладки (включение вывода отладки) определенно поможет.

Например

chef-solo -c solo.rb -j node.json -l debug

Ответ 4

Если вы запустите chef-solo внутри Vagrant, дополнительные дополнительные аргументы (для регистрации/отладки) могут быть введены из Vagrantfile следующим образом:

 Vagrant.configure("2") do |config|
    # ...
    config.vm.provision :chef_solo do |chef|
      chef.arguments = '-l debug'
      # ...
    end
 end