在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
答案 0 :(得分:3)
知道了。事实证明,错误是由于缓存文件夹(安装程序已下载的位置)位于Vagrant“网络共享文件夹”(c:\vagrant\cache\
)中。例如,将其更改为c:\temp\cache
可解决get_named_security_info()
错误。
所以在我的chef-solo配置文件中:
file_cache_path "C:/temp/cache"