# 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.
- Pull Server: Ein zentraler HTTPS-Endpunkt, der MOF-Dateien (Konfigurationen) und Module bereitstellt.
- LCM (Local Configuration Manager): Der Agent auf dem Server, der regelmäßig prüft: “Habe ich die aktuellste Konfiguration?”.
# 2. DSC Ressourcen für Server-Rollen
Bauen mit Modulen.
Die Standard-Ressourcen reichen oft nicht aus. Senior Admins nutzen die Community-Module:
- xWebAdministration: Für komplexe IIS-Setups.
- xActiveDirectory: Zum automatisierten Aufbau von DCs.
- xStorage: Für die Partitionierung und Formatierung von SAN-LUNs.
# 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.
- Compliance-Audit: DSC kann Berichte generieren, welche Server vom Soll-Zustand abweichen.
- Self-Healing: Automatische Korrektur ohne Admin-Intervention.
# 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.
- Lösung: Nutzen Sie Zertifikatsbasierte Verschlüsselung.
- Technik: Der Admin verschlüsselt das Secret mit dem Public-Key des Zielservers. Nur der lokale LCM kann es mit seinem Private-Key im TPM (Artikel 479) entschlüsseln.
# 5. Troubleshooting & “War Stories”
Wenn der Pull-Server schweigt.
# Top 3 Fehlerbilder
-
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
ModulesOrdner. - Lösung: Modul-Zipping (inklusive Checksummen-Datei
.checksum) auf dem Pull-Server prüfen.
- Ursache: Das benötigte PowerShell-Modul fehlt auf dem Client und der Pull-Server hat es nicht im
-
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/Operationalprüfen, welche Ressource den Reboot fordert.
- Ursache: Eine Ressource meldet nach jeder Änderung
-
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.
- Dashboard: Zeigt auf einer Weltkarte, welche Server “Compliant” sind und welche Fehler haben.
# 7. Fazit & Empfehlung
DSC ist der Weg weg von der “Handarbeit” im Rechenzentrum.
- Empfehlung: Fangen Sie klein an. Automatisieren Sie zuerst einfache Dinge wie NTP-Settings oder lokale Admin-Gruppen.
- Zukunft: Microsoft verschiebt den Fokus zunehmend auf DSC v3, das plattformübergreifend (Windows & Linux) und ohne .NET Abhängigkeit funktioniert.
# 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 } |