Windows上的Chef-solo,运行windows_package时的Win32APIError

时间:2013-06-18 17:12:38

标签: chef vagrant chef-solo

在Windows Server 2008 R2 - 数据中心核心(从vagrantbox.es下载))由Vagrant配置的VM上,我运行chef-solo来测试我的食谱。如果没有获得Win32APIError,我就无法运行windows_package

运行以下配方步骤:

windows_package ".NET 4.0" do
  package_name "Microsoft .NET Framework 4 Extended"
  source "http://download.microsoft.com/download/3/6/1/361DAE4E-E5B9-4824-B47F-6421A6C59227/dotNetFx40_Full_x86_x64_SC.exe"
  options "/q"
  installer_type :inno
  action :install
end

产生以下错误:

Chef::Exceptions::Win32APIError: windows_package[.NET 4.0] (<my recipe> line 10) had an error: 
 Chef::Exceptions::Win32APIError: remote_file[C:/vagrant/cache/dotNetFx40_Full_x86_x64_SC.exe] (dynamically defined) had an error: 
 Chef::Exceptions::Win32APIError: Incorrect function.
get_named_security_info(C:/vagrant/cache/dotNetFx40_Full_x86_x64_SC.exe, SE_FILE_OBJECT, 7)
 ---- Begin Win32 API output ----
System Error Code: 1
System Error Message: Incorrect function.
---- End Win32 API output ----

正确下载安装文件,我可以在主厨错误后从VM控制台手动运行它,所以我猜这是一些Ruby / Chef权限错误......

尝试安装Opscode SQL Server recipe会产生相同的get_named_security_info错误。

知道出了什么问题吗?

-
运用 厨师版11.4.4-2

1 个答案:

答案 0 :(得分:3)

知道了。事实证明,错误是由于缓存文件夹(安装程序已下载的位置)位于Vagrant“网络共享文件夹”(c:\vagrant\cache\)中。例如,将其更改为c:\temp\cache可解决get_named_security_info()错误。

所以在我的chef-solo配置文件中:

file_cache_path "C:/temp/cache"