Назад | Перейти на главную страницу

Установка веб-развертывания с конфигурацией желаемого состояния (DSC) без уведомления не выполняется

Совершенно новый для DSC, так что я действительно спотыкаюсь прямо сейчас. У меня есть базовая конфигурация, которая обеспечивает установку IIS, .NET 4.5 и MSMQ. Я работаю над настройкой нового экземпляра Windows 2012 R2 для поддержки наших приложений. В настоящее время наши приложения развертываются с помощью PowerShell поверх Web Deploy (артефакты создаются с помощью PSake / MSBuild в TeamCity).

Итак, следующий шаг, который я пытаюсь сделать с DSC, - это установить Web Deploy на целевом сервере. Это загрузка MSI, а не «Компонент Windows», который я могу просто установить.

Так у меня есть обычай Script в моем DSC, который пытается выполнить установку 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

Однако Web Deploy на сервере нигде не видно. (Я понимаю, что Get-Script и Test-Script нуждаются в доработке, но хотел уменьшить количество задействованных здесь переменных)

Есть идеи, почему это не удается? (но без явной ошибки?)

Поскольку вы используете DSC с файлом msi, я предлагаю использовать ресурс пакета. Затем вы можете убедиться, что он устанавливается вместо использования настраиваемого ресурса сценария. Обратите внимание, что имя и свойство Product 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"
}