# PowerShell DSC: Infrastructure as Code im Windows-Rechenzentrum

TL;DR / Management Summary Während wir DSC auf dem Client (Artikel 474) oft für einfache Settings nutzen, ist es auf dem Server die Basis für das Software-Defined Datacenter. Wir definieren ganze Server-Rollen (Webserver-Cluster, SQL-Always-On) als Code. Ein Senior Admin nutzt DSC, um den Configuration Drift zu eliminieren: Wenn ein Kollege manuell einen Dienst stoppt, startet DSC ihn innerhalb von 15 Minuten automatisch wieder.


# 1. Einführung & Enterprise-Architektur

Vom Skript zum Systemzustand.

Auf Serverebene nutzen wir primär die Pull-Architektur.


# 2. DSC Ressourcen für Server-Rollen

Bauen mit Modulen.

Die Standard-Ressourcen reichen oft nicht aus. Senior Admins nutzen die Community-Module:

# Beispiel: Hochverfügbarer Web-Knoten

Configuration WebNode {
    Import-DscResource -ModuleName xWebAdministration
    
    Node "SRV-WEB-01" {
        WindowsFeature IIS {
            Ensure = "Present"
            Name   = "Web-Server"
        }
        # App-Pool konfigurieren
        WebAppPool MyPool {
            Name   = "AppPool01"
            Ensure = "Present"
            State  = "Started"
        }
    }
}

# 3. Deep Dive: Configuration Drift Management

Der Kampf gegen manuelle Änderungen.

Der LCM Modus ApplyAndAutoCorrect ist das wichtigste Werkzeug für die Compliance.


# 4. Day-2 Operations: Secrets in DSC

Passwörter sicher übertragen.

Ein großes Risiko bei DSC sind MOF-Dateien, die Passwörter im Klartext enthalten könnten.


# 5. Troubleshooting & “War Stories”

Wenn der Pull-Server schweigt.

# Top 3 Fehlerbilder

  1. Symptom: “Consistency check failed… Resource not found”.

    • Ursache: Das benötigte PowerShell-Modul fehlt auf dem Client und der Pull-Server hat es nicht im Modules Ordner.
    • Lösung: Modul-Zipping (inklusive Checksummen-Datei .checksum) auf dem Pull-Server prüfen.
  2. Symptom: Unendliche Reboot-Schleife.

    • Ursache: Eine Ressource meldet nach jeder Änderung RequiresReboot = $true, aber der Zustand wird nie als “erledigt” markiert.
    • Lösung: LCM-Log Microsoft-Windows-Dsc/Operational prüfen, welche Ressource den Reboot fordert.
  3. Symptom: MOF-Datei lässt sich nicht kompilieren.

    • Ursache: Syntaxfehler im Configuration-Block oder fehlende Typ-Definitionen.

# “War Story”: Der “Auto-Rollback” Unfall

Ein Admin änderte ein DSC-Skript, um den Port eines internen Dienstes von 80 auf 8080 zu ändern. Er rollte es via Pull-Server aus. Das Problem: Die Firewall-GPO war noch nicht aktualisiert. Der Dienst startete auf 8080, war aber nicht mehr erreichbar. Die Rettung: Da wir DSC im Modus ApplyAndMonitor laufen ließen, bekamen wir sofort einen Alert im SCOM (Artikel 526). Wir konnten den Code-Change im Git (Artikel 420b) revertieren, und alle 50 Server schwenkten innerhalb von 15 Minuten automatisch auf den alten Port 80 zurück. Lehre: Infrastructure as Code braucht eine CI/CD-Pipeline mit integrierten Tests, bevor sie den Pull-Server erreicht.


# 6. Monitoring & Reporting

Der Compliance-Status.

# Azure Automation State Configuration

Wenn Sie hybride Infrastrukturen nutzen, ist Azure Automation der ideale Pull-Server.


# 7. Fazit & Empfehlung

DSC ist der Weg weg von der “Handarbeit” im Rechenzentrum.


# Anhang: Cheatsheet

Aufgabe Befehl
LCM Status prüfen Get-DscLocalConfigurationManager
Sync erzwingen Update-DscConfiguration -Wait -Verbose
Test gegen Soll-Zustand Test-DscConfiguration
MOF-Verschlüsselung Configuration ... { PSDscAllowPlainTextPassword = $false }

# Referenzen