Я хочу получить рецепты, которые содержит поваренная книга, через chef-server-api. Ниже приводится код, я использую для получения списка поваренной книги, отдельные детали поваренной книги через API:Получение списка рецептов через сервер шеф-повара api
require 'rubygems'
require 'chef/config'
require 'chef/log'
require 'chef/rest'
require 'chef/cookbook_version'
client_name = "admin"
signing_key_filename="c:/chef-repo/.chef/admin.pem"
server_url = "https://10.132.17.244:443"
rest = Chef::REST.new(server_url, client_name, signing_key_filename)
cookbooks = rest.get_rest("/cookbooks?all_versions")
cookbooks.keys.each do |name|
cookbook_versions = rest.get_rest("/cookbooks/#{name}")
print "#{name}\n"
cookbook_versions[name]["versions"].each do |cv|
version = cv["version"]
cookbook = rest.get_rest("/cookbooks/#{name}/#{version}")
print "\t#{cookbook}\n"
#parsed = JSON[cookbook]
end
end
Проблема я столкнулся, чтобы получить список рецептов из «поваренной книги» объекта. Я попытался разобрать его на рубиновый хэш, а затем прочитать, но бесполезно. Если я непосредственно распечатаю переменную «cookbook», результат будет похож на скриншот
Я не могу понять, как интерпретировать вывод, который я получаю, ударив по конечной точке '/ cookbooks/NAMEW/VERSION' и получить рецепты в отдельных поваренных книгах.
Таким образом, вы получите объект, Хава посмотрите на это определение объекта [здесь] (https://github.com/opscode/chef/blob /master/lib/chef/cookbook_version.rb) Итерация над 'cookbook ['recipe_filenames']' должна быть тем, что вы ищете. – Tensibai
Итерация над cookbook ['recipe_filenames'] дает ошибку. «undefined method» [] '" – tortuga
В этом cas я начал бы печатать cookbook.methods или cookbook.inspect, я могу ошибаться в методе доступа здесь – Tensibai