JumalaSika ltd - Fotolia

PowerShell-Tipp: Dateiserver über Desired State Configuration bereitstellen

Die Desired State Configuration ist ein mächtiges Automatisierungs-Tool der PowerShell. So lassen sich per PowerShell DSC Dateiserver bereitstellen.

Es ist kein großes Geheimnis, dass Administratoren Routineaufgaben durch die Automatisierung schnell und mit reduziertem Fehlerrisiko durch Tippfehler oder irrtümlichen Mausklicks erledigen können. Die Windows PowerShell verfügt mit der Erweiterung Desired State Configuration (DSC) über ein mächtiges Werkzeug, das sogar noch einen Schritt weiter geht.

Windows PowerShell Desired State Configuration nutzt eine deklarative Syntax, um Server-Deployments zu vereinfachen. Der Administrator teilt dabei dem System mit, wie die Konfiguration des Servers aussehen sollte, statt die Konfiguration schrittweise selbst zusammenzustellen.

Per PowerShell DSC lassen sich Konfigurationen für alle Serverrollen erstellen. Indem Server in Rollen definiert werden, kann ein Webserver oder ein Dateiserver wie eine einzige Einheit betrachtet werden, die viele unterschiedliche Features, Sicherheitseinstellungen oder auch Konfigurationsaspekte umfasst. Statt also jedes Mal aufs Neue die jeweiligen Einstellungen zuweisen zu müssen, wird stattdessen einfach die gewünschte Serverrolle referenziert. Im Gegensatz zu Tools zum Konfigurations-Management wie Ansible, Chef, Puppet oder Salt ist PowerShell DSC dabei ein waschechtes Microsoft-Produkt.

Schauen wir uns einmal an, wie ein Script für PowerShell DSC erstellt wird, um einen Dateiserver zu provisionieren. Das ist nur eines von vielen Beispielen dafür, welche Aufgaben Windows-Administratoren mit diesem Tool automatisieren können.

DSC-Konfiguration der Serverrollen festlegen

Vor jedem Script-Projekt sollte ein Plan gemacht und sichergestellt werden, dass ihn jeder Beteiligte versteht. Im Zusammenhang mit diesem Artikel soll die Provisionierung eines Dateiservers umfassen:

  • Installation des Features Dateidienste,
  • Erstellen von zwei Dateifreigaben und
  • Festlegung passender Zugriffsrechte für diese Freigaben.

Zunächst sollte die neueste Version des Windows Management Frameworks installiert werden. Dies muss sowohl auf dem Rechner geschehen, auf dem die Konfiguration definiert wird, als auch auf dem Rechner, der als Server konfiguriert werden soll.

Danach wird eine Vorlagendatei der PowerShell DSC angelegt, die wir C:\FileServer.ps1 nennen. Diese Datei wird die einzusetzenden Ressourcen aufführen und die MOF-Datei (Managed Object Format) für den Node erstellen. Der Dateiserver erhält den Namen MEMBERSRV1. In diesem Fall soll ein einzelner Dateiserver mit diesem Namen entstehen. Wird stattdessen die Bereitstellung mehrerer Server gewünscht, so finden sich im MSDN-Artikel Trennen von Konfiguration und Umgebungsdaten weitere Informationen hierzu.

 

## Create the configuration

 Configuration FileServer

 {

     Import-DscResource -Module PSDesiredStateConfiguration

 

     Node 'MEMBERSRV1'

 

     {

  

     }

 }

 

Nun kommen die Ressourcen-Referenzen hinzu. Zunächst werden über die eingebaute DSC-Ressource WindowsFeature die Dateidienste installiert.

Configuration FileServer

 {

      Import-DscResource -Module PSDesiredStateConfiguration

    

      Node 'MEMBERSRV1'

      {

 

           WindowsFeature 'FileServices'

            {

                 Ensure = 'Present'

                 Name = 'File-Services'

            }

      }

 }

 

