Skip to main content

Desired State Configuration - ConfigurationData

PowershellContact

Update 12.10.2016 - More functions added to repro some while ago

This module has been laying dormant in my BitBucket repro. Looks like people are realizing that DSC is about to become a thing. Need some feedback if this is a way of handling your Configuration data in DSC. I will publish it to the PowershellGallery if people find it useful. Should probably do a code review as well since this was written over 2 years ago :-0.

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:

image

Yes, Beelzebub has joined the party, pure evil. Just to explain ConfigurationData in Desired State Configuration:

It consists of two main elements:
  1. AllNodes (an array of all you nodes you want to configure)
  2. NonNodeData (an hashtable of properties that may or may not be related to any specific node)
So instead of the “rubbish” configdata variable above, we are going to do the same like this:

Import-Module DSCconfigdata

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 "8.8.8.8"
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:

image


image

image

The module have these methods:

image

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:

image

So the module is still in development, however if you are keen on trying it, hit me up on twitter or post a comment.

Cheers

Comments

Popular posts from this blog

Monitoring Orchestrator runbook events from Operations Manager

Today I will follow up on my colleague’s post Mr ITblog (Knut Huglen) about monitoring Orchestrator Runbook events.  He has build a nice double up SNMP loopback feature that does self monitoring in Orchestrator resulting in entries written to a special Windows Eventlog. Now we need to raise alerts in SCOM when one of his runbooks fails or sends a platform event, who knows there could be trouble lurking in his paradise.

We are not going to do anything fancy, however these are the steps we will be focusing on today:
Create a Management Pack for our customizations Create rules that collects the events from the orchestrator serverOff we go then and fire up the SCOM console and a powershell window. First we create a MP, I am going to use powershell to do this, however you may use the SCOM console as well (Administration – ManagementPacks – Action: Create Management Pack):



Import the Management Pack into SCOM and move on to the Authoring section in the SCOM console. Create a new rule:



Give the…

Powershell – Log like you mean it

How do you do logging in powershell? Why should you do logging? What should you log? Where do you put your log? How do you remove your log? How do you search your log? All important questions and how you answer then depends upon what your background is like and the preferences you have. This will be a 2 part blog post and this is part 1.


Why should you log?

Well it is not mandatory, however I have 2 reasons:
Help with debugging a script/module/functionSelf documenting script/module/function
Firstly; Do you know any program that does not contain any bugs? Working with IT for the last 2 decades, I cannot name one. When you create scripts/modules/functions, you will create bugs, that is where they live and try to make your life a living mess.

Secondly: Adding a little extra information to your logging will make them self documenting. Do you like writing documentation? Well I normally am not fond of it and use logging while debugging to get two birds with one stone.


What should you log?

Anyt…

Hybrid cloud – the missing automation link?

Fair warning: I am probably off on a rant here about the cloud and how “everything is connected” in terms of automation. This post is going to discuss the recent offensive from Microsoft and their vision about a Hybrid Cloud. I will not do a deep dive into any technical aspects, however do a more overall discussion about the vision and how recent changes brought to us by Windows Server 2012 R2 (and windows management framework 4) can affect us going forward.

Background – What do we have and what has happened?
From “nowhere” Azure as a PaaS was born. A while before that people started talking about “The Cloud” and things started to move about in terms of Public (The Cloud) and Private Cloud (“On-Premises or On-Prem as it is called nowadays) . Moving forward a bit Microsoft started to launch their vision about Hybrid Cloud, a nice mix of the “best” of the Public and Private cloud. This was even supported with the release of the System Center 2012 suite and together with Windows Server 201…