Hyper-V-Hosts per PowerShell Desired State Configuration erstellen

Das Erstellen von Hyper-V-Hosts lässt sich per PowerShell DSC automatisieren. Die Konfiguration lässt sich in wenigen Schritten durchführen.

Auch wenn die Marktanteile von Hyper-V denen von VMware vSphere noch immer hinterherhinken, holt Microsoft doch...

langsam aber sicher auf. Für immer mehr Unternehmen spielen dabei vor allem die Preisgestaltung – in vielen Fällen kann Hyper-V kostenlos genutzt werden – und das ständig anwachsende Feature-Set der Hyper-V-Plattform eine große Rolle. Diese Entwicklung hat schon so manchen Administrator dazu gebracht, immer stärker in Hyper-V zu investieren.

Das Aufsetzen eines Hyper-V-Hosts auf einem vorhandenen Windows Server 2012 R2 kann natürlich auch automatisiert werden, um sich wiederholende Aufgaben schneller zu erledigen. In diesem Tutorial zeigen wir, wie sich die Windows PowerShell für das Deployment einsetzen lässt, insbesondere die PowerShell Desired State Configuration (DSC).

Was braucht man also, um aus einem bestehenden Windows Server einen Hyper-V-Host zu machen? Für unsere Zwecke reichen drei Dinge: Ein paar Windows-Features, ein Verzeichnis für die VMs und ein Switch, um die VMs zu vernetzen.

Aufsetzen des DSC-Frameworks

Wenn man mit der PowerShell Desired State Configuration arbeitet, sollte man mit einer einzigen .ps1-Datei und einem darin enthaltenen Konfigurationsblock anfangen. In unserem Beispiel könnten wir diese Konfiguration HyperVBuild nennen.

Configuration HyperVBuild {

 

}

Eine Konfiguration ähnelt einer Funktion; sie beinhaltet ausführbaren Code, verhält sich aber ein wenig anders. Auf einen Konfigurationsblock folgt üblicherweise ein Konfigurationsparameter, ganz wie bei einer PowerShell-Funktion. Ein gängiger Parameter wäre $NodeName – dieser Parameter wird den Computer bestimmen, auf den die Konfiguration angewendet werden soll. In diesem Fall bleiben wir einfach beim standardmäßigen lokalen Host, da das Skript sich bereits auf dem Server befindet, auf dem wir den Hyper-V Host erstellen möchten.

Dem Konfigurationsblock kann nun der node-Codeblock hinzugefügt werden, darin wird dem $NodeName-Parameter ein Wert zugewiesen. Dies informiert Windows darüber, dass für den in $NodeName angegebenen Computer eine Konfiguration erstellt werden soll.

Configuration HyperVBuild {

 

     param(

 

           [string]$NodeName = 'localhost'

 

     )

 

 

     node $NodeName {

 

     }

 

}

 xHyper-V-Modul hinzufügen

Nachdem dieses Framework soweit eingerichtet wurde, muss ein Modul namens xHyper-V integriert werden. Dieses PowerShell DSC Modul wird für das Erstellen des Hyper-V-Switch benötigt. Das Modul ist standardmäßig kein Bestandteil von Windows, kann aber von Microsofts Github-Repository heruntergeladen werden. Als Speicherort empfiehlt sich C:\Programme\WindowsPowerShell\Modules; von dort aus steht es dann allen späteren Skripts automatisch zur Verfügung.

Im nächsten Schritt kommt das Cmdlet Import-DscResource mit Referenz auf xHyper-V zum Einsatz:

 Configuration HyperVBuild {

 

     param(

 

           [string]$NodeName = 'localhost'

 

     )

 

     Import-DscResource –ModuleName xHyper-V

 

     node $NodeName {

 

     }

 

}

Nun kann mit dem Hinzufügen der erforderlichen Ressourcen begonnen werden. Als erstes sollte das Hyper-V-Feature integriert werden. Dieses verwendet eine DSC-Ressource, die Bestandteil von Windows ist. Hierzu wird eine Zeile mit dem Ressourcennamen WindowsFeature am Anfang erstellt, die mit einem Anzeigenamen zur Repräsentation dieser Ressource fortgesetzt wird. In diesem Fall verwenden wir als Anzeigenamen einfach „Hyper-V“.

Innerhalb dieses Blocks kann nun das Attribut Ensure verwendet und mit dem Wert Present belegt werden, um das Windows-Feature zu installieren. Mit dem Namen des zu installierenden Windows-Features wird für die Einrichtung bei Konfigurationsbeginn gesorgt.

WindowsFeature 'Hyper-V' {

 

Ensure='Present'

 

     Name='Hyper-V'

 

}

