DSC Resources not downloading from PullServer

Welcome Forums DSC (Desired State Configuration) DSC Resources not downloading from PullServer

This topic contains 4 replies, has 2 voices, and was last updated by

 
Participant
1 year, 6 months ago.

  • Author
    Posts
  • #69471

    Participant
    Points: 0
    Rank: Member

    Hi,
    I've setup my test HTTPS Pull Server and trying to configure test client. When I run get-dscconfiguration on the client I get error:

    PS C:\Windows\system32> Get-DscConfiguration -CimSession test-windows10
    Get-DscConfiguration : The PowerShell DSC resource MSFT_xRemoteFile from module xPSDesiredStateConfiguration,6.2.0.0 does not exist at the PowerShell 
    module path nor is it registered as a WMI DSC resource.
    At line:1 char:1
    + Get-DscConfiguration -CimSession test-windows10

    I have zipped the module with Publish-DSCModuleAndMof cmdled, so everything seems fine on pull server, hoever it seems that client is not downloading the module it needs and I can't identify the reason.

    My pull server config:

    configuration CreateHTTPSPullServer
    {
        param
        (
            [string[]]$ComputerName = 'localhost',
            
            [ValidateNotNullOrEmpty()]
            [string]$CertificateThumbPrint,
    
            [Parameter(Mandatory)]
            [ValidateNotNullOrEmpty()]
            [string]$Registrationkey
        )
        
        Import-DscResource -ModuleName xPSDesiredStateConfiguration
        Import-DscResource -ModuleName PSDesiredStateConfiguration
    
        Node $ComputerName
        {
            WindowsFeature DSCServiceFeature
            {
                Ensure ='Present'
                Name = 'DSC-Service' 
            }
    
            WindowsFeature IISConsole
            {
                Ensure = 'Present'
                Name = 'Web-Mgmt-Console'
            }
    
            xDscWebService PSDSCPullServer
            {
                Ensure = 'Present'
                EndpointName = 'PSDSCPullServer'
                Port = 8080
                PhysicalPath = "$env:SystemDrive\inetpub\wwwroot\PSDSCPullServer"
                CertificateThumbPrint = $CertificateThumbprint
                State = 'Started'
                ModulePath = "$env:ProgramFiles\WindowsPowerShell\DscService\Modules"
                ConfigurationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\Configuration"
                RegistrationKeyPath = "$env:ProgramFiles\WindowsPowerShell\DscService"
                AcceptSelfSignedCertificates = $false
                UseSecurityBestPractices = $true
                DependsOn = '[WindowsFeature]DSCServiceFeature'
            }
    
            File RegistrationKeyFile
            {
                Ensure = 'Present'
                Type = 'File'
                DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt"
                Contents = $Registrationkey
            }
        }
    }
    
    $CertificateThumbPrint = (Get-ChildItem Cert:\LocalMachine\My).Where{$_.FriendlyName -eq "DSCPullServer"}.Thumbprint
    
    #Generate MOF
    CreateHTTPSPullServer -OutputPath C:\DSCSTUFF\Configs\PullServer -ComputerName $env:COMPUTERNAME -CertificateThumbPrint $CertificateThumbPrint -Registrationkey xxx-xxx

    If I copy the module manually to the client, it applies the configuration successfully.

  • #69472

    Keymaster
    Points: 1,625
    Helping HandTeam Member
    Rank: Community Hero

    The error is telling you the client doesn't HAVE the module. What's the client's LCM configuration look like? Have you created a checksum file for the ZIP, on the pull server?

    • #69489

      Participant
      Points: 0
      Rank: Member

      Shouldn't it be downloading the missing module from Pull server if I have it ModuleName_ModuleVersion.zip in $env:ProgramFiles\WindowsPowerShell\DscService\Modules

      a checksum was created automatically when using Publish-DSCModuleAndMof:

      $ModuleList = @(
      "xPSDesiredStateConfiguration"
      )
      $MofSource = "C:\DSCSTUFF\Configs\TargetNodes"
      Publish-DSCModuleAndMof -ModuleNameList $ModuleList -Source $MofSource
      

      client LCM config:

      [DscLocalConfigurationManager()]
      configuration LCMMetaConfig
      {
          param
          (
              [Parameter(Mandatory=$true)]
              [ValidateNotNullOrEmpty()][string[]]
              $ComputerName,
      
              [Parameter(Mandatory=$true)]
              [ValidateNotNullOrEmpty()][string[]]
              $ConfigurationName
          )
      
          Node $ComputerName
          {
              Settings
              {
                  RefreshMode = 'Pull'
                  ConfigurationMode = 'ApplyAndAutoCorrect'
                  RebootNodeIfNeeded = $false
                  RefreshFrequencyMins = 30
                  ConfigurationModeFrequencyMins = 15
                  DebugMode = 'All'
      
              }
      
              ConfigurationRepositoryWeb PullServerConfig
              {
                  ServerURL = 'https://PullServer.domain.pri:8080/PSDSCPullServer.svc'
                  RegistrationKey = 'xxxxx-xxx...'
                  ConfigurationNames = $ConfigurationName
              }
      
              ReportServerWeb ReportServerConfig
              {
                  ServerURL = 'https://PullServer.domain.pri:8080/PSDSCPullServer.svc'
              }
          }
      }
      $ComputerName = @("test-windows10")
      $ConfigurationName = @("ClientConfig")
      
      # Create meta.mof files
      LCMMetaConfig -OutputPath C:\DSCSTUFF\Configs\TargetNodes -ComputerName $ComputerName -ConfigurationName $ConfigurationName
      
      # Send to computers LCM
      Set-DscLocalConfigurationManager -Path C:\DSCSTUFF\Configs\TargetNodes -Verbose
      

      client meta.mof:

      instance of MSFT_WebDownloadManager as $Alias00000000
      {
          ResourceId = "[ConfigurationRepositoryWeb]PullServerConfig";
          SourceInfo = "C:\\DSCSTUFF\\Scripts\\LCMMetadata.ps1::28::9::ConfigurationRepositoryWeb";
          ServerURL = "https://PullServer.domain.pri:8080/PSDSCPullServer.svc";
          RegistrationKey = "";
          ConfigurationNames = {"ClientConfig"};
      };
      
      instance of MSFT_WebReportManager as $Alias00000001
      {
          ResourceId = "[ReportServerWeb]ReportServerConfig";
          SourceInfo = "C:\\DSCSTUFF\\Scripts\\LCMMetadata.ps1::35::9::ReportServerWeb";
          ServerURL = "https://PullServer.domain.pri:8080/PSDSCPullServer.svc";
          RegistrationKey = "";
      };
      
      instance of MSFT_DSCMetaConfiguration
      {
          ConfigurationModeFrequencyMins = 15;
          RebootNodeIfNeeded = False;
          ConfigurationMode = "ApplyAndAutoCorrect";
          ActionAfterReboot = "ContinueConfiguration";
          RefreshMode = "Pull";
          RefreshFrequencyMins = 30;
          AllowModuleOverwrite = False;
          DebugMode = {"All"};
          LCMVersion = "2.0";
          LCMCompatibleVersions = {"1.0", "2.0"};
          LCMState = "Busy";
          ConfigurationDownloadManagers = {$Alias00000000};
          ResourceModuleManagers = {};
          ReportManagers = {$Alias00000001};
          StatusRetentionTimeInDays = 10;
          AgentId = "120CF76A-2865-11E7-ACC0-00155D063E0F";
          SignatureValidationPolicy = "NONE";
          SignatureValidations = {};
          MaximumDownloadSizeMB = 500;
      };
      
      instance of OMI_ConfigurationDocument
      {
          Version = "2.0.0";
          Author = "aurimas";
          GenerationDate = "04/25/2017 21:23:16";
          GenerationHost = PullServer";
          Name = "LCMMetaConfig";
          MinimumCompatibleVersion = "2.0.0";
          CompatibleVersionAdditionalProperties = {"MSFT_DSCMetaConfiguration:StatusRetentionTimeInDays"};
      };
      
  • #69490

    Keymaster
    Points: 1,625
    Helping HandTeam Member
    Rank: Community Hero

    Your LCM doesn't know where to pull from. You've configured a configuration (MOF) repository, but not a resource (ZIP) repository. You need a ResourceRepositoryWeb section.

  • #69528

    Participant
    Points: 0
    Rank: Member

    Oh I'm bad at reading documentation, also all that outdated info on the internet regarding dsc is confusing..
    My first node is getting configuration fine now, thanks!

The topic ‘DSC Resources not downloading from PullServer’ is closed to new replies.