Desired State Configuration (DSC): Grundlagen und Funktionsweise

    Desired State Configuration (DSC)PowerShell 4.0 führte eine dekla­rative Erwei­terung zur Konfi­guration von System­ein­stel­lun­gen ein. Damit lassen sich nicht nur Windows und Linux, sondern auch Anwen­dungen wie SQL Server oder Share­Point an­passen. DSC kann GPOs und an­dere Deploy­ment-Tools ersetzen.

    Für verschiedene Deployment-Szenarien hat es sich eingebürgert, dass Admins ein so genanntes Golden Image erstellen, das bereits alle Rollen und Features für bestimmte Aufgaben enthält. Beispiele wären etwa der Einsatz von Windows Server als Web-Server oder Hyper-V-Host. Ein solcherart angepasstes Systemabbild wird dann auf die Zielrechner verteilt.

    Dynamische Anpassung des OS

    Darauf kann man beim Einsatz von DSC verzichten, weil  sie in der Lage ist, die notwendige Funktionalität während der Laufzeit hinzu­zufügen. Als Ausgangspunkt reicht ihr somit eine Standard­installation des OS von einer unmodi­fizierten ISO oder WIM.

    Neben dem dynamischen Aktivieren oder Entfernen von Komponenten konfiguriert DSC alle möglichen Einstellungen. Diese Aufgabe kommt traditionell den Gruppen­richtlinien zu, die GPOs in regel­mäßigen Intervallen auf Änderungen prüfen und sie auf ein laufendes System anwenden.

    Das DSC-Gegenstück zu den Client Side Extensions der Gruppen­richtlinien ist der so genannte Local Configuration Manager, der eine Konfiguration auf dem Zielrechner implementiert und überwacht. Im Unterschied zu den Group Policies lässt er sich über Push- und Pull-Mechanismen füttern.

    Konfiguration über das Web verteilen

    Für wenige Rechner reicht es aus, wenn man eine Konfiguration auf die Ziel-PCs kopiert und dort mit dem Cmdlet Start-DscConfiguration anwendet.

    DSC-Konfigurationen lassen sich über Push oder Pull auf die Zielsysteme anwenden.

    Für größere Umgebungen richtet man dagegen einen Pull-Server ein, von dem die betreffenden Systeme ihre Konfiguration regelmäßig abrufen. Dafür benötigt man auf der einen Seite einen spezifisch angepassten Web-Server, während man auf dem Client die DSC auf den Pull-Server ausrichten muss.

    Bedeutungsverlust für AD DS und GPOs

    Im Unterschied zu den Gruppen­richtlinien hängt die Desired State Configuration nicht von Domänen­diensten des Active Directory ab. Sie greifen somit auch auf Workgroup-Rechnern oder Nicht-Microsoft-Systemen wie Linux und lassen sich über die Cloud an jeden beliebigen Standort verteilen.

    Die Weichenstellung von Microsoft in Richtung DSC kann man am Beispiel Nano Server erkennen. Diese superschlanke Installations­variante unterstützt keine Gruppen­richtlinien mehr. Wer dort die exportierten lokalen Richtlinien eines Rechners nicht manuell auf einen anderen übertragen möchte, sollte zu den DSC greifen.

    Konfiguration erstellen

    Mit DSC erhielt PowerShell das neue Keyword configuration. Im Prinzip handelt es sich dabei um eine spezielle function, die wie gewohnt durch Ausführen des Scripts geladen wird. Wenn man sie anschließend aufruft, dann schreibt sie die im Script enthaltene Konfiguration in eine so genannte MOF-Datei. Diese wird dann auf die Zielsysteme übertragen.

    In der PowerShell_ISE kann man gleich mit einem vorgefertigten Skelett für eine Konfiguration starten.

    Innerhalb des configuration-Abschnitts legt man die gewünschten Einstellungen durch Einträge in der Form von Name = Wert fest. Damit man überhaupt weiß, welche Einstellungen und Werte man beispielsweise für das Einrichten lokaler Benutzer­konten oder das Schreiben von Registry-Einträgen verwenden kann, stellt DSC diese Informationen über so genannte Resources zur Verfügung.

    Wenn man so möchte, handelt es sich bei den Resources um das Gegenstück zu den ADMX-Dateien der Gruppen­richtlinien. Sie liegen aber nicht als XML-Dateien vor, sondern als PowerShell-Module. Deshalb lassen sich die Namen der Einstellungen in der PowerShell_ISE auch über IntelliSense automatisch vervollständigen.

    Get-DscResource gibt eine Liste aller in Windows enthaltenen Ressourcen aus.

    Zum Lieferumfang von Windows gehören nur ein paar Ressourcen, die man durch den Aufruf von Get-DscResource anzeigen kann. Möchte man den Inhalt einer bestimmten Ressource ausgeben, um die verfügbaren Einstellungen, ihren Datentyp und mögliche Werte zu ermitteln, gibt man im Fall von User

    Get-DscResource -Name "User" | Select-Object -ExpandProperty Properties

    ein.

    Get-DscResource zeigt hier die Einstellungen für die Ressource User an. Ensure darf die Werte Absent oder Present annehmen.

    Die meisten Ressourcen stehen online zur Verfügung und lassen sich über die OneGet-Funktionen auflisten, herunterladen und installieren. Wenn man mit

    Find-Module -Tag DSCResourceKit

    das erste Mal nach Einträgen im Resource Kit sucht, dann muss man auf Nachfrage von PowerShell einen eigenen Provider für diesen Zweck installieren. Ein weiteres Repository findet man auf Github.

    Das DSC Resource Kit enthält zahlreiche Module mit Einstellungen für unterschiedliche Komponenten und Anwendungen.

    Um etwa das Modul für Windows Defender zu installieren, würde man anschließend

    Install-Module -Name xDefender

    aufrufen und mit

    Get-DscResource -Name xMpPreference  | Select-Object -ExpandProperty Properties

    die darin enthaltenen Einstellungen anzeigen. Im Unterschied zu den integrierten Modulen muss man die selbst hinzu­gefügten Ressourcen mittels Import-DscResource explizit hinzufügen.

    Keine Kommentare