- Notifications
You must be signed in to change notification settings - Fork50
Virtual Engine test lab deployment and configuration module
License
VirtualEngine/Lability
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
master branch | dev branch |
---|---|
TheLability module enables simple provisioning of Windows Hyper-V development and testingenvironments. It uses a declarative document for machine configuration. However, rather thandefining configurations in an external custom domain-specific language (DSL) document,Labilityextends existing PowerShell Desired State Configuration (DSC) configuration (.psd1) documents withmetadata that can be interpreted by the module.
By using this approach, it allows the use of a single configuration document to describe allproperties for provisioning Windows-centric development and/or test environments.
TheLability module will parse the DSC configuration document and provision Hyper-V virtualmachines according to the metadata contained within. When invoked,Lability will parse a DSCconfiguration document and automagically provision the following resources:
- Virtual machine disk images
- Download required evaluation Operating System installation media
- Expand Windows Image (WIM) image files into Sysprep'd virtual machine parent disks, including Server 2016 TP4 and Nano server
- Apply required/recommended DSC Windows updates
- Virtual networks
- Create internal and external Hyper-V switches
- Virtual machines
- Connect to the correct virtual switches
- Inject DSC resources from the host machine
- Inject a dynamically created Unattend.xml file
- Inject external ISO, EXE and ZIP resources
- Inject the virtual machine's DSC document
- Invoke the Local Configuration Manager (LCM) after Sysprep
An example DSC configuration document might look the following.Note: this is a standard DSC.psd1 configuration document, but has been extended with specific properties which theLabilitymodule can interpret.
@{AllNodes=@(@{NodeName='DC1';Lability_ProcessorCount=2;Lability_SwitchName='CORPNET';Lability_Media='2016_x64_Datacenter_EN_Eval'; },@{NodeName='APP1';Lability_ProcessorCount=1;Lability_SwitchName='CORPNET';Lability_Media='2016_x64_Datacenter_EN_Eval'; } )NonNodeData=@{Lability=@{Network=@(@{Name='CORPNET';Type='Internal'; } )#end Network }#end Lability }#end NonNodeData}
WhenStart-LabConfiguration
is invoked with the above configuration document, it will:
- Create an internal Hyper-V virtual switch named 'CORPNET'
- If no network is defined, a default internal virtual switch will automatically be created
- Download required Server 2012 R2 Standard Edition evaluation media
- Create a Sysprep'd Server 2012 R2 Standard Edition parent VHDX
- Install required/recommended DSC hotfixes
- Provision two Hyper-V virtual machines called 'DC1' and 'APP1'
- Each VM will be given 2GB RAM (configurable default)
- 'DC1' will be assigned 2 virtual CPUs
- 'APP1' will be assigned 1 virtual CPU
- Attach each virtual machine to the 'CORPNET' virtual switch
- Create differencing VHDX for each VM
- Inject a dynamically created Unattend.xml file into the differencing VHDX
More examples can be found in the.\Examples folderof the module's root directory.
A brief introduction to theVirtualEngineLab module presented at the European PowerShell Summit 2015 can be foundhere. Other generous members of the community have written some comprehensive guides to compliment the built-in documentation – a BIG thank you!
- Lability tutorial bymrled
- Building A Lab using Hyper-V and Lability via @kilasuit
- The Ultimate Hyper-V Lab Tool via @absolutejam
- Create Your Virtual Lab Environment with Lability How-To via @Naboo2604
- Microsoft Channel 9 PSDEVOPS presentation recording
- Using Lability, DSC and ARM to define and deploy multi-VM environments via @rikhepworth
- Building Hyper-V lab environments based on PowerShell DSC via @JanEgilRing