Deploy Nano Server met Powershell DSC

Met Powershell Desired State Configuration (DSC) kan middels een script een VM uitgerold worden. Powershell DSC kan toegevoegd worden met:

Install-Module xHyper-V

Hierna kan een script je nieuwe server uitrollen, bijvoorbeeld een NanoServer waarvan je eerst de VHD kun ophalen bij https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016 Plaats deze (uitgepakt) in C:\VM zodat het script er bij kan.

Het script voor SimpleVM ziet er alsvolgt uit:

Configuration SimpleVM {
  param (
    [string[]]$NodeName = 'localhost',
    [string]$VhdPath
  )
  Import-DscResource -ModuleName xHyper-V
  Node $NodeName {
    xVMSwitch internal {
      Ensure = 'Present'
      Name = 'internal'
      Type = 'Internal'
    }
    xVMHyperV SimpleVM {
      Ensure = 'Present'
      Name = 'SimpleVM'
      VhdPath = $VhdPath
      SwitchName = 'internal'
      State = 'Running'
      Generation = 1
      StartupMemory = 512MB
      ProcessorCount = 1
      DependsOn = '[xVMSwitch]internal'
    }
  }
}

SimpleVM -VhdPath 'C:/VM/NanoServerDataCenter.vhd'

Zie hier het keyword ‘Present’ in de Ensure-optie voor zowel de node als de netwerk-switch!

Start dit script in Powershell en run daarna het volgende commando:

Start-DscConfiguration -Wait -Force -Path SimpleVM -Verbose

Via de Hyper-V Manager kun je nu de VM starten en een wachtwoord voor de Administrator instellen.

Vervolgens gaan we een remote sessie gebruiken om de VM te testen:

Enter-PSSession -VMName SimpleVM -Credential Administrator

Eventueel weer verwijderen van deze VM kan via het volgende script:

Configuration RmSimpleVM {
  param (
    [string[]]$NodeName = 'localhost',
    [string]$VhdPath
  )
  Import-DscResource -ModuleName xHyper-V
  Node $NodeName {
    xVMHyperV SimpleVM {
      Ensure = 'Absent'
      Name = 'SimpleVM'
      VhdPath = $VhdPath
      SwitchName = 'internal'
      State = 'Running'
      Generation = 1
      StartupMemory = 512MB
      ProcessorCount = 1
    }
    xVMSwitch internal {
      Ensure = 'Absent'
      Name = 'internal'
      Type = 'Internal'
      DependsOn = '[xVMHyperV]SimpleVM'
    }
  }
}

RmSimpleVM -VhdPath 'C:/VM/NanoServerDataCenter.vhd'

Zie hier het keyword ‘Absent’ in de Ensure-optie voor zowel de node als de netwerk-switch!

Gevolgd door het volgende commando:

Start-DscConfiguration -Wait -Force -Path RmSimpleVM -Verbose