web-dev-qa-db-ja.com

必要な状態の構成(DSC)を使用したWeb配置のインストールがサイレントに失敗する

まったく新しいDSCなので、今は本当につまずきます。 IIS、.NET 4.5、およびMSMQがインストールされていることを確認する基本構成があります。アプリケーションをサポートするために、新しいWindows 2012R2インスタンスの構成に取り組んでいます。現在、アプリケーションはPowerShell over Web Deployを使用してデプロイされています(アーティファクトはTeamCityのPSake/MSBuildでビルドされます)。

したがって、DSCで実行しようとしている次のステップは、ターゲットサーバーにWeb配置をインストールすることです。これはMSIのダウンロードであり、単にインストールされていることを確認できる「Windows機能」ではありません。

そのため、DSCにカスタムScriptがあり、Web配置MSIファイルの無人インストールを実行しようとしています。スクリプト

Script InstallWebDeploy
{
    GetScript =
    {
        $false
    }
    SetScript =
    {
        $cmd = "MSIEXEC /a 'C:\Temp\WebDeploy_AMD64_en-US.msi' /passive" # have also tried /qn
        (Start-Process -FilePath "msiexec.exe" -ArgumentList "/a 'C:\Temp\WebDeploy_AMD64_en-US.msi' /passive" -Wait -Passthru).ExitCode
    }
    TestScript =
    {
        $false
    }
}

.mofを生成して使用した後の結果は、次のようになります。

VERBOSE: [CORAPP4]: LCM:  [ Start  Resource ]  [[Script]InstallWebDeploy]
VERBOSE: [CORAPP4]: LCM:  [ Start  Test     ]  [[Script]InstallWebDeploy]
VERBOSE: [CORAPP4]: LCM:  [ End    Test     ]  [[Script]InstallWebDeploy]  in 0.0000 seconds.
VERBOSE: [CORAPP4]: LCM:  [ Start  Set      ]  [[Script]InstallWebDeploy]
VERBOSE: [CORAPP4]:                            [[Script]InstallWebDeploy] Performing the operation "Set-TargetResource"
 on target "Executing the SetScript with the user supplied credential".
VERBOSE: [CORAPP4]: LCM:  [ End    Set      ]  [[Script]InstallWebDeploy]  in 1.0430 seconds.
VERBOSE: [CORAPP4]: LCM:  [ End    Resource ]  [[Script]InstallWebDeploy]
VERBOSE: [CORAPP4]: LCM:  [ End    Set      ]    in  4.4783 seconds.
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 4.214 seconds

ただし、WebDeployはサーバーのどこにも見えません。 (Get-ScriptとTest-Scriptを具体化する必要があることはわかっていますが、ここに含まれる変数の数を減らしたいと思っていました)

なぜこれが失敗しているのか考えはありますか? (しかし、明らかなエラーはありませんか?)

2
Matt

MsiファイルでDSCを使用しているので、パッケージリソースを使用することをお勧めします。その後、カスタムスクリプトリソースを使用する代わりに、インストールされていることを確認できます。名前と製品IDプロパティはパッケージと一致する必要があることに注意してください。インストールしたいパッケージに基づいた例を以下に示します。

パッケージリソースのドキュメントへのリンク: パッケージリソースMSDN

WindowsFeature WebManagementService
{
    Ensure = "Present"
    Name = "Web-Mgmt-Service"
}

Package WebDeploy
{
     Ensure = "Present"
     Path  = "$Env:SystemDrive\TestFolder\WebDeploy_AMD64_en-US.msi"
     Name = "Microsoft Web Deploy 3.5"
     LogPath = "$Env:SystemDrive\TestFolder\logoutput.txt"
     ProductId = "1A81DA24-AF0B-4406-970E-54400D6EC118"
     Arguments = "LicenseAccepted='0' ADDLOCAL=ALL"
}
4
Chris