2016-06-17 2 views
1

Я пытаюсь настроить сервер Windows 2012 R2 в Azure с помощью шаблонов ARM и DSC. Сценарий DSC запускает cCococPackageInstaller для установки dotnet4.6.1 (после запуска cCococInstaller). Это выглядит так:Неисправность Установка DotNet 4.6.1 через Chocolatey с использованием DSC cChocoPackageInstaller

cChocoInstaller Choco 
{ 
    InstallDir = "c:\choco" 
} 

cChocoPackageInstaller DotNet461 
{    
    Name = "dotnet-461" 
    DependsOn = "[cChocoInstaller]Choco" 
} 

Установщик DotNet загружен, но в конечном итоге он не работает, когда он запущен. Журнал выглядит следующим образом (я выписал только ошибки здесь).

2016-06-17 13:05:52,001 [DEBUG] - Running 'Start-ChocolateyProcessAsAdmin' with exeToRun:'C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\dotnet-461\4.6.01055.006\NDP461-KB3102436-x86-x64-AllOS-ENU.exe', statements: '/q /norestart /log "C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\net461.log" ' 
2016-06-17 13:05:52,001 [DEBUG] - Elevating Permissions and running ["C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\dotnet-461\4.6.01055.006\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" /q /norestart /log "C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\net461.log" ]. This may take a while, depending on the statements. 
2016-06-17 13:05:52,110 [DEBUG] - Setting RunAs for elevation 
2016-06-17 13:05:53,487 [INFO ] - The application cannot find one of its required files, possibly 
2016-06-17 13:05:53,487 [INFO ] - 
2016-06-17 13:05:53,487 [INFO ] - because it was unable to create it in the folder. Please make 
2016-06-17 13:05:53,487 [INFO ] - 
2016-06-17 13:05:53,487 [INFO ] - sure that the folder in which this application was downloaded is 
2016-06-17 13:05:53,487 [INFO ] - 
2016-06-17 13:05:53,487 [INFO ] - accessible and not read-only. 
2016-06-17 13:05:53,487 [INFO ] - 
2016-06-17 13:05:53,503 [DEBUG] - Command ["C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\dotnet-461\4.6.01055.006\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" /q /norestart /log "C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\net461.log" ] exited with '3'. 
2016-06-17 13:05:53,518 [ERROR] - ERROR: Running ["C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\dotnet-461\4.6.01055.006\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" /q /norestart /log "C:\Windows\system32\config\systemprofile\AppData\Local\Temp\chocolatey\net461.log" ] was not successful. Exit code was '3'. See log for possible error messages. 
2016-06-17 13:05:53,518 [DEBUG] - Built-in PowerShell host called with ['[System.Threading.Thread]::CurrentThread.CurrentCulture = '';[System.Threading.Thread]::CurrentThread.CurrentUICulture = ''; & import-module -name 'c:\choco\helpers\chocolateyInstaller.psm1'; & 'c:\choco\helpers\chocolateyScriptRunner.ps1' -packageScript 'c:\choco\lib\dotnet-461\tools\chocolateyInstall.ps1' -installArguments '' -packageParameters '''] exited with '3'. 
2016-06-17 13:05:53,534 [DEBUG] - Calling command ['"C:\Windows\System32\shutdown.exe" /a'] 
2016-06-17 13:05:53,549 [DEBUG] - Command ['"C:\Windows\System32\shutdown.exe" /a'] exited with '1116' 

Так несколько вещей:

  • файл журнала не производится для инсталлятора DotNet ... так это не выглядит, как он успешно запускает программу установки.
  • Пакет установщика определенно загружен в ожидаемое местоположение. Не уверен, почему он сможет загрузить установщик в этот каталог, но потом не будет его запускать/запускать.
  • Если я RDP на поле и запустил команду «choco install dotnet4.6.1» в качестве локального администратора, пакет устанавливается без ошибок.
  • Теперь я запускаю choco 0.9.10, но имел ту же проблему с 0.9.9
  • Я запускаю более новую версию установщика dotnet4.6.1 (неутвержденный), который работает в режиме/q (довольно) of/passive. У меня была такая же проблема в пассивном режиме.

Любые идеи приветствуются. Благодаря!

+0

Хотя я немного использовал choco, я не знаю достаточно, чтобы узнать, почему возникает ваша проблема. Но, если вас интересует другой метод, я установил .net с расширением собственного скрипта и с помощью сценария dsc автоматизации azure.Я могу опубликовать ответ с любой из них, если хотите? –

+0

Привет @EdRixon, если у вас есть способ установить 4.6.1, используя DSC напрямую, это будет потрясающе. Примечание. Я также пробовал cDotNetFramework с использованием модулей DSC GraniResource. Хотя это работало для меня с 4.6, мне не удалось заставить его работать на 4.6.1 ... по какой-то причине он продолжал бомбить меня, и я не мог отличить от сообщений, какова была последняя проблема. Если у вас есть решение DSC, которое работает для 4.6.1, я бы с удовольствием его увидел. – swannee

+0

