Announcing General Availability of Azure DevTest Labs

Today, we are very excited to announce the general availability of Azure DevTest Labs: your self-service sandbox environment in Azure to quickly create Dev/Test environments while minimizing waste and controlling costs.

We’ve been hearing from a lot of customers about all kinds of challenges they’ve been facing in their Dev/Test environments. With the power of cloud, some problems have started being solved such as the hardware maintenance cost. On the other hand, there are still a few problems many customers have to deal with day to day, especially:

  • The delays in delivering environments to developers/testers that are introduced by the traditional environments request model;
  • Time-consuming environment configuration;
  • Production fidelity issues;
  • And the high cost of the cloud resource management in order to optimize the resource usage.

Dev-Test problems

Figure 1: The traditional “request” model introduces delays in delivering environments

That’s why we build Azure DevTest Labs, where you can get your fast, easy and lean Dev/Test environments specifically for your team and on demand.

In summary, Azure DevTest Labs addresses the problems in Dev/Test environments today majorly through 4 aspects:

  • Quickly be “ready to test”
  • Worry-free self-service
  • Create once, use everywhere
  • Integrates with your existing toolchain

The video, “What is Azure DevTest Labs”, gives you a high-level idea around these four aspects within 3 minutes, and we will expand these into details in the remaining sections of this post.

Quickly be “ready to test”

The DevTest Labs provides multiple options to help developers and testers to get their environments ready quickly. It offers three different types of VM bases that developers and testers can use to create the Dev/Test environments:

  • Marketplace images: the VM images directly from Azure Marketplace.
  • Custom images: from your own VHD file.
  • Formulas: a reusable base where VM creation settings (such as VM image, VM sizes, virtual network, etc.) are pre-defined, so that environments can be created without requiring any more input.

What makes up a Formula

Figure 2: What makes up a formula

Artifacts in the DevTest Labs allow users to run VM extensions and install tools, deploy applications or execute some custom actions once a lab VM is created. You can add a VM with artifacts to a lab or applied artifacts to any existing lab VMs. Artifacts are basically user-defined JSON files loaded from GitHub or VSTS Git repos. To help you to get started, DevTest Labs has already provided a bunch of artifacts in the public GitHub repo, which are open for community contribution. You can also add your own repos to use your own artifacts.

Add artifacts to VMs

Figure 3: Add artifacts when creating a lab VM

Based on your own context, these options give you a flexible way to accelerate the environment creation. For example:

  • Azure Marketplace already offers tons of VM images to provision your environments. The license fee is included in the pricing of those VMs. If an Azure Marketplace image can simply meet your needs, just use it in your Lab!
  • If you need a custom environment where the system settings/configurations don’t change often, you can create a custom image in the lab and use it to create you environments. DevTest Labs allows you create a custom image from an existing lab VM. We will cover it more later in this post.
  • Artifacts is your best friend if your environment requires something that changes often from external sources, such as the applications that your team is building, your source code, or different tools preferred by different developers/testers in their own environments.
  • If you need to re-create the same environment multiple times that requires the same combination of a particular VM image and selected artifacts, simply create a formula on top of it and select this formula to get the “one-click” experience of creating environments. If you are still not sure which option you should go between custom images and formulas, check out the post, “Custom images or formulas”, to get more guidance.

Worry-free self-service

DevTest Labs enables a team self-service model where developers and testers go to the Azure portal directly to create environments, instead of going through a complicated “request” process. In order to provide a worry-free cost efficient environment for self-service, DevTest Labs offers a set of lab policies and the Azure Role-Based Control (RBAC) support.

DevTest Labs makes it easier to control costs by allowing lab owners to set lab policies such as the following ones:

  • DevTest Labs enables you to automatically shut down and start VMs on schedule, so that you can make sure the VMs are only running when they are indeed needed during the day.
  • You can set the maximum number of VMs each lab user can own and the VM sizes allowed for VM creation, so that you won’t end of with the situation where a team member accidently used up all the VM quotas in the lab or create a VM with a large VM size that burns all the budget quickly.

Lab policies

Figure 4: VM policies in DevTest Labs

  • Virtual Network settings allow you to specify which Azure virtual network and subnets are allowed in the lab, and whether public IP addresses are allowed to be created.

Virtual network settings

Figure 5: Virtual Networks settings in DevTest Labs

Whitelist Azure Marketplace images

Figure 6: Whitelist Azure Marketplace images in the lab

  • DevTest Labs also provides charts and projections for you to monitor the total spending and usage in the  . In our roadmap, we are planning to allow you to set threshold and get alerts when the lab spending or usage is about to hit the threshold. The blog post “Why Cost Thresholds” shares with you our thoughts in regarding cost management support.

Monitor spending

Figure 7: Spending trend and projection in the lab

