我正在编写一个LWRP来使用API密钥对redis数据库进行种子处理以允许进行身份验证。我的麻烦是将redis库用于ruby。我四处搜索并在网上找到了一些例子,没有任何对我有用。
我在AWS OpsWorks上运行它,因此它正在使用chef-solo
我尝试在我的运行列表中包含一个安装redis gem(https://github.com/brianbianco/redisio/blob/master/recipes/redis_gem.rb)的配方
我也尝试在菜谱中安装它们。
r = gem_package "redis" do
action :install
end
r.run_action(:install)
或
r = chef_gem "redis" do
action :install
end
r.run_action(:install)
这是我正在运行厨师的错误
[2013-10-03T16:11:41+00:00] DEBUG: filtered backtrace of compile error:
[2013-10-03T16:11:41+00:00] DEBUG: filtered backtrace of compile error:
[2013-10-03T16:11:41+00:00] DEBUG: backtrace entry for compile error: '/opt/aws/opsworks/releases/20130926123105_208/site-cookbooks/ilnkmx/providers/add_app.rb:1:in `require''
[2013-10-03T16:11:41+00:00] DEBUG: Line number of compile error: '1'
[2013-10-03T16:11:42+00:00] ERROR: Caught exception while compiling OpsWorks custom run list: LoadError - no such file to load -- redis - /opt/aws/opsworks/releases/20130926123105_208/site-cookbooks/ilnkmx/providers/add_app.rb:1:in `require'
我是ruby的新手,所以任何帮助都是值得欣赏的,谢谢。
答案 0 :(得分:0)
所以我似乎错过了一小块,我在错误的地方做了一些事情。
首先,我需要在配方中安装redis gem后刷新宝石。
r = chef_gem "redis" do
action :nothing
end
r.run_action(:install)
Gem.clear_paths
我还要求我的提供商中的库不正确。我需要在Gem.clear_paths
之后在我的配方中要求它然后在我的提供者中我将打开连接并预先添加,删除或更新看起来像这样的记录。
action :create do
if @current_resource.exists
Chef::Log.info "#{ @new_resource } already exist - nothing to do."
else
converge_by("Create #{ @new_resource }") do
create_app_key
end
end
end
def create_app_key
redis = ::Redis.new
redis.set "#{@new_resource.app_name}", "#{@new_resource.api_key}"
end