windows_zipfile Chef 资源因 'rubyzip' gem 文件下载而失败

windows_zipfile Chef resource failing due to 'rubyzip' gem file download

我们面临这样一种情况,最终用户 Windows VM 没有互联网连接,但只能访问文件存储。

我们在其中一个食谱中使用了 windows_zipfile 资源。因此,Windows 食谱中的食谱执行失败,原因是无法从 "rubygems.org" 站点下载 rubyzip

我们正在考虑通过这两种方式之一解决问题,

  1. windows_zipfile代码替换为powershell_script并使用Powershell命令实现代码

  2. 在文件存储中加载 rubyzip gem 及其依赖项,并在调用 windows_zipfile 资源之前安装 gems。

请提供处理该场景的建议。也请告诉我,有没有其他方法可以解决这个问题。

从网络内部的源下载 chef_gem 后,您应该能够从本地路径安装它(只需替换 https://rubygems.org 的 URL):

{"httpclient" => "2.7.1", "rubyzip" => "1.1.7"}.each do |gem,version|
  filename = "#{gem}-#{version}.gem"
  remote_file File.join(Chef::Config[:file_cache_path], filename) do
    source "https://rubygems.org/downloads/#{filename}"
  end

  chef_gem gem do
    source File.join(Chef::Config[:file_cache_path], filename)
    version version
  end
end

由于 Chef 的 ruby 使用了 Gem,请务必使用 chef_gem 资源。