PowerShell 4.0 und die Desired State Configuration (DSC) - Der LCM und die Autokorrektur

In meinem ersten Post zur Desired State Configuration (DSC) habe ich beschrieben wie man sich eine Beispiel DSC-Konfiguration für einen Webserver erstellen kann. Das einspielen einer Konfiguration via PowerShell ist eine Sache und die Überwachung dass der “Wunschzustand” auch so bleibt die Andere.

Bei PowerShell DSC übernimmt der Local Configuration Manager (kurz LCM) die Aufgabe des Konfigurierens und Überwachens. Standardmäßig ist der LCM so konfiguriert: Get-DscLocalConfigurationManager

image

“ApplyAndMonitor” heißt dabei, dass der LCM alle 30 Minuten überprüft ob die gegenwärtige Konfiguration mit der “Wunschkonfiguration” übereinstimmt – tut sie das nicht wird ein Eintrag im Log geschrieben. Weiter passiert erst mal nichts.

Möchte man dass der LCM erkannte Abweichungen von der DSC selbständig behebt / repariert so muss der ConfigurationMode auf “ApplyAndAutoCorrect” gesetzt werden.

Hier die Vorgehensweise:

1. Erstellen einer Configuration für den LCM (ähnlich zu einer DSC)

Configuration MyLCMConfig
{
Param([string]$ComputerName)
node ($ComputerName)
{
LocalConfigurationManager
{
ConfigurationMode = "ApplyAndAutoCorrect" # it will fix - reapply the DSC
ConfigurationModeFrequencyMins = 30 # there is no lower value
RebootNodeIfNeeded = 'True'
RefreshFrequencyMins = 15
}
}
}

und in der ISE ausführen.

2. Erzeugen der .meta.mof Datei für den LCM
Die nachfolgende Zeile ruft die LCM-Configuration auf und erzeugt eine *.meta.mof Datei pro Computer (hier localhost)

MyLCMConfig -OutputPath "C:\myDSC" -ComputerName localhost

3. Konfigurieren des LCM
Mit folgenden Befehl weisen wir den LCM auf dem angesprochenen Computer (*.meta.mof) an die Konfiguration zu verwenden.

Set-DscLocalConfigurationManager -Path "C:\myDSC"

PowerShell und DSC: Local Configuration Manager Setting ApplyAndAutoCorrect

Wenn ich nun im Falle meines Webserver nun einen Ordner lösche, erkennt LCM das nach 30min und stellt den Ordner wieder her. Pretty cool.