我想在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提供。
答案 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