我需要将 res-client 包含到我的模块中才能使用 RestClient::Resource。
我在 Chef 配方(ruby_block 资源)中使用模块中的方法。
当我的 ruby_block 资源尝试在模块中运行该方法时,它会输出此错误:
错误:无法加载此类文件--rest-client
以下是我位于库文件夹中的模块:
module SecretServer
def fetch_token
payload = { :username => "***", :password => "***", :grant_type => "****"}
uri = ***
request = RestClient::Resource.new(uri, :verify_ssl => false)
post_request = request.post payload, :content_type => 'application/x-www-form-urlencoded'
token = JSON.parse(post_request)["access_token"]
return token
end
end
require 'rest-client'
Chef::Recipe.include(SecretServer)
Chef::Resource.include(SecretServer)
以下是调用模块中函数的资源:
ruby_block 'parse data' do
block do
res = fetch_token
puts res
end
end
这只是我食谱中的几个食谱之一。此配方在目标节点几乎准备好并且“捆绑安装”已在目标节点上运行后运行。
我还在目标节点中安装了rest-client。我在 ruby_block 资源之前尝试了以下每个资源:
chef_gem 'rest-client' do
action :install
end
gem_package 'rest-client' do
action :install
end
我的问题是如何包含“rest-client”并在厨师食谱中使用它?