2017-02-17 33 views
2

У меня есть шаблон виртуальной машины, который развертывает расширение DSC. Он работает нормально, но моя конфигурация растет, поэтому я реорганизовал его для использования составного ресурса и переиздал его для хранения памяти с помощью Publish-AzureRmVMDscConfiguration.Использовать пользовательский составной ресурс с расширением Azure DSC

Я проверил, что файл .ps1.zip в хранилище blob содержит мой пользовательский модуль и что модуль указан в dscmetadata.json. Однако при развертывании расширение DSC не выполняется. Бревна под C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\2.17.0.0 выявить причину:

C: \ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.17.0.0 \ Bin .. \ DSCWork \ AppServerDev.ps1.0 \ AppserverDev.ps1

PSDesiredStateConfiguration \ node: модуль 'xCustomResource' может не загружаться. Для получения дополнительной информации запустите 'Import-Module xCustomResource'.

В C: \ Пакеты \ Плагины \ Microsoft.Powershell.DSC \ 2.17.0.0 \ DSCWork \ AppServerDev.ps1.0 \ AppserverDev.ps1: 9 знаков: 3

  • узел "локальный"
  • ~~~~
    • CategoryInfo: ObjectNotFound: (xCustomResource \ xCustomResource: String) [PSDesiredStateConfiguration \ узел], ParentContainsErrorRecordException
    • FullyQualifiedErrorId: CouldNotAutoLoadModule, PSDesiredSta teConfiguration \ узел

Вот соответствующие биты моего файла конфигурации:

configuration AppServerDev 
{ 
    param($environment) 
    Import-DscResource -ModuleName 'PSDesiredStateConfiguration' 
    Import-DscResource -ModuleName 'SaaSModule' 

    node "localhost" 
    { 
     LocalConfigurationManager 
     { 
      RebootNodeIfNeeded = $true 
      ConfigurationMode = "ApplyAndAutoCorrect" 
      ConfigurationModeFrequencyMins = 1440 
     } 
     xDCTPlatformVM VM { 
      OctopusParametersFile = $environment 
      ChocolateyPackages = @(
       'googlechrome', 
       'notepadplusplus', 
       '7zip', 
       'microsoftwse', 
       'octopusdeploy.tentacle', 
       'sqlserver-cmdlineutils' 
       ) 
     } 
    } 
} 

Запуск Get-Module -ListAvailable показывает, что DankModule найден, и я могу с помощью PowerShell, запустите Import-Module DankModule и он работает как и ожидалось. Я предполагаю, что путаница исходит от него, пытаясь импортировать xCustomResource, а не DankModule но мой файл .ps1 под C:\Packages\Plugins\Microsoft.Powershell.DSC\2.17.0.0\DSCWork говорит

Import-Module "DankModule"

и не

Import-Module "xCustomType"

Почему она пытается импортировать xCustomType а не DankModule? Как мне найти DankModule, который доступен и содержит xCustomType?

ОБНОВЛЕНИЕ: Get-Module -ListAvailable показаны DankModule, но Get-DSCResource -Module DankModule ничего не возвращает.

ответ

1

Я не уверен, но я думаю, что это ошибка новобранец с моей стороны, потому что у меня нет опыта в создании модулей powershell. Я использовал this page, а также this one для создания моего модуля, и я получил действительный файл модуля с помощью New-ModuleManifest, у меня была правильная файловая структура, упомянутая в обоих из них, например.

C:\Program Files\WindowsPowerShell\Modules\ 

DankModule 
    DankModule.psd1 
    DankModule.psm1 
    DSCResources 
     xCustomResource 
      xCustomResource.psd1 
       RootModule = ‘xCustomResource.schema.psm1' 
      xCustomResource.schema.psm1 
       Configuration, no Node block 

но я не понимал, что у меня была какая-то настройка. Мне нужно исправить RootModule свойства в DankModule.psd1 выглядеть следующим образом:

RootModule = 'C:\Program Files\WindowsPowerShell\Modules\DankModule\DankModule.psm1' 

А также нужно добавить к моей пустой DankModule.psm1 строки ссылка моему xCustomResource.schema.psm1 эквивалента:

. .\DSCResources\xCustomResource\xCustomResource.schema.psm1 

Это единственная строка в моем файле .psm1 на уровне модуля, и теперь все работает. Я также в какой-то момент удалил все файлы \0 из обоих файлов .psd1, но теперь я не уверен, что это было строго необходимо.