windows_zipfile Chef 资源因 'rubyzip' gem 文件下载而失败
windows_zipfile Chef resource failing due to 'rubyzip' gem file download
我们面临这样一种情况,最终用户 Windows VM 没有互联网连接,但只能访问文件存储。
我们在其中一个食谱中使用了 windows_zipfile
资源。因此,Windows 食谱中的食谱执行失败,原因是无法从 "rubygems.org" 站点下载 rubyzip
。
我们正在考虑通过这两种方式之一解决问题,
将windows_zipfile
代码替换为powershell_script
并使用Powershell命令实现代码
在文件存储中加载 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 资源。
我们面临这样一种情况,最终用户 Windows VM 没有互联网连接,但只能访问文件存储。
我们在其中一个食谱中使用了 windows_zipfile
资源。因此,Windows 食谱中的食谱执行失败,原因是无法从 "rubygems.org" 站点下载 rubyzip
。
我们正在考虑通过这两种方式之一解决问题,
将
windows_zipfile
代码替换为powershell_script
并使用Powershell命令实现代码在文件存储中加载
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 资源。