Update 19.04.2014 - Module (beta) added to bitbucket here
When you start to work with DSC, you quickly realize that separating the infrastructure from the configuration is a huge benefit and somewhat of a curse. You start to read blogs and webposts explaining how you can specify the configurationdata to you configuration, however for the people that does not speak powershell (yes they are out there) and/or still don’t like it, it looks kind of “untidy”. Example:
Yes, Beelzebub has joined the party, pure evil. Just to explain ConfigurationData in Desired State Configuration:
It consists of two main elements:
- AllNodes (an array of all you nodes you want to configure)
- NonNodeData (an hashtable of properties that may or may not be related to any specific node)
Add-DSCnode -Name Server1
Add-DSCnode -Name Server2
Add-DSCproperty -Name WinFeatures
Add-DSCproperty -Name SourceRoot
Add-DSCproperty -Name WebDirectory
Add-DSCproperty -Name RecurseValue
(Get-DSCNode -Name Server1).Role = "web"
(Get-DSCNode -Name Server1).WinFeatures = "web-server"
(Get-DSCNode -Name Server1).SourceRoot = "\\Server106\source\presentation\"
(Get-DSCNode -Name Server1).WebDirectory = "c:\inetpub\wwwroot\"
(Get-DSCNode -Name Server1).RecurseValue = $false
Add-DSCproperty -NonNodeData -Name DNSIPAddress -Value "188.8.131.52"
Add-DSCproperty -NonNodeData -Name DNSName -Value "resolve.contoso.com"
Add-DSCproperty -NonNodeData -Name SubnetMask -Value "255.255.255.0"
Add-DSCproperty -NonNodeData -Name DNSIPAddress -Value "contoso.com"
Should give you something like this:
The module have these methods:
The module also exports a variable called $configData. You may also use the function Get-DSCConfigData, the result is the same.
One other nice feature is to allow clear text passwords in you MOF-files. Just use the Set-AllowClearTextPassword function to enable this (for all nodes or specific nodes).
Of course if you just want to inspect the configuration for a node, use this:
So the module is still in development, however if you are keen on trying it, hit me up on twitter or post a comment.