Create Virtual Machines with Azure DevTest Lab

by Dec 19, 2019

A while ago I had to give a training. Normally I would roll out a number of virtual machines in Azure. Until someone brought my attention to an Azure Service, Azure DevTest Labs. With this Azure service you can easily create a basic image and use this image to roll out a series of virtual machines with even the option to automatically clean them up after a training or test period. This way you can also optimally save costs. You have to go through a number of steps and I thought it would be useful to share these steps with you.

Table of Content

  1. Configuration in Azure
  2. Create Master Virtual Machine
  3. Starting the Virtual Machine
  4. Creating Base Image
  5. Create Training Virtual Machines

Configuration in Azure

Create a Resource Group in which you want to install the Azure DevTest lab. Search for the Azure Service DevTest Labs and click Create.

Lab name:
The DevTest Lab name

Western Europe or other desired Region

Indicate who the Owner is. 

Shut down the machine automatically every day to save costs. Don’t forget to select the correct time zone.
Then click Create to start building the DevTest lab.

After the DevTest lab has been created, the following resources are also created. 

StorageAccount: Storage location for your Artifacts

KeyVault: Securely store your DevTest Lab passwords

An important step before we create these Virtual machines is that we must indicate in which Resource Group these Virtual machines will be created later. If we don’t do this, a Resource Group will be created automatically with a name that most likely does not comply with various naming conventions in your company.

To do this, go to Configuration and Policies.

Click on Lab settings and check the box next to “All Virtual machines in one Resource group“, create a new Resource Group as in the example above. Finally save these settings.


Create Master Virtual Machine

If we want to make in a later stadium several training machines, we will first have to make a Base Image. For this we first have to create a Virtual machine.
Go to the newly created DevTest Lab environment and click Add.

Select a basic Image that you want to use. In this case I have selected a Windows 10 Image.

Virtual machine name:
Give the Virtual Machine a name, the 001 is not necessary for the Master. Note that the name may not be longer than 15 characters.

User Name:
Admin account to log in to the Virtual machine

A default password, check the box next to Save as default Password. The Password is now stored in the Azure Keyvault that was created

Disk and Size:
Select the Size of the Virtual machine here and choose from a Premium SSD, Standard SSD or Standard HDD disk type

During the creation of the Virtual Machine, we can immediately perform a number of installations so that they are available in the default Image to be created. Below I have selected to add SSMS.

Then click on Advanced settings.

Set the ip-address to Public. 

Go back to Basic Settings and click on Create to create the Virtual Machine

Starting the Virtual Machine

After the machine is started up, create 2 users which can be used during the training. Add this to the Remote Desktop user group, you can also add them to the Administrator group so that the student has all rights to this machine.

Install the Software that you want to use.

In this situation I have installed Power Desktop from the Windows Store, so that it always stays up to date.

In addition, I have installed SQL Server 2017 Developer Edition with a WorldWIdeImporters database.

It is important that you add the above created users as Admin users during the installation of eg Analysis services so that a student has sufficient rights to follow his training.

Then log in with 1 of the created users and check if everything works.

Then shutdown the Virtual Machine.


Creating Base Image

Select the Master Virtual Machine:

Click Create custom Image:

Give the image a name that you recognize it later and click on Create.


Create Training Virtual Machines

To create the Training Virtual Machines, we do actually the same as with the master.

We are adding a new one, only now we select as Base the Image we just made.

Give the machine a name, do not use numbers at the end as specified by default. These numbers will be added automatically when creating multiple machines.

Disk and Size:
Select the Size of the Virtual machine here and choose from a disk type Premium SSD, Standard SSD or Standard HDD. Useful here is to use the same Disk Type that you used with the Master.

If you want to add another Artifact, you can do that here, but in principle we already have it in our Base Image.

Virtual Machine expiration:
As it concerns training machines, we also want them to be removed automatically after the training.
Then go back to the Basic Settings and click on Create.

Number of instances:
Define how many training machines you would like to create.

Go back to the Tab Basic Settings and click on Create.

The number of machines you have selected are immediately created with an increasing number. After the creation is complete, Students can now log into this Virtual Machines from their own laptop or desktop at with the User1 account, which we created in an earlier stage.

Feel free to leave a comment


Submit a Comment

Your email address will not be published. Required fields are marked *

9 + fifteen =

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Azure SQL Data Warehouse: How to setup Reserved Capacity

Purchase your Azure SQL Datawarehouse Reservation   Since a few weeks you can buy Reserved Capacity for an Azure SQL Datawarehouse (SQLDW). This Reservation can save you up to 65% on the normal Pay as You go rates with a 3 year pre-commit. A pre-commit of 1 year...

Get control of data loads in Azure Synapse

Load Source data to DataLake There are several ways to extract data from a source in Azure Synapse Analytics or in Azure Data Factory. In this article I'm going to use a metadata-driven approach by using a control table in Azure SQL in which we configure the...

Azure Data Factory Let’s get started

Creating an Azure Data Factory Instance, let's get started Many blogs nowadays are about which functionalities we can use within Azure Data Factory. But how do we create an Azure Data Factory instance in Azure for the first time and what should you take into account? ...

SSMS 18.1: Schedule your SSIS Packages in Azure Data Factory

Schedule your SSIS Packages with SSMS in Azure Data Factory(ADF) This week SQL Server Management Studio version 18.1 was released, which can be downloaded from here. In version 18.1 the Database diagrams are back and from now on we can also schedule SSIS Packages in...

Azure Purview Costs in Public Preview explained

Why are you potentially charged for Azure Purview during the public preview? Since I published my post that Azure Purview started billing as of January 21th, I got a lot of questions how billing was working. UPDATE 27th of February: We are extending the Azure Purview...

SSMS 18.xx: Creating your Azure Data Factory SSIS IR directly in SSMS

Creating your Azure Data Factory(ADF) SSIS IR in SSMS Since  version 18.0 we could see our Integration Catalog on Azure Instances directly. Yesterday I wrote an article how to Schedule your SSIS Packages in ADF, during writing that article I found out that you can...

How to setup Code Repository in Azure Data Factory

Why activate a Git Configuration? The main reasons are: Source Control: Ensures that all your changes are saved and traceable, but also that you can easily go back to a previous version in case of a bug. Continuous Integration and Continuous Delivery (CI/CD): Allows...

Azure SQL Data Warehouse: Reserved Capacity versus Pay as You go

How do I use my Reserved Capacity correctly? Update 11-11-2020: This also applies to Azure Synapse SQL Pools. In my previous article you were introduced, how to create a Reserved Capacity for an Azure SQL Datawarehouse (SQLDW). Now it's time to take a look at how this...

Use Global Parameters to Suspend and Resume your Analysis Services in ADF

Suspend or Resume your Azure Analysis Services in Azure Data Factory Last week one of my customer asked me if they could start or stop his Azure Analysis Services within Azure Data Factory. After a search on the internet I came across a blog from Joost, I'm using that...

Scale SQL Database dynamically with Metadata

Scale SQL Database Dynamically with Metadata Use this template to scale up and down an Azure SQL Database in Azure Synapse Analytics or in Azure Data Factory. This article describes a solution template how you can Scale up or down a SQL Database within Azure Synapse...