Skip to content
This repository has been archived by the owner on Feb 24, 2021. It is now read-only.

dsc_registry generates InDesiredState = $false which forces to set entries on every puppet run #203

Closed
marcinbojko opened this issue Sep 29, 2016 · 10 comments
Labels
external The issue cannot be resolved within the DSC Resource Kit.

Comments

@marcinbojko
Copy link

  1. Description
    Setting any value in registry returns notify every time puppet agent launches. Dsc_registry returns " InDesiredState = $false" despite values being written correctly.
  2. Values for module:
tightvncpassword:
  dsc_key: HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server
  dsc_valuename: Password
  dsc_hex: true
  dsc_valuedata: 00 00 00 00 00 00 00
  dsc_valuetype: binary
  1. How to reproduce:
    use dsc_registry with values above.
  2. More data: dsc_registry generates notify event for every time puppet agent launches puppetlabs-toy-chest/puppetlabs-dsc#237
@kwirkykat
Copy link
Member

@marcinbojko We can't fix in-box resources (from PSDesiredStateConfiguration) here in the DSC Resource Kit, but I can at least let the team know about this bug so they can investigate.

To me this looks like a bug we had previously where the registry value being set to 0 with the binary data type caused the resource to think that it's value was actually null and not 0.
Do you know what WMF/PowerShell version this is running in?
Mayhaps it's only fixed in more recent versions.

I'm not sure if you can change the DSC resource or module being called since it looks like you are using Puppet, but this is confirmed fixed in the xRegistry resource in the xPSDesiredStateConfiguration module (which is part of the DSC Resource Kit).

@kwirkykat kwirkykat added the external The issue cannot be resolved within the DSC Resource Kit. label Sep 29, 2016
@marcinbojko
Copy link
Author

@kwirkykat - Thanks for the update.
About version - tested with WMF/Powershell 5. With 5.1 there is currently a serious bug with -Command and Ruby pipelining, so no test at all.

About DSC resource - I will ask people from Puppet.

@HemantMahawar
Copy link

@marcinbojko @kwirkykat Is this issue specific to setting the value through puppet run or when value data is set to 0 or this specific example? I couldn't repro it for the following example:

  • Check the value before setting it
Invoke-DscResource -Name Registry -Method Test -ModuleName PSDesiredStateConfiguration -Property @{Key = 'HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds'; ValueName = 'ConsolePrompting'; ValueData = @('True')}

InDesiredState
--------------
False
  • Set the value
Invoke-DscResource -Name Registry -Method Set -ModuleName PSDesiredStateConfiguration -Property @{Key = 'HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds'; ValueName = 'ConsolePrompting'; ValueData = @('True')}

RebootRequired
--------------
False
  • Check the value again (even when DSC process stops)
Invoke-DscResource -Name Registry -Method Test -ModuleName PSDesiredStateConfiguration -Property @{Key = 'HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds'; ValueName = 'ConsolePrompting'; ValueData = @('True')}

InDesiredState
--------------
True

PowerShell Version used to test

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14393.187
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14393.187
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Can you open a uservoice issue for the same, if not already done?

@marcinbojko
Copy link
Author

@HemantMahawar
Since PS 5.1 have serious issues with -Command and pipeline with ruby, it is not used in our environment.

Name                           Value
----                           -----
PSVersion                      5.0.10240.17113
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10011.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

And no, 0 values was changed by me from real password. And it doesn't matter if its zero or other value.

@marcinbojko
Copy link
Author

Debug: /Stage[main]/Win_manage/Dsc_registry[tightvncpassword]: The container Class[Win_manage] will propagate my refresh event
Debug: PowerShell Version: 5.0.10240.17113
Debug:
$script:ErrorActionPreference = 'Stop'
$script:WarningPreference     = 'SilentlyContinue'

function new-pscredential
{
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,
      ValueFromPipelineByPropertyName=$true)]
    [string]
    $user,

    [parameter(Mandatory=$true,
      ValueFromPipelineByPropertyName=$true)]
    [string]
    $password
  )

  $secpasswd   = ConvertTo-SecureString $password -AsPlainText -Force
  $credentials = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)
  return $credentials
}

$response = @{
  indesiredstate = $false
  rebootrequired = $false
  errormessage   = ''
}

$invokeParams = @{
  Name          = 'Registry'
  Method        = 'test'
  Property      = @{
    key = 'HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server'
    valuename = 'ControlPassword'
    valuedata = @('00 00 00 00 00 00 00 00')
    valuetype = 'binary'
    ensure = 'present'
    hex = $false
  }
  ModuleName = "PSDesiredStateConfiguration"
}

try{
    $result = Invoke-DscResource @invokeParams
}catch{
  $response.errormessage   = $_.Exception.Message
  return ($response | ConvertTo-Json -Compress)
}

# keep the switch for when Test passes back changed properties
switch ($invokeParams.Method) {
  'Test' {
    $response.indesiredstate = $result.InDesiredState
    return ($response | ConvertTo-Json -Compress)
  }
  'Set' {
    $response.indesiredstate = $true
    $response.rebootrequired = $result.RebootRequired
    return ($response | ConvertTo-Json -Compress)
  }
}

Debug: Waited 50 milliseconds...
Debug: Waited 50 milliseconds...
Debug: 2016-09-30 20:34:45 +0200 STDOUT> {"rebootrequired":false,"indesiredstate":false,"errormessage":""}

Debug: Wait object signaled
Debug: Waited 100 total milliseconds.
Debug: Dsc Resource returned: {"rebootrequired":false,"indesiredstate":false,"errormessage":""}

Debug: Dsc Resource Exists?: false
Debug: dsc_ensure: present
Debug: ensure: present
Debug:
$script:ErrorActionPreference = 'Stop'
$script:WarningPreference     = 'SilentlyContinue'

function new-pscredential
{
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,
      ValueFromPipelineByPropertyName=$true)]
    [string]
    $user,

    [parameter(Mandatory=$true,
      ValueFromPipelineByPropertyName=$true)]
    [string]
    $password
  )

  $secpasswd   = ConvertTo-SecureString $password -AsPlainText -Force
  $credentials = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)
  return $credentials
}

$response = @{
  indesiredstate = $false
  rebootrequired = $false
  errormessage   = ''
}

$invokeParams = @{
  Name          = 'Registry'
  Method        = 'set'
  Property      = @{
    key = 'HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server'
    valuename = 'ControlPassword'
    valuedata = @('00 00 00 00 00 00 00 00')
    valuetype = 'binary'
    ensure = 'present'
    hex = $false
  }
  ModuleName = "PSDesiredStateConfiguration"
}

try{
    $result = Invoke-DscResource @invokeParams
}catch{
  $response.errormessage   = $_.Exception.Message
  return ($response | ConvertTo-Json -Compress)
}

# keep the switch for when Test passes back changed properties
switch ($invokeParams.Method) {
  'Test' {
    $response.indesiredstate = $result.InDesiredState
    return ($response | ConvertTo-Json -Compress)
  }
  'Set' {
    $response.indesiredstate = $true
    $response.rebootrequired = $result.RebootRequired
    return ($response | ConvertTo-Json -Compress)
  }
}

Debug: Waited 50 milliseconds...
Debug: Wait object signaled
Debug: Waited 50 total milliseconds.
Debug: 2016-09-30 20:34:46 +0200 STDOUT> {"rebootrequired":false,"indesiredstate":true,"errormessage":""}

Debug: Create Dsc Resource returned: {"rebootrequired":false,"indesiredstate":true,"errormessage":""}

Notice: /Stage[main]/Win_manage/Dsc_registry[tightvncpasswordcontrol]/ensure: created�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

@marcinbojko
Copy link
Author

@kwirkykat @HemantMahawar
As @jpogran perfectly explained - puppetlabs-toy-chest/puppetlabs-dsc#237 (comment) - problem can be repaired with xRegistry instead of touching whole WMF.

@marcinbojko
Copy link
Author

May I ask why?

@kwirkykat
Copy link
Member

@marcinbojko This bug is external to the DSC Resource Kit since it deals with a built-in DSC resource and not one of the ones contained here. The closest resource we have here in the Kit (xRegistry) does not have this bug.

I left this issue open while you guys were still discussing it, but it is ultimately not a bug for the DSC Resource Kit.

@marcinbojko
Copy link
Author

I'll switch to xRegistry then, thanks @kwirkykat for leaving it open.

@marcinbojko
Copy link
Author

@kwirkykat - closing this issue, since it seems to be connected with specific sets of modules.
Thanks to other I've already closed xFirewall, then I am going to test xregistry for a while.
Thanks for help!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
external The issue cannot be resolved within the DSC Resource Kit.
Projects
None yet
Development

No branches or pull requests

3 participants