2016-06-17 11 views
1

ARMテンプレートとDSCを使用してAzureにサーバーWindows 2012 R2を設定しようとしています。 DSCスクリプトはcChocoPackageInstallerを実行してdotnet4.6.1をインストールします(cChocoInstallerの実行後)。失敗DSC cChocoPackageInstallerを使用してChocoly経由でDotNet 4.6.1をインストールする

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' 

だから、物事のカップル:

  • ログファイルは過去ログインストーラ用に製造され...ので、それが成功したインストーラを起動しているようには見えません。
  • インストーラパッケージが、期待どおりの場所に確実にダウンロードされています。インストーラをこのディレクトリにダウンロードできたのに後でそれをアクセス/実行できない理由がわかりません。
  • RDPをボックスにインストールし、ローカル管理者として「choco install dotnet4.6.1」コマンドを実行すると、パッケージはエラーなしでインストールされます。
  • 私はchoco 0.9.10を実行していますが、0.9.9で同じ問題が発生しました
  • 代わりに/ q(かなり)モードで動作する新しいバージョンのdotnet4.6.1インストーラ(未承認)を実行しています/ passiveのパッシブモードでも同じ問題がありました。

いずれのアイデアもありがとうございます。ありがとう!

+0

チョコを少し使いましたが、なぜあなたの問題が発生しているのか分かりません。しかし、別の方法に興味があるなら、カスタムスクリプト拡張を使用して.netをインストールし、紺色の自動化dscスクリプトをインストールしました。あなたが望むなら、どちらか/両方の回答を投稿できますか? –

+0

こんにちは@EdRixon、もしあなたがDSCを使って4.6.1を直接インストールする方法があれば、それはすばらしいでしょう。注:私はGraniResource DSCモジュールを使ってcDotNetFrameworkも試しました。これは4.6で私にとってはうまくいったが、4.6.1で動作させることはできなかった。それは何らかの理由で私に爆発をもたらし、最終的な問題が何であるかをメッセージから区別できなかった。 4.6.1で動作するDSCソリューションをお持ちの場合、私はそれを見たいと思っています。 – swannee

+0

問題が何であるかは完全にはわかりませんが、ここでわかります。デバッグ/冗長出力を持つ完全なログファイルがあります。それをどこかのGistに入れてリンクすれば、何が間違っているのかを判断するのに役立ちます。また、問題を抱えて少しインタラクティブなヘルプが必要な場合は、https://gitter.im/chocolatey/chocolatey.orgにジャンプすることもできます(https://chocolatey.orgの右下に小さなチャットアイコンが表示されます)。 )。 – ferventcoder

答えて

0

はこれが最善の答えですが、これはプルを使用して((CustomScript ARM拡張子から直接起動)Chocolateyを介して、またはDSCを経由して、両方の作品とは言わない:MSFTはそれをしないサービスプロファイラサイト上でスクリプトを持っていますサーバとカスタム.Net 4.6.1用のDSCモジュール)のどちらかをARMテンプレートから起動すると、以下は私のchocolateyInstall.ps1からのものです。私は基本的には、チョコレートインストール機能に頼るのではなく、手動でインストールを行っています。これは4.534にこの手法を使用したthe following SO questionからのものです。

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、これは再起動が必要なので、展開中にVM上で何か他のことが起こっていると、競合が発生する可能性があります。

私が言ったように、あなたは望むならカスタムスクリプト拡張でそれを行うこともできます。

{ 
    "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

エド、答えてくれてありがとう、私の場合、AzureAutomationは使用していません。自分のホストしているDSCサーバー(azure VM上)です。私はすぐにそれを得るために私がしたことを投稿します。 – swannee

+0

ああokです。はい、設定はどちらにも気にしません=) –

+0

確かに、ちょっと別のDSCソース...これはホストDSCサーバーでも動作すると確信しています。下の私のソリューションが動作するように見えましたので、私はChocoを利用できるようにそうします。 – swannee

関連する問題