PowerShell Desired State Configuration (DSC)
Desired State Configuration (DSC) ist eine Funktion in PowerShell 4.0 und höher, die Administratoren hilft, die Konfiguration von Windows- und Linux-Betriebssystemen (OS) zu automatisieren.
DSC bietet eine Reihe von PowerShell-Spracherweiterungen, Cmdlets und einen Prozess namens deklarative Skripterstellung, mit dem Administratoren konsistente Konfigurationssätze über Computer oder Geräte hinweg aufrechterhalten. Sie können einen Zielzustand zur Systemkonfiguration festlegen, und das System findet heraus, wie das umzusetzen ist.
Bei richtiger Verwendung kann DSC IT-Teams dabei helfen, Konfigurationsabweichungen zu vermeiden, die oft dann passieren, wenn eine Anwendung die Standardeinstellungen eines Computers abändert.
So funktioniert PowerShell DSC
DSC ist ein Befehlszeilen-Tool, über das Administratoren mit einer PowerShell-basierten Skriptsprache Windows- und Linux-Systeme konfigurieren. Es ist möglich, ein System ohne DSC direkt mit PowerShell-Cmdlets zu konfigurieren – DSC ist aber darauf ausgelegt, den Prozess zu vereinfachen. Wenn Sie ein Skript für die Konfiguration eines Remote-Systems mit PowerShell-Cmdlets erstellen, weisen Sie Windows an, wie das Remote-System konfiguriert wird. Umgekehrt geben Sie für DSC Ihre Ziele für die Konfiguration an und PowerShell führt alle notwendigen Konfigurationsschritte für Sie aus.
Einer der Vorteile von DSC ist, dass es hochgradig skalierbar ist. Mehrere Computer lassen sich automatisch konfigurieren, um sicherzustellen, dass sie alle einheitliche Einstellungen haben.
DSC unterstützt zwei unterschiedliche Arbeitsweisen. Die einfachere der beiden Methoden ist die Push-Methode, die manchmal auch als Push-Modus bezeichnet wird. In diesem Modus wird eine Konfigurationsdatei erstellt und dann an Zielknoten im Netzwerk gepusht.
Die andere Option ist die Pull-Methode, die auch als Pull-Modus bezeichnet wird. In diesem Modus müssen Administratoren einen Server einrichten, der als zentrales Repository fungiert. Knoten senden regelmäßig Anfragen zum Server, um zu prüfen, ob eine Konfigurationsdatei verfügbar ist.
System Anforderungen
DSC ist Teil von Windows. Daher ist die wichtigste Hauptsystemvoraussetzung eine unterstützte Version von Windows. DSC funktioniert mit den folgenden Betriebssystemen:
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012R2
- Windows Server 2012
- Windows Server 2008 R2 SP1
- Windows 10
- Windows 8.1
- Windows 7
Es ist erwähnenswert, dass der eigenständige Hyper-V-Server ebenfalls nicht mit DSC kompatibel ist.
Nano Server hingegen unterstützt DSC mit Ausnahme dreier Funktionen:
- Sie können Microsoft-Operations-Framework-Dokumente (MOF) nicht mit verschlüsselten Kennwörtern entschlüsseln.
- Sie können auf Nano Server keinen Pull-Server einrichten.
- Alles, was nicht auf der Liste der Features enthalten ist, funktioniert.
DSC wird in Microsoft Azure durch zusätzliche Komponenten namens Azure Desired State Configuration Extension Handler und durch Azure Automation DSC unterstützt.
Microsoft stellt auch eine Version von DSC für den Einsatz in Open-Source-Umgebungen zur Verfügung. Dafür müssen Sie Open Management Infrastructure (OMI) und mehrere weitere Pakete installieren. Diese Pakete beinhalten Folgendes:
- GNU-C-Bibliothek (glibc)
- Python
- OpenSSL-Bibliotheken (openssl)
- Python CTypes-Bibliothek (ctypes)
- cURL HTTP-Clientbibliothek (libcurl)
Ein unterstütztes Linux-Betriebssystem ist ebenfalls erforderlich. Die derzeit unterstützten Distributionen umfassen Folgendes:
- CentOS 5, 6, 7 und 8 (x86/x64);
- Debian GNU/Linux 6, 7 und 8 (x86/x64);
- Oracle Linux 5, 6 und 7 (x86/x64);
- Red Hat Enterprise Linux (RHEL) Server 5, 6 und 7 (x86/x64);
- SUSE Linux Enterprise Server (SLES) 10, 11 und 12 (x86/x64); und
- Ubuntu-Server 12.04 LTS, 14.04 LTS und 16.04 LTS (x86/x64).
Installation
DSC ist Teil des Windows Management Framework (WMF). Sie müssen keine weiteren Komponenten installieren, um DSC zur verwenden. Wenn Sie jedoch eine Windows-Pull-Server-Instanz erstellen möchten, müssen Sie die DSC-Ressourcenmodule installieren. Das können Sie mit dem folgenden Befehl erledigen:
Install-Module 'PSDscResources'
DSC-Ressourcen
In den erwähnten DSC-Ressourcenmodulen sind viele verschiedene Ressourcen enthalten.
Ressource |
Zweck |
File |
Mit der File-Ressource lassen sich Dateien und Ordner auf einem Knoten verwalten. |
Archive |
Mit der Archiv-Ressource öffnen Sie ZIP-Dateien und extrahieren deren Inhalte |
Environment |
Die Environment-Ressource dient der Verwaltung der Umgebungsvariablen des Betriebssystems. |
Log |
Mit der Log-Ressource schreiben Sie Einträge in die DSC-Ereignis-Logs. |
Package |
Die Package-Ressource dient dem Installieren und Entfernen von Windows-Installationspaketen. |
Registry |
Mit der Registry-Ressource konfigurieren Sie die Regiestry-Schlüssel des Knotens manuell. |
Script |
Die Script-Ressource lässt Sie Skriptdateien auf dem Zielknoten ausführen. |
Service |
Die Service-Ressource ist für das Verwalten des Startstatus von Systemdiensten gedacht. |
User |
Mit der User-Ressource verwalten sie lokale Nutzerkonten auf dem Knoten. |
WindowsFeature |
The WindowsFeature-Ressource hilft beim Installieren und entfernen einer Betriebssystemrolle oder eines Features. |
WindowsOptionalFeature |
WindowsOptionalFeature lässt Sie optionale Windows Features entfernen oder hinzufügen. |
WindowsProcess |
Die WindowsProcess-Ressource dient dem Steuern von Betriebssystemprozessen. |
WaitForAll, WaitForAny and WaitForSome |
WaitForAll, WaitForAny und WaitForSome sind Ressourcen, mit denen Sie innerhalb eines Knotenblocks Abhängigkeiten zwischen Konfigurationen unterschiedlicher Knoten herstellen. |
Syntaxbeispiele
Eine DSC-Konfigurationsdatei beginnt immer mit dem Wort Configuration, gefolgt vom Konfigurationsnamen, der beliebig sein kann. Eine solche Datei kann auch eine Anweisung zum Importieren der DSC-Ressource und der Namen der zu konfigurierenden Knoten enthalten.
Darüber hinaus verweist eine Konfigurationsdatei normalerweise auf die im vorherigen Abschnitt aufgelisteten Ressourcen. Hier ist ein Beispielcode von Microsoft, das die File-Ressource verwendet, um eine Datei namens C:\Temp\HelloWorld.txt zu erstellen:
Configuration HelloWorld {
# Import the module that contains the File resource.
Import-DscResource -ModuleName PsDesiredStateConfiguration
# The Node statement specifies which targets to compile MOF files for, when this configuration is executed.
Node 'localhost' {
# The File resource can ensure the state of files, or copy them from a source to a destination with persistent updates.
File HelloWorld {
DestinationPath = "C:\Temp\HelloWorld.txt"
Ensure = "Present"
Contents = "Hello World from DSC!"
}
}
}
Anwenden von Konfigurationen
Das Anwenden einer Konfigurationsdatei ist ein zweistufiger Prozess. Der erste Schritt besteht darin, eine oder mehrere MOF-Dateien basierend auf Ihrer Konfigurationsdatei zu generieren. Wenn Sie beispielsweise eine Datei namens \\SMB\MyFile in einem Ordner namens C:\Files auf zwei Servern namens Server1 und Server2 bereitstellen möchten, sieht der Befehl dafür wie folgt aus:
DeployHostFile -Servers @(“Server1”,”Server2”) -SourceFile “SMB\MyFile” -DestinationFile “C:\Files” -OutputPath “C:\MOF\”
Dieser Befehl kopiert die MyFile-Datei nicht in den Ordner C:\Files auf den beiden Servern. Stattdessen werden zwei MOF-Dateien erstellt, eine für jeden Server. Diese MOF-Dateien werden im angegebenen MOF-Ordner auf C:\ gespeichert.
Der zweite Schritt beim Anwenden der Konfiguration besteht darin, eine Konfiguration basierend auf den MOF-Dateien zu erstellen. Der Befehl dazu – wenn die Push-Methode verwendet wird – lautet wie folgt:
Start-DscConfiguration -Path C:\MOF\