Azure DevTest Labs now makes it much easier for you to provision multiple-VM or PaaS environments from Azure Resource Manager templates, even with nested templates.

You can use a nested deployment to execute other Resource Manager templates from within a main Resource Manager template. You can decompose your deployment into a set of targeted, purpose-specific templates for easier testing, reuse, and readability.

The templateLink property used in the main Resource Manager template that points to nested templates requires an absolute URI, which needs to be publicly accessible by Azure. When your templates are in a private repository, a common solution is to copy those nested templates and store them temporarily in an Azure storage account, and then update the templateLink property with the storage account's URI and SAS token. If you have multiple testing stages/environments, the work becomes more challenging.

DevTest Labs solves this problem for you through the parameters _artifactsLocation and _artifactsLocationSasToken. As long as you use these two parameters to construct the parametersLink URI value, DevTest Labs will automatically manage the nested templates in your lab's storage and inject the correct values to these parameters without you taking any extra action. For more details how to construct the parametersLink URI by using these parameters, check out the blog post How Azure DevTest Labs makes nested ARM template deployments easier for testing environments.