Virtual Machine with Conditional Resources

Last updated: 9/18/2017

This template allows deploying a linux VM using new or existing resources for the Virtual Network, Storage and Public IP Address. It also allows for choosing between SSH and Password authenticate. The templates uses conditions and logic functions to remove the need for nested deployments.

This Azure Resource Manager template was created by a member of the community and not by Microsoft. Each Resource Manager template is licensed to you under a license agreement by its owner, not Microsoft. Microsoft is not responsible for Resource Manager templates provided and licensed by community members and does not screen for security, compatibility, or performance. Community Resource Manager templates are not supported under any Microsoft support program or service, and are made available AS IS without warranty of any kind.

Parameters

Parameter Name Description
location Location to for the resources.
vmName Name for the Virtual Machine.
adminUsername User name for the Virtual Machine.
authenticationType Type of authentication to use on the Virtual Machine.
adminPassword Password for the Virtual Machine.
sshPublicKey ssh key for the Virtual Machine.
vmSize Size for the Virtual Machine.
storageNewOrExisting Determines whether or not a new storage account should be provisioned.
storageAccountName Name of the storage account
storageAccountType Storage account type
storageAccountResourceGroupName Name of the resource group for the existing storage account
virtualNetworkNewOrExisting Determines whether or not a new virtual network should be provisioned.
virtualNetworkName Name of the virtual network
addressPrefix Address prefix of the virtual network
subnetName Name of the subnet
subnetPrefix Subnet prefix of the virtual network
virtualNetworkResourceGroupName Name of the resource group for the existing virtual network
publicIpNewOrExisting Determines whether or not a new public ip should be provisioned.
publicIpName Name of the public ip address
publicIpDns DNS of the public ip address for the VM
publicIpResourceGroupName Name of the resource group for the public ip address

Use the template

PowerShell

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateUri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-vm-new-or-existing-conditions/azuredeploy.json
Install and configure Azure PowerShell

Command line

azure config mode arm
azure group deployment create <my-resource-group> <my-deployment-name> --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-vm-new-or-existing-conditions/azuredeploy.json
Install and Configure the Azure Cross-Platform Command-Line Interface