1

我想在ChefDK的 Gem 路径中安装一个 Gem ( kitchen- docker ) 。

通过 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 提供。

4

3 回答 3

3

运行这个:

chef gem install kitchen-docker

此安装 gen un chefdk 路径。

最好的祝福!

于 2014-06-13T03:44:41.787 回答
2

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

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

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

于 2014-11-05T23:02:47.157 回答
0

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

它比我想要的要复杂得多,但是由于CHEF-2288的问题,否则我在将 gem 导入目标用户以及使用 chef-dk 正确设置 GEM * 的 env 变量时遇到了很多麻烦

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
于 2016-04-28T00:36:30.900 回答