Desired State Configuration: Nodes und configuration mit Parametern anpassen

    Desired State Configuration (DSC) über Parameter steuernDSC eignet sich auch für die Konfi­guration von vielen Rechnern in einer Umgebung. Daher bietet die Tech­nologie die nötigen Mit­tel, um Nodes flexibel fest­zulegen, auf welche eine Konfi­guration ange­wandt werden soll. Dazu zählen Para­meter, die auch andere Aspekte einer confi­guration anpassen können.

    Innerhalb einer configuration dient das reservierte Wort Node dazu, den oder die Rechner anzugeben, die man damit anpassen möchte. In einfachen Fällen trägt man hier den Namen direkt als String ein, und wenn es mehrere sind, dann trennt man sie durch Kommata. Will man die Konfiguration nur lokal auf jedem Rechner anwenden und nicht remote, dann tut es hier auch "localhost".

    Statische Definition von Nodes

    In meinem Grundlagenbeitrag zum DSC-Konzept habe ich eine simple configuration erstellt, mit der sich SMB v1 in Windows 8.1 oder 10 deinstallieren lässt. Ihre Definition sah dort so aus:

    Es liegt auf der Hand, dass ein solches Vorgehen ziemlich unflexibel ist. Jedes Mal, wenn man die Liste der Nodes ändern möchte, muss man die configuration bearbeiten und "Win10-VM1" durch andere Namen ersetzen.

    Parameter wie bei Funktionen

    Eine Alternative zu dieser statischen Variante besteht daher darin, Parameter zu verwenden, so dass man die Hostnamen als Argumente übergeben kann. Nachdem es sich bei einer configuration um eine spezielle Form einer function handelt, erfolgt die Definition der Parameter in der gleichen Syntax.

    Es gilt aber die Einschränkung, dass die einfache Notation, wo Parameter direkt auf den Namen der function folgen, bei einer configuration nicht erlaubt ist:

    configuration DisableSMB1( [string] $Hosts){
    # Das funktioniert nicht

    Stattdessen muss man das Keyword param verwenden, um die Parameter innerhalb der configuration zu deklarieren:

    In diesem Beispiel erwartet der Aufruf von DisableSMB1, dass der oder die Namen der Rechner über den Parameter $hosts als Array von Strings übergeben wird. Das kann ein einzelner Wert sein oder mehrere Zeichenketten, die man durch Kommata trennt:

    DisableSMB1 -hosts "Win10Pro-VM1","Win10Pro-VM2"

    Ruft man die configuration ohne Parameter auf, dann muss man sie anschließend interaktiv eingeben.

    Generische configuration mit weiteren Parametern

    Neben den Namen der Computer könnte man zusätzliche Parameter verwenden, beispielsweise für das Feature oder den Betriebsmodus (Enable bzw. Disable). Auf diese Weise erhielte man eine generische Konfiguration zum Aktivieren oder Deaktivieren von Features:

    Um beispielsweise die einfachen TCP/IP-Dienste zu installieren, könnte man die configuration, die ich aufgrund ihrer neuen Funktionen nun OptionalFeature nenne, so aufrufen:

    OptionalFeature -hosts "Win10Pro-VM1","Win10Pro-VM2" -feature "SimpleTCP" -mode "Enable"

    configuration mit Parameter für Nodes, Feature und Ensure

    Das Ergebnis wären .mof-Dateien für die Nodes Win10Pro-VM1 und Win10Pro-VM2, die man etwa mit Start-DscConfiguration lokal oder remote auf diese Hosts anwenden kann, um das betreffende Feature zu aktivieren.

    Keine Kommentare