尝试编写第一个程序以通过API访问Chef服务器。在https://docs.chef.io/api_chef_server.html#examples上的示例程序之后,应该有两行代码包含chef::rest
库。
require 'chef'
require 'chef/rest'
但代码因错误而失败
Traceback (most recent call last):
2: from ./rest.rb:4:in `<main>'
1: from /opt/chef/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/opt/chef/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- chef/rest (LoadError)
厨师客户端版本:14.12.9-1 操作系统版本:Ubuntu 16.04 LTS
是否缺少任何步骤?
答案 0 :(得分:0)
您没有分享是将厨师库用作食谱的一部分,还是作为依赖厨师库的另一个程序的一部分。
如果您是第二种情况,即在菜谱上下文之外,请确保您使用Gemfile来管理厨师库需求,然后使用捆绑程序执行程序。
Chef::REST
类将被删除。Chef::REST
在12.7.2中已弃用,并将在Chef 13中删除。如果编写旨在在Chef内部运行的代码(例如在食谱或小刀插件中),请过渡到使用
Chef::ServerAPI
。在大多数情况下,这就像创建一个Chef::ServerAPI
实例而不是一个Chef::REST
实例一样简单。如果要编写代码以与其他代码与Chef服务器进行交互,请移至
chef-api
gem。
因此,我假设您使用的是旧版厨师长,因此,为了补救,我将使用12.6版厨师长:
$ cat Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem 'chef', '12.6.0'
$ cat foo.rb
require 'chef'
require 'chef/rest'
$ bundle install
...
Bundle complete! 1 Gemfile dependency, 46 gems now installed.
$ bundle exec ruby foo.rb