簡體   English   中英

在Chef LWRP中安裝,要求和使用ruby庫

[英]Installing, requiring, and using a ruby library in chef lwrp

我正在編寫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'

我是紅寶石新手,所以感謝您的所有幫助。

因此,似乎我丟失了一小塊,而我在錯誤的地方放了幾樣東西。

首先,在我的食譜中安裝了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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM