通过Chef将Gem安装到ChefDK中

时间:2014-05-15 13:48:08

标签: chef chefdk

我想在kitchen-docker的宝石路径中安装宝石(ChefDK)。

通过Chef本身安装此Gem的最佳方法是什么?有没有比以下更聪明的解决方案?

execute "chef gem install kitchen-docker" do
  user "jenkins"
  not_if "chef gem list | grep ^kitchen-docker"
end

一些背景信息:我想在我们的CI服务器上使用Jenkins中的ChefDK进行食谱测试。当然,CI服务器本身应该由Chef提供。

3 个答案:

答案 0 :(得分:2)

运行:

chef gem install kitchen-docker

安装gen un chefdk路径。

祝你好运!

答案 1 :(得分:2)

显然,为了在系统范围内安装chef gem(进入/opt/chefdk/),可以通过--no-user-install资源使用gem命令的参数gem_package

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

这将安装gem并使其可供系统上运行chefdk的所有用户使用。

答案 2 :(得分:0)

这段代码为我创建了一个允许我这样做的资源 chef_dk_gem "kitchen-dokken"

它比我更喜欢hackier但由于CHEF-2288的问题,我在使用gem进入我的目标用户时遇到了很多麻烦,并且拥有GEM的env变量*使用chef-dk正确设置

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