2013-10-03 2 views
0

인증을 위해 API 키가있는 redis 데이터베이스를 시드하기 위해 LWRP를 작성 중입니다. 내 문제는 루비에 redis 라이브러리를 사용하고있다. 나는 주변을 수색 해 보았고 몇 가지 예를 온라인으로 찾았고 아무 것도 나를 위해 일하지 않았다. 이 요리사 솔로요리사 lwrp에서 루비 라이브러리 설치, 필요 및 사용

나는 레디 스 보석을 설치 내 실행 목록에서 조리법을 포함 해봤 (https://github.com/brianbianco/redisio/blob/master/recipes/redis_gem.rb)

나도 해봤 사용하므로

나는 AWS의 OpsWorks에서이 작업을 실행하고 그 (것)들을 요리 책의 내부에 설치하십시오.

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' 

그래서 어떤 루비 나의 요리사 실행에 얻고있어 오류가 모든 도움에 감사하고, 고맙습니다.

답변

0

그래서 나는 작은 조각을 놓치고있는 것처럼 보였고 나는 틀린 곳에서 몇 가지를 보았습니다.

처음에는 이렇게 보이는 레시피 보석을 설치 한 후 보석을 새로 고침해야했습니다.

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