2014-05-15 5 views
1

ChefDK의 보석 경로에 보석 (kitchen-docker)을 설치하고 싶습니다.요리사를 통해 ChefDK에 보석을 넣으십시오.

요리사를 통해이 보석을 설치하는 가장 좋은 방법은 무엇입니까? 다음보다 더 똑똑한 해결책이 있습니까?

일부 배경 정보 : 요리 책 테스트를 위해 CI 서버의 Jenkins에서 ChefDK를 사용하고 싶습니다. CI 서버 자체는 물론 요리사가 제공해야합니다.

+0

제대로 요리사-DK로 설정/.chefdk/gems' (적어도 젠킨스 사용자에게는 사용할 수 없었습니다.) – StephenKing

답변

1

분명히, 시스템 전체 (/opt/chefdk/에) 요리사 보석의 gem 명령의 --no-user-installgem_package 자원을 통해 사용할 수있는 매개 변수를 설치하려면 :이 보석을 설치하고 있습니다

gem_package "kitchen-docker" do 
    gem_binary "/opt/chefdk/embedded/bin/gem" 
    options "--no-user-install" 
end 

시스템에서 chefdk를 실행하는 모든 사용자가 사용할 수 있습니다.

+0

이것은 멋지게 보였지만 솔직히 나를 위해 작동하지 않았다. 그것은 실패하지는 않았지만 테스트했을 때 루트 사용자에 넣어 두었습니다 – JoshMahowald

+0

정말요? 나는 아직도 이것을 사용하고 있으며 정확하게 이런 식으로 작동한다. 그 다음 보석은'/ opt/chefdk/embedded/lib/ruby ​​/ gems/2.1.0/gems/kitchen-docker-2.3.0'에 설치됩니다. – StephenKing

+0

글쎄, 환경 변수/GEM_HOME과 GEM_SYSTEM의 설정 방법에 달려 있다고 생각합니다. 나는 모든 사용자에게 eval $ (chef-shell init bash)를 제대로 사용한다고 생각한다. 내가 너의 일을 할 수 없었던 이유를 좀 더 살펴 보겠다. – JoshMahowald

0

실행이 :

chef gem install kitchen-docker 

이 세대 않은 chefdk 경로를 설치합니다.

감사합니다.

+0

감사합니다. 당신의 대답을 위해. 그것이 내가 제안한 것입니다. 그러나 그것은 idemponent가 아니며 더 영리한 방법이 있는지 묻고있었습니다. – StephenKing

0

이 조각은 나에게 그것은 내가 좋아하는 것보다 훨씬 hackier입니다하지만 때문에 CHEF-2288 문제의 나는 그렇지로 보석을 얻는 문제를 많이했다 chef_dk_gem "kitchen-dokken"

을 할 수 있도록 자원을 작성하는 나를 위해 일한 내 대상 사용자 및 GEM의 ENV 변수를 가진 * 나는 또한`gem_package` 공급자에 대한`gem_binary`을 설정하려고하지만 이것은 단지`/ 루트로 보석을 설치 생각

action :install do 
    include_recipe "chef-dk" 
    execute "setup chefdk gem #{gem_name}" do 
     command "runuser #{gem_user} -c '/opt/chefdk/embedded/bin/gem install #{gem_name}'" 
     not_if "/opt/chefdk/embedded/bin/gem list #{gem_name} | grep #{gem_name}'", :user => gem_user 
    end 
end