Chef WebPI cookbook无法在Azure中安装

时间:2015-04-18 22:07:51

标签: azure chef web-platform-installer

我使用Chef插件在Azure中设置了一个新的Win2012 VM,并将其连接到manage.chef.io。添加了一本使用WebPi手册安装ServiceBus及其依赖项的食谱。安装失败,并显示以下错误:

“Error opening installation log file. Verify that the specified log file location exists and is writable.”

根据2013年的博客文章https://nemetht.wordpress.com/2013/02/27/web-platform-installer-in-windows-azure-startup-tasks/

进行一些搜索后,看起来这在Azure中并不新鲜

它暂时破坏了文件夹上的禁用安全性,但我正在寻找更好的解决方案。

有什么想法吗?

更多日志输出 -

Started installing: 'Microsoft Windows Fabric V1 RTM'

 .  

Install completed (Failure): 'Microsoft Windows Fabric V1 RTM'

 .  

WindowsFabric_1_0_960_0 : Failed.
Error opening installation log file. Verify that the specified log file location exists and is writable.


DependencyFailed: Microsoft Windows Fabric V1 CU1


DependencyFailed: Windows Azure Pack: Service Bus 1.1

 .  
 .. 




Verifying successful installation...


Microsoft Visual C++ 2012 SP1 Redistributable Package (x64) True


Microsoft Windows Fabric V1 RTM                    False


    Log Location: C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Web Platform Installer\logs\install\2015-05-11T14.15.51\WindowsFabric.txt


Microsoft Windows Fabric V1 CU1                    False


Windows Azure Pack: Service Bus 1.1                False


Install of Products: FAILURE
STDERR: 
---- End output of "WebpiCmd.exe" /Install /products:ServiceBus_1_1 /suppressreboot /accepteula /Log:c:/chef/cache/WebPI.log ----
Ran "WebpiCmd.exe" /Install /products:ServiceBus_1_1 /suppressreboot /accepteula /Log:c:/chef/cache/WebPI.log returned -1

2 个答案:

答案 0 :(得分:4)

厨师联系人(感谢Bryan!)帮助我更好地理解了这个问题。某些WebPI程序包不尊重提供给WebPIcmd.exe的显式日志路径。作者应该修复程序包以在设置时使用提供的日志路径。所以选项成了:

  • 让作者修复软件包
  • 以具有访问权限的其他用户身份在新的计划任务中运行Chef 到AppData文件夹
  • 编辑食谱以执行/取消执行注册表编辑,以暂时将AppData文件夹移动到系统的位置 用户有权访问。在我的自定义食谱或叉子WebPI 食谱。

显然,等待作者(在这种情况下是微软)修复软件包不会很快发生。

更改Azure VM的运行方式如果整个想法是在配置时提供配置并且它正常工作,则没有意义。另外,更改默认设置可能会产生意想不到的后果,并将我们置于非标准环境中。

在短期内,我决定改变我的自定义食谱中的注册表。

registry_key 'HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' do
    values [{
        :name => "Local AppData",
        :type => :expand_string,
        :data => "%~dp0appdata"
        }]
        action :create
end
webpi_product 'ServiceBus_1_1' do
    accept_eula true
    action :install
end
webpi_product 'ServiceBus_1_1_CU1' do
    accept_eula true
    action :install
end
registry_key 'HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' do
    values [{
        :name => "Local AppData",
        :type => :expand_string,
        :data => '%%USERPROFILE%%\AppData\Local'
        }]
end

此更改也可以在WebPI cookbook中完成,以便为所有依赖的cookbook修复此问题。在WebPI团队响应框架的功能请求以验证软件包是否遵循日志路径之前,我决定不这样做。

http://forums.iis.net/t/1225061.aspx?WebPI+Feature+Request+Validate+product+package+log+path+usage

请继续回复此主题以尝试让团队帮助防范此常见程序包问题。

答案 1 :(得分:0)

这是POWERSHELL

的解决方案

我在创建 VMSS VM 期间安装“Service Fabric SDK”时遇到了同样的错误。还使用了系统用户。

问题:当我使用我的“管理员”用户连接 RDP 并运行相同的程序时,它起作用了。

解决方法:如上更改注册表项,安装并重新设置

这是我使用“powershell”的解决方案

我在 %TEMP% 文件夹中安装了 2 个 .reg 文件。内容是旧的和新的导出键/值

  • plugin-sf-SDK-temp.reg
Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Local AppData"=hex(2):25,00,54,00,45,00,4d,00,50,00,25,00,00,00
  • plugin-sf-SDK-orig.reg
Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Local AppData"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,\
  49,00,4c,00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,\
  00,4c,00,6f,00,63,00,61,00,6c,00,00,00

将以下代码集成到您的自定义 powershelgl 脚本中:

Write-Output "Reset LocalApp Folder to TEMP"
Start-Process "$($env:windir)\regedit.exe" `
   -ArgumentList "/s", "$($env:TEMP)\plugin-sf-SDK-temp.reg"


## replace the following lines with your installation - here my SF SDK installation via WebWPIcmd
Write-Output "Installing /Products:MicrosoftAzure-ServiceFabric-CoreSDK"
Start-Process "$($env:programfiles)\microsoft\web platform installer\WebPICMD.exe" `
    -ArgumentList '/Install', `
       '/Products:"MicrosoftAzure-ServiceFabric-CoreSDK"', `
       '/AcceptEULA', "/Log:$($env:TEMP)\WebPICMD-install-service-fabric-sdk.log" `
    -NoNewWindow -Wait `
    -RedirectStandardOutput "$($env:TEMP)\WebPICMD.log" `
    -RedirectStandardError "$($env:TEMP)\WebPICMD.error.log" 


Write-Output "Reset LocalApp Folder to ORIG"
Start-Process "$($env:windir)\regedit.exe" `
   -ArgumentList "/s", "$($env:TEMP)\plugin-sf-SDK-orig.reg"