Не совсем уверен, в чем проблема, но вот как мы это выясняем. Существует полный файл журнала с выводом debug/verbose. Если вы помещаете это в Gist где-нибудь и ссылаетесь на него, это поможет определить, что может быть неправильным. Вы также можете перейти на https://gitter.im/chocolatey/chocolatey.org, когда вы столкнетесь с проблемами и хотите немного более интерактивную помощь (это маленький значок чата в правом нижнем углу на https://chocolatey.org). – ferventcoder

ответ

0

Не говорю, что это лучший ответ возможно, но это работает как через шоколадным (запускается непосредственно с расширением CustomScript ARM) или с помощью DSC (с помощью тяги сервер и пользовательский DSC-модуль для .Net 4.6.1), когда либо инициируется из шаблона ARM. Ниже из моего chocolateyInstall.ps1. Я в основном вручную выполняю установку вместо того, чтобы полагаться на шоколадную функциональность установки. Это произошло от the following SO question, который использовал этот подход для 4.5.2.

Function IsInstalled { 
    $ver = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release 
    return (!($ver -eq $null) -and ($ver -ge 394254)) 
} 

if (IsInstalled) { 
    Write-Host "Microsoft .NET Framework 4.6.1 or later is already installed" 
} 
else { 
    $SourceURI = "https://download.microsoft.com/download/3/5/9/35980F81-60F4-4DE3-88FC-8F962B97253B/NDP461-KB3102438-Web.exe" 
    $FileName = $SourceURI.Split('/')[-1] 
    $BinPath = Join-Path $env:SystemRoot -ChildPath "Temp\$FileName" 

    if (!(Test-Path $BinPath)) 
    { 
     Invoke-Webrequest -Uri $SourceURI -OutFile $BinPath 
    } 

    write-verbose "Installing .Net 4.6.1 from $BinPath" 
    write-verbose "Executing $Binpath /q /norestart" 
    Sleep 5 
    Start-Process -FilePath $BinPath -ArgumentList "/q /norestart" -Wait -NoNewWindow    
    Sleep 5 
    Write-Verbose "DotNet 4.6.1 Install completed" 
} 
+0

Я должен отметить, что последняя версия Chocolatey 0.9.10.3 разрешила эту проблему. – swannee

2

Извините о задержке. Поэтому вам нужно иметь учетную запись автоматизации. Я изменил мой сценарий развертывания шаблона для создания учетной записи автоматизации, а затем с помощью командлета Get-AzureRmAutomationRegistrationInfo, я получить первичный ключ и конечную точку, как так:

$RegistrationInfo = Get-AzureRmAutomationRegistrationInfo ` 
    -ResourceGroupName $ResourceGroupName ` 
    -AutomationAccountName $AccountName 

New-AzureRmResourceGroupDeployment ` 
    -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) ` 
    -ResourceGroupName $ResourceGroupName -TemplateFile $TemplateFile ` 
    -TemplateParameterFile $TemplateParametersFile ` 
    # extra params here 
    -RegistrationKey ($RegistrationInfo.PrimaryKey | ConvertTo-SecureString -AsPlainText -Force) ` 
    -RegistrationUrl $RegistrationInfo.Endpoint ` 
    -AutomationAccountName $AccountName 

Тогда в самом шаблоне, у вас есть счет автоматизации там (имя из param), а также как дочерние ресурсы этого, конфигурацию и компиляцию.

См. here для части учетной записи автоматизации шаблона и конфигурации. (В последнее время я делал то же самое с проблемами, но это работает в конце.) Как вы можете видеть, конфигурация - это скрипт, который загружает установщик .net и устанавливает его. FYI, для этого требуется перезагрузка, поэтому, если во время развертывания у вас есть что-то еще, вы можете столкнуться с конфликтами.

Как я уже сказал, вы также можете сделать это с помощью специального расширения сценария, если хотите. Msft есть скрипт на сервис профилировщика сайт, который делает это:

{ 
    "properties": { 
     "publisher": "Microsoft.Compute", 
     "type": "CustomScriptExtension", 
     "typeHandlerVersion": "1.7", 
     "autoUpgradeMinorVersion": false, 
     "settings": { 
      "fileUris": [ "https://serviceprofiler.azurewebsites.net/content/downloads/InstallNetFx46.ps1" ], 
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File InstallNetFx46.ps1" 
     }, 
     "forceUpdateTag": "RerunExtension" 
    }, 
    "name": "CustomScriptExtensionInstallNet46" 
} 
+0

Ed, спасибо за ответ, в моем случае я не использую AzureAutomation, только мой собственный размещенный сервер DSC (на лазурном vm). Я опубликую то, что я сделал, чтобы заставить его работать в ближайшее время. – swannee

+0

Ах прохладно. Yea config не возражает ни один из способов =) –

+0

Несомненно, просто другой источник DSC ... Я уверен, что это также будет работать с размещенным сервером DSC. Мое решение ниже показалось, что я работаю, поэтому я иду таким образом, чтобы я мог использовать Choco. – swannee

Смежные вопросы