In addition, each lab is a sandbox for a team to manage their own environments without granting them permissions to access Azure resource outside of the lab.

The access to a lab is controlled by Azure Role-Based Control (RBAC). In order to enforce the right permissions to the right people, Azure DevTest Labs provides a DevTest Labs User role, which only allows developers/testers to create, update and delete their own VMs in the specified lab. Correspondingly, the Owner role assigned in a lab gives users the capability to manage settings and resources in the specified lab without requiring any subscription admin permissions.

Permission scopes

Figure 8: Permission scopes between subscription Owner, lab Owner and DevTest Labs User

There are cases where the default roles don’t meet your needs. For example, some of your lab users are allowed to manage custom images, or the lab admin are not allowed to update some lab policies. When this happens, you can easily achieve it by creating custom roles (See “Grant user permissions to specific lab policies” for more details).

Create once, use everywhere

DevTest Labs resources (labs, custom images, formulas, artifacts, etc.) are reusable across labs, so that you don’t need to re-create the same thing from scratch.

DevTest Labs fully supports Azure Resource Manager (ARM) and follows the best practice of using resource groups. You can create multiple labs with the same settings/policies by deploying the same ARM template. The DevTest Labs ARM QuickStart template gallery in the GitHub repo shows you quite a few samples for various scenarios where you can use ARM templates, including creating labs, create lab VMs, create custom images, etc.

As mentioned earlier, you can create custom images from an existing lab VMs. This capability enables DevTest Labs to be the best place to prepare your base images. You can set up a lab VM first from an Azure Marketplace image, apply some artifacts or manually configure the system, and then select that VM to create a custom image with a few simple  . The VHD file of the custom image is saved in the lab’s storage account, and the image is immediately usable in the lab to create more VMs.

Create custom image

Figure 9: Create a custom image from an existing lab VM

Formulas can also be created from an existing lab VM (or from scratch). The article, “Manage formulas”, shows how you can do both. In addition, you can define and deploy formulas through ARM templates.

Since artifacts are loaded from your source control repository, they can be easily shared across labs as well.

Integrates with your existing toolchain

Azure DevTest Labs provides pre-made plug-ins, command-line tool and APIs that allow you to integrate your Dev/Test environments from labs to the release pipeline.

We recently made available Azure DevTest Labs Tasks in the Visual Studio Marketplace to better support your release pipeline in Visual Studio Team Services. The tasks respectively allow you to create a lab VM to run tests, save the VM with the latest bits as a golden image, and then delete the VM when it’s no longer needed after the testing is done.

VSTS tasks

Figure 10: DevTest Labs Tasks in Visual Studio Team Services

The cmdlets for some key lab actions are available in Azure PowerShell SDK and CLI. And the DevTest Labs REST APIs and .NET SDK gives you more power to customize the integration or even the lab experience for your lab users.


The General Availability of Azure DevTest Labs is an important milestone for our service. As you can see, with Azure DevTest Labs today, developers and testers can get their environments in minutes instead of days or weeks. You can also set quotas and policies, reuse templates and artifacts through source control, and integrate with your existing toolchains.

On the other hand, the GA release is not an end. There are still a lot of things in our roadmap that we can’t wait to build and ship to our customers, and your opinions are valuable for us to deliver the right solutions for your problems. We welcome ideas and suggestions on what DevTest Labs should support, so please do not hesitate to create an idea at the DevTest Labs feedback forum, or vote on others’ ideas.

If you run into any problems when using the DevTest Labs or have any questions, we are ready at the MSDN forum to help you.

To get latest information on the service releases or our thoughts on the DevTest Labs, come back often to this team blog and subscribe to our Service Updates.


Comments (4)

  1. Great service! I will have the opportunity to work extensively with this service in the next 12 months. In general, I love everything that makes development less complicated, I think every developer can relate to this.

    1. Xiaoying Guo says:

      Thanks, Ilija! Please don’t hesitate to let me know whenever you have any questions or need any help to use this service. We’d also appreciate your feedback!

  2. Raji says:

    Devtest lab has great features!

    It was working till yesterday..But facing the below error for any deployments we do , ex for creating vm, lab fails with the RequestDisallowedByPolicy and we are blocked currently.
    The resource action “Microsoft.DevTestLab/labs/write” is disallowed by one or more policies. Is it something to do with the subscription policies?

    Can you please us resolve the issue .

    Thanks in Advance!

    Can you please help us resolve this issue as we are blocked currently.

    1. Xiaoying Guo says:

      @Raji, is there any ARM policy set at your subscription? If there’s any, what are those policies? By the way, since it may require a little bit more back and forth conversation to sort out the problem you are facing, could you please post your issue at our MSDN forum for easier communication:

Skip to main content