Um sicherzustellen, dass das Feature Hyper-V-PowerShell installiert ist, fügen wir den nachfolgenden Absatz hinzu:

WindowsFeature 'Hyper-V-Powershell' {

 

Ensure='Present'

 

     Name='Hyper-V-Powershell'

 

}

Vor der Erstellung der virtuellen Maschinen wird dann noch ein Ordner benötigt, hier kann zum Beispiel C:\\VMs verwendet werden. Mithilfe der File-Ressourcen wird der Ordner dann angelegt. Die File-Ressource verfügt über ein Type-Attribut, mit dessen Hilfe zwischen Dateien und Ordnern unterschieden werden kann.

File VMsDirectory {

 

Ensure = 'Present'

 

Type = 'Directory'

 

     DestinationPath = "$($env:SystemDrive)\VMs"

 

}

Für das letzte Feature verwenden wir aus dem xHyper-V-Modul eine Ressource namens xVMSwitch. Mit deren Hilfe können Hyper-V-Switches erstellt und konfiguriert werden. Für Type muss der Wert Internal definiert werden, um ein nach außen hin abgeschottetes VM-Netzwerk auf dem Host anzulegen.

xVMSwitch LabSwitch {

 

DependsOn = '[WindowsFeature]Hyper-V'

 

Name = 'LabSwitch'

 

     Ensure = 'Present'

 

Type = 'Internal'

 

}

Dabei sollte man auf das Attribut DependsOn achten. Dieses Attribut ist allen Ressourcen gemeinsam und ermöglicht die Festlegung der Reihenfolge, in der Ressourcen ausgeführt werden. In unserem Beispiel stellen wir darüber sicher, dass das Feature Hyper-V Windows zuerst installiert wird, bevor wir einen Switch erstellen.

Die Konfiguration sollte inzwischen so aussehen:

configuration HyperVBuild

 

{

 

     param (

 

           [string]$NodeName = 'localhost'

 

     )

 

     Import-DscResource -ModuleName xHyper-V

 

     node $NodeName {

 

           WindowsFeature 'Hyper-V' {

 

                Ensure='Present'

 

                Name='Hyper-V'

 

           }

 

           WindowsFeature 'Hyper-V-Powershell' {

 

                Ensure='Present'

 

                Name='Hyper-V-Powershell'

 

           }

 

           File VMsDirectory

 

           {

 

                Ensure = 'Present'

 

                Type = 'Directory'

 

                DestinationPath = "$($env:SystemDrive)\VMs"

 

           }

 

           xVMSwitch LabSwitch {

 

                DependsOn = '[WindowsFeature]Hyper-V'

 

                Name = 'LabSwitch'

 

                Ensure = 'Present'

 

                Type = 'Internal'

 

}

 

}

Nachdem damit nun die Konfiguration fertiggestellt wurde, können die MOF-Dateien (Windows Management Object File) erstellt werden, die zum Beginn der Hyper-V-Konfiguration auf das System angewendet werden sollen. Dafür wird der Konfigurationsblock einfach genauso wie eine PowerShell-Funktion ausgeführt, indem sie über ihren Namen HyperVBuild aufgerufen wird. Dadurch wird ein Ordner mit demselben Namen erzeugt, der eine MOF-Datei namens localhost.mof enthält.

Abschließend muss die Konfiguration noch auf die lokale Maschine angewendet werden. Dafür wird das Cmdlet Start-DscConfiguration mit verschiedenen Parametern verwendet.

Start-DscConfiguration -Path .\HyperVBuild -Wait -Force

Der erste Parameter Path zeigt Start-DscConfiguration den Speicherort der MOF-Datei an. Der nachfolgende Parameter Wait sorgt dafür, dass Start-DscConfiguration die vollständige Abarbeitung abwartet, bevor die Kontrolle zurück an die Konsole gegeben wird. Der Parameter Force letztlich weist Start-DscConfiguration an, die Konfiguration zu pushen, statt sie zu pullen. Das Push/Pull-Szenario wird in diesem englischsprachigen Artikel genauer erklärt.

Nach dem Start von Start-DscConfiguration werden während der Abarbeitung der Konfiguration möglicherweise einige Meldungen in der Konsole angezeigt. Wenn alles gut gegangen ist, steht wenige Minuten später ein brandneuer Hyper-V Server für VMs zur Verfügung.

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

Artikel wurde zuletzt im Dezember 2015 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Windows-Server

0 Kommentare

Älteste Beiträge 

Passwort vergessen?

Kein Problem! Tragen Sie Ihre E-Mail-Adresse unten ein. Wir werden Ihnen eine E-Mail mit Ihrem Passwort schicken.

Ihr Passwort wurde an die folgende E-Mail-Adresse gesendet::

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close