InvokeDSC icon indicating copy to clipboard operation
InvokeDSC copied to clipboard

PowerShell module for Invoking DSC from json

Build status

InvokeDSC

InvokeDSC is a JSON based DSL for creating and managing infrastructure with DSC resources.

Overview

Allows you to declaratively define your infrastructure within JSON configuration documents. InvokeDSC converts those json documents to PSCustomObjects that Invoke-DSCResource can consume. By doing this it removes the need for PowerShell configuration documents and the .mof documents it generates. Which results in more flexibility and removes the need of a single .mof document that declares the end state of your infrastructure.

test run output

JSON Configuration File

{
    "Modules":{
        "xPSDesiredStateConfiguration":"8.0.0.0"
    },
   "DSCResourcesToExecute":{
        "DevOpsGroup":{
            "dscResourceName":"xGroup",
            "GroupName":"DevOps",
            "ensure":"Present"
        }
   }
}

Commands

  • ConvertTo-Dsc
  • Invoke-Dsc
  • Invoke-DscConfiguration

Examples

Invoke-DscConfiguration

Invoke-DscConfiguration -Path 'c:\config.json'
$config = @"
{
    "Modules":{
        "xPSDesiredStateConfiguration":"8.0.0.0"
    },
   "DSCResourcesToExecute":{
        "DevOpsGroup":{
            "dscResourceName":"xGroup",
            "GroupName":"DevOps",
            "ensure":"Present"
        }
   }
}
"@

Invoke-DscConfiguration -InputObject $config

ConvertTo-Dsc

ConvertTo-Dsc -Path 'c:\json\example.json'
$config = @"
{
    "Modules":{
        "xPSDesiredStateConfiguration":"8.0.0.0"
    },
   "DSCResourcesToExecute":{
        "DevOpsGroup":{
            "dscResourceName":"xGroup",
            "GroupName":"DevOps",
            "ensure":"Present"
        }
   }
}
"@

ConvertTo-Dsc -InputObject $config

Invoke-Dsc

$r = ConvertTo-Dsc -Path 'c:\config.json'
Invoke-Dsc -Resource $r

Credits

POSHOrigin by Brandon Olin

Ansible-win_dsc by Trond Hindenes

Steven Murawski

Jaigene Kang