Jetzt ist es an der Zeit für die Dateifreigaben. Im ersten Schritt werden zwei Ordner auf dem Server erstellt und diese freigegeben. Hierfür kann die eingebaute DSC-Ressource File und das Modul xSmbShare verwendet werden. Das xSmbShare-Modul dient zur Nutzung freigegebener SMB-Ordner (Server Message Block), ist aber keine Standardressource der PowerShell und muss daher zunächst aus der PowerShell Gallery heruntergeladen werden. Hierfür wird eine Remote-Sitzung zum Server aufgebaut und das Modul über den folgenden Befehl installiert:

Invoke-Command –ComputerName MEMBERSRV1 –ScriptBlock {Install-Module xSmbShare}

Jetzt können wir die Ressourcen aus der Konfiguration erstellen, um die Verzeichnis- und Dateifreigaben zu erzeugen.

File 'Share1Folder'

 {

      Ensure = 'Present'

      Type = 'Directory'

      DestinationPath = 'C:\FileShare1'

 }

  

 

File 'Share2Folder'

 {

      Ensure = 'Present'

      Type = 'Directory'

      DestinationPath = 'C:\FileShare2'

 }

 

  

xSmbShare 'Share1'

 {

      Ensure = 'Present'

      Name   = UserShare

      Path = 'C:\FileShare1'

      FullAccess = 'Everyone'

      DependsOn = '[File]Share1Folder'

 }

  

 

xSmbShare 'Share2'

 {

      Ensure = 'Present'

      Name   = UserShare

      Path = 'C:\FileShare2'

      FullAccess = 'Everyone'

      DependsOn = '[File]Share2Folder'

 }

 

An den Anfang der Konfiguration wird jetzt noch die Referenz auf das xSmbShare-Modul hinzugefügt.

Import-DscResource -Module PSDesiredStateConfiguration,xSmbShare

Anschließend werden die Zugriffsrechte auf die Dateifreigaben mit NTFS ACL gesetzt. Hierfür wird ein weiteres Modul aus der PowerShell Gallery benötigt: cNtfsAccessControl. Der zusätzliche Eintrag in der Zeile Impert-DscResource erledigt dies:

Import-DscResource -Module PSDesiredStateConfiguration,xSmbShare,cNtfsAccessControl

Nun passen wir die Freigaben an. An der Domäne angemeldete Nutzer sollen Lesezugriff auf den Basisordner und auf jede Dateifreigabe erhalten. Dafür nutzen wir die Ressource cNtfsPermissionEntry, geben den Prinzipal Authenticated Users an und schließlich natürlich auch den Pfad zum Ordner und die spezifischen Benutzerrechte.

cNtfsPermissionEntry 'FileShare1' {

      Ensure = 'Present'

      DependsOn = "[File]Share1Folder"

      Principal = 'Authenticated Users'

      Path = 'C:\FileShare1'

      AccessControlInformation = @(

            cNtfsAccessControlInformation

            {

                 AccessControlType = 'Allow'

                 FileSystemRights = 'Read'

                 Inheritance = 'ThisFolderSubfoldersAndFiles'

                 NoPropagateInherit = $false

            }

      )

 }

 

 

 cNtfsPermissionEntry 'FileShare2' {

      Ensure = 'Present'

      DependsOn = "[File]Share2Folder"

      Principal = 'Authenticated Users'

      Path = 'C:\FileShare2'

      AccessControlInformation = @(

            cNtfsAccessControlInformation

            {

                 AccessControlType = 'Allow'

                 FileSystemRights = 'Read'

                 Inheritance = 'ThisFolderSubfoldersAndFiles'

                 NoPropagateInherit = $false

            }

      )

 }

 

An diesem Punkt ist das Skript vollständig und diese Konfiguration der PowerShell DSC kann auf dem künftigen Dateiserver gestartet werden. Anschließend werden die Anweisungen automatisch auf dem Remote-Server ausgeführt und der Dateiserver konfiguriert.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im Februar 2017 aktualisiert

Erfahren Sie mehr über Serverbetriebssysteme

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close