Совершенно новый для 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"
}