2017-02-17 1 views
2

J'ai un modèle de machine virtuelle qui déploie une extension DSC. Cela fonctionne correctement, mais ma configuration est en train de grandir, donc je l'ai reconfiguré pour utiliser une ressource composite et la republier vers le stockage blob avec Publish-AzureRmVMDscConfiguration.Utiliser une ressource composite personnalisée avec l'extension Azure DSC

J'ai vérifié que le fichier .ps1.zip dans le stockage BLOB contient mon module personnalisé et que le module est répertorié sous dscmetadata.json. Toutefois, lorsque je déploie, l'extension DSC échoue. Les journaux sous C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\2.17.0.0 révèlent la raison:

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

PSDesiredStateConfiguration \ node: le module 'xCustomResource' n'a pas pu être chargé. Pour plus d'informations, exécutez 'Import-Module xCustomResource'.

C: \ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.17.0.0 \ DSCWork \ AppServerDev.ps1.0 \ AppserverDev.ps1: 9 Char: 3

    noeud
  • "localhost"
  • ~~~~
    • CategoryInfo: ObjectNotFound: (xCustomResource \ xCustomResource: String) [PSDesiredStateConfiguration \ noeud], ParentContainsErrorRecordException
    • FullyQualifiedErrorId: CouldNotAutoLoadModule, PSDesiredSta teConfiguration \ noeud

Voici les bits correspondants de mon fichier de configuration:

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' 
       ) 
     } 
    } 
} 

L'exécution Get-Module -ListAvailable révèle que DankModule se trouve et je peux, de Powershell, exécutez Import-Module DankModule et il fonctionne comme prévu. Je suppose que la confusion vient de lui en essayant d'importer xCustomResource plutôt que DankModule mais mon dossier .ps1 sous C:\Packages\Plugins\Microsoft.Powershell.DSC\2.17.0.0\DSCWork dit

Import-Module "DankModule"

et non

Import-Module "xCustomType"

Pourquoi est-il essaye d'importer xCustomType plutôt que DankModule? Comment puis-je le faire trouver DankModule qui est disponible et contient xCustomType?

MISE À JOUR: Get-Module -ListAvailable montre DankModule est installé mais Get-DSCResource -Module DankModule ne retourne rien.

Répondre

1

Je ne suis pas sûr mais je pense que c'est une erreur de débutant de ma part parce que je n'ai aucune expérience dans la construction de modules PowerShell. J'utilisais this page ainsi que this one pour construire mon module et j'avais obtenu un fichier de module valide en utilisant New-ModuleManifest, j'avais la bonne structure de fichier mentionnée dans les deux, par exemple.

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 

mais je ne savais pas que j'avais un peu de peaufinage gauche. Je devais corriger la propriété RootModule à DankModule.psd1 pour ressembler à ceci:

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

Et aussi nécessaire d'ajouter à mon vide DankModule.psm1 une ligne référençant mon équivalent xCustomResource.schema.psm1:

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

C'est la seule ligne dans mon fichier .psm1 au niveau du module et tout fonctionne maintenant. J'ai également, à un moment donné, enlevé tous les \0 s de mes deux fichiers .psd1 mais maintenant je ne suis pas sûr si c'était strictement nécessaire.