Quickstart: Use Bicep to create a lab in DevTest Labs
This quickstart uses Bicep to create a lab in Azure DevTest Labs that has one Windows Server 2019 Datacenter virtual machine (VM) in it.
In this quickstart, you take the following actions:
- Review the Bicep file.
- Deploy the Bicep file to create a lab and VM.
- Verify the deployment.
- Clean up resources.
Prerequisites
If you don't have an Azure subscription, create a free account before you begin.
Review the Bicep file
Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources. It provides concise syntax, reliable type safety, and support for code reuse. Bicep offers the best authoring experience for your infrastructure-as-code solutions in Azure.
The Bicep file defines the following resource types:
- Microsoft.DevTestLab/labs creates the lab.
- Microsoft.DevTestLab/labs/virtualnetworks creates a virtual network.
- Microsoft.DevTestLab/labs/virtualmachines creates the lab VM.
@description('The name of the new lab instance to be created')
param labName string
@description('Location for all resources.')
param location string = resourceGroup().location
@description('The name of the vm to be created.')
param vmName string
@description('The size of the vm to be created.')
param vmSize string = 'Standard_D4_v3'
@description('The username for the local account that will be created on the new vm.')
param userName string
@description('The password for the local account that will be created on the new vm.')
@secure()
param password string
var labSubnetName = '${labVirtualNetworkName}Subnet'
var labVirtualNetworkId = labVirtualNetwork.id
var labVirtualNetworkName = 'Dtl${labName}'
resource lab 'Microsoft.DevTestLab/labs@2018-09-15' = {
name: labName
location: location
}
resource labVirtualNetwork 'Microsoft.DevTestLab/labs/virtualnetworks@2018-09-15' = {
parent: lab
name: labVirtualNetworkName
}
resource labVirtualMachine 'Microsoft.DevTestLab/labs/virtualmachines@2018-09-15' = {
parent: lab
name: vmName
location: location
properties: {
userName: userName
password: password
labVirtualNetworkId: labVirtualNetworkId
labSubnetName: labSubnetName
size: vmSize
allowClaim: false
galleryImageReference: {
offer: 'WindowsServer'
publisher: 'MicrosoftWindowsServer'
sku: '2019-Datacenter'
osType: 'Windows'
version: 'latest'
}
}
}
output labId string = lab.id
Deploy the Bicep file
Save the Bicep file as main.bicep to your local computer.
Deploy the Bicep file using either Azure CLI or Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters labName=<lab-name> vmName=<vm-name> userName=<user-name>
Note
Replace <lab-name> with the name of the new lab instance. Replace <vm-name> with the name of the new VM. Replace <user-name> with username of the local account that will be created on the new VM. You'll also be prompted to enter a password for the local account.
When the deployment finishes, you should see a message indicating the deployment succeeded.
Validate the deployment
Use the Azure portal, Azure CLI, or Azure PowerShell to list the deployed resources in the resource group.
az resource list --resource-group exampleRG
Note
The deployment also creates a resource group for the VM. The resource group contains VM resources like the IP address, network interface, and disk. The resource group appears in your subscription's Resource groups list with the name <lab name>-<vm name>-<numerical string>.
Clean up resources
When no longer needed, use the Azure portal, Azure CLI, or Azure PowerShell to delete the resource group and all of its resources.
az group delete --name exampleRG
Next steps
In this quickstart, you created a lab that has a Windows VM. To learn how to connect to and manage lab VMs, see the next tutorial: