Microsoft.DevTestLab labs/virtualmachines 2016-05-15

Bicep resource definition

The labs/virtualmachines resource type can be deployed to: Resource groups.

To learn about resource group deployments, see Bicep.

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.DevTestLab/labs/virtualmachines resource, add the following Bicep to your template.

resource symbolicname 'Microsoft.DevTestLab/labs/virtualmachines@2016-05-15' = {
  name: 'string'
  location: 'string'
  tags: {
    tagName1: 'tagValue1'
    tagName2: 'tagValue2'
  }
  parent: resourceSymbolicName
  properties: {
    allowClaim: bool
    applicableSchedule: {
      location: 'string'
      properties: {
        labVmsShutdown: {
          location: 'string'
          properties: {
            dailyRecurrence: {
              time: 'string'
            }
            hourlyRecurrence: {
              minute: int
            }
            notificationSettings: {
              status: 'string'
              timeInMinutes: int
              webhookUrl: 'string'
            }
            provisioningState: 'string'
            status: 'string'
            targetResourceId: 'string'
            taskType: 'string'
            timeZoneId: 'string'
            uniqueIdentifier: 'string'
            weeklyRecurrence: {
              time: 'string'
              weekdays: [
                'string'
              ]
            }
          }
          tags: {}
        }
        labVmsStartup: {
          location: 'string'
          properties: {
            dailyRecurrence: {
              time: 'string'
            }
            hourlyRecurrence: {
              minute: int
            }
            notificationSettings: {
              status: 'string'
              timeInMinutes: int
              webhookUrl: 'string'
            }
            provisioningState: 'string'
            status: 'string'
            targetResourceId: 'string'
            taskType: 'string'
            timeZoneId: 'string'
            uniqueIdentifier: 'string'
            weeklyRecurrence: {
              time: 'string'
              weekdays: [
                'string'
              ]
            }
          }
          tags: {}
        }
      }
      tags: {}
      location: 'string'
      properties: {
        labVmsShutdown: {
          location: 'string'
          properties: {
            dailyRecurrence: {
              time: 'string'
            }
            hourlyRecurrence: {
              minute: int
            }
            notificationSettings: {
              status: 'string'
              timeInMinutes: int
              webhookUrl: 'string'
            }
            provisioningState: 'string'
            status: 'string'
            targetResourceId: 'string'
            taskType: 'string'
            timeZoneId: 'string'
            uniqueIdentifier: 'string'
            weeklyRecurrence: {
              time: 'string'
              weekdays: [
                'string'
              ]
            }
          }
          tags: {}
        }
        labVmsStartup: {
          location: 'string'
          properties: {
            dailyRecurrence: {
              time: 'string'
            }
            hourlyRecurrence: {
              minute: int
            }
            notificationSettings: {
              status: 'string'
              timeInMinutes: int
              webhookUrl: 'string'
            }
            provisioningState: 'string'
            status: 'string'
            targetResourceId: 'string'
            taskType: 'string'
            timeZoneId: 'string'
            uniqueIdentifier: 'string'
            weeklyRecurrence: {
              time: 'string'
              weekdays: [
                'string'
              ]
            }
          }
          tags: {}
        }
      }
      tags: {}
    }
    artifactDeploymentStatus: {
      artifactsApplied: int
      deploymentStatus: 'string'
      totalArtifacts: int
    }
    artifacts: [
      {
        artifactId: 'string'
        deploymentStatusMessage: 'string'
        installTime: 'string'
        parameters: [
          {
            name: 'string'
            value: 'string'
          }
        ]
        status: 'string'
        vmExtensionStatusMessage: 'string'
      }
    ]
    computeVm: {
      dataDiskIds: [
        'string'
      ]
      dataDisks: [
        {
          diskSizeGiB: int
          diskUri: 'string'
          managedDiskId: 'string'
          name: 'string'
        }
      ]
      networkInterfaceId: 'string'
      osDiskId: 'string'
      osType: 'string'
      statuses: [
        {
          code: 'string'
          displayStatus: 'string'
          message: 'string'
        }
      ]
      vmSize: 'string'
    }
    createdByUser: 'string'
    createdByUserId: 'string'
    createdDate: 'string'
    customImageId: 'string'
    disallowPublicIpAddress: bool
    environmentId: 'string'
    expirationDate: 'string'
    fqdn: 'string'
    galleryImageReference: {
      offer: 'string'
      osType: 'string'
      publisher: 'string'
      sku: 'string'
      version: 'string'
    }
    isAuthenticationWithSshKey: bool
    labSubnetName: 'string'
    labVirtualNetworkId: 'string'
    networkInterface: {
      dnsName: 'string'
      privateIpAddress: 'string'
      publicIpAddress: 'string'
      publicIpAddressId: 'string'
      rdpAuthority: 'string'
      sharedPublicIpAddressConfiguration: {
        inboundNatRules: [
          {
            backendPort: int
            frontendPort: int
            transportProtocol: 'string'
          }
        ]
      }
      sshAuthority: 'string'
      subnetId: 'string'
      virtualNetworkId: 'string'
    }
    notes: 'string'
    osType: 'string'
    ownerObjectId: 'string'
    ownerUserPrincipalName: 'string'
    password: 'string'
    provisioningState: 'string'
    size: 'string'
    sshKey: 'string'
    storageType: 'string'
    uniqueIdentifier: 'string'
    userName: 'string'
    virtualMachineCreationSource: 'string'
  }
}

Property values

labs/virtualmachines

Name Description Value
name The resource name

See how to set names and types for child resources in Bicep.
string (required)

Character limit: 1-15 (Windows)
1-64 (Linux)

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric. Can't be all numbers.
location The location of the resource. string
tags The tags of the resource. Dictionary of tag names and values. See Tags in templates
parent In Bicep, you can specify the parent resource for a child resource. You only need to add this property when the child resource is declared outside of the parent resource.

For more information, see Child resource outside parent resource.
Symbolic name for resource of type: labs
properties The properties of the resource. LabVirtualMachineProperties (required)

LabVirtualMachineProperties

Name Description Value
allowClaim Indicates whether another user can take ownership of the virtual machine bool
applicableSchedule The applicable schedule for the virtual machine. ApplicableSchedule
artifactDeploymentStatus The artifact deployment status for the virtual machine. ArtifactDeploymentStatusProperties
artifacts The artifacts to be installed on the virtual machine. ArtifactInstallProperties[]
computeVm The compute virtual machine properties. ComputeVmProperties
createdByUser The email address of creator of the virtual machine. string
createdByUserId The object identifier of the creator of the virtual machine. string
createdDate The creation date of the virtual machine. string
customImageId The custom image identifier of the virtual machine. string
disallowPublicIpAddress Indicates whether the virtual machine is to be created without a public IP address. bool
environmentId The resource ID of the environment that contains this virtual machine, if any. string
expirationDate The expiration date for VM. string
fqdn The fully-qualified domain name of the virtual machine. string
galleryImageReference The Microsoft Azure Marketplace image reference of the virtual machine. GalleryImageReference
isAuthenticationWithSshKey Indicates whether this virtual machine uses an SSH key for authentication. bool
labSubnetName The lab subnet name of the virtual machine. string
labVirtualNetworkId The lab virtual network identifier of the virtual machine. string
networkInterface The network interface properties. NetworkInterfaceProperties
notes The notes of the virtual machine. string
osType The OS type of the virtual machine. string
ownerObjectId The object identifier of the owner of the virtual machine. string
ownerUserPrincipalName The user principal name of the virtual machine owner. string
password The password of the virtual machine administrator. string
provisioningState The provisioning status of the resource. string
size The size of the virtual machine. string
sshKey The SSH key of the virtual machine administrator. string
storageType Storage type to use for virtual machine (i.e. Standard, Premium). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
userName The user name of the virtual machine. string
virtualMachineCreationSource Tells source of creation of lab virtual machine. Output property only. 'FromCustomImage'
'FromGalleryImage'

ApplicableSchedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object

ApplicableScheduleProperties

Name Description Value
labVmsShutdown The auto-shutdown schedule, if one has been set at the lab or lab resource level. Schedule
labVmsStartup The auto-startup schedule, if one has been set at the lab or lab resource level. Schedule

Schedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ScheduleProperties (required)
tags The tags of the resource. object

ScheduleProperties

Name Description Value
dailyRecurrence If the schedule will occur once each day of the week, specify the daily recurrence. DayDetails
hourlyRecurrence If the schedule will occur multiple times a day, specify the hourly recurrence. HourDetails
notificationSettings Notification settings. NotificationSettings
provisioningState The provisioning status of the resource. string
status The status of the schedule (i.e. Enabled, Disabled) 'Disabled'
'Enabled'
targetResourceId The resource ID to which the schedule belongs string
taskType The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart). string
timeZoneId The time zone ID (e.g. Pacific Standard time). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
weeklyRecurrence If the schedule will occur only some days of the week, specify the weekly recurrence. WeekDetails

DayDetails

Name Description Value
time The time of day the schedule will occur. string

HourDetails

Name Description Value
minute Minutes of the hour the schedule will run. int

NotificationSettings

Name Description Value
status If notifications are enabled for this schedule (i.e. Enabled, Disabled). 'Disabled'
'Enabled'
timeInMinutes Time in minutes before event at which notification will be sent. int
webhookUrl The webhook URL to which the notification will be sent. string

WeekDetails

Name Description Value
time The time of the day the schedule will occur. string
weekdays The days of the week for which the schedule is set (e.g. Sunday, Monday, Tuesday, etc.). string[]

ArtifactDeploymentStatusProperties

Name Description Value
artifactsApplied The total count of the artifacts that were successfully applied. int
deploymentStatus The deployment status of the artifact. string
totalArtifacts The total count of the artifacts that were tentatively applied. int

ArtifactInstallProperties

Name Description Value
artifactId The artifact's identifier. string
deploymentStatusMessage The status message from the deployment. string
installTime The time that the artifact starts to install on the virtual machine. string
parameters The parameters of the artifact. ArtifactParameterProperties[]
status The status of the artifact. string
vmExtensionStatusMessage The status message from the virtual machine extension. string

ArtifactParameterProperties

Name Description Value
name The name of the artifact parameter. string
value The value of the artifact parameter. string

ComputeVmProperties

Name Description Value
dataDiskIds Gets data disks blob uri for the virtual machine. string[]
dataDisks Gets all data disks attached to the virtual machine. ComputeDataDisk[]
networkInterfaceId Gets the network interface ID of the virtual machine. string
osDiskId Gets OS disk blob uri for the virtual machine. string
osType Gets the OS type of the virtual machine. string
statuses Gets the statuses of the virtual machine. ComputeVmInstanceViewStatus[]
vmSize Gets the size of the virtual machine. string

ComputeDataDisk

Name Description Value
diskSizeGiB Gets data disk size in GiB. int
diskUri When backed by a blob, the URI of underlying blob. string
managedDiskId When backed by managed disk, this is the ID of the compute disk resource. string
name Gets data disk name. string

ComputeVmInstanceViewStatus

Name Description Value
code Gets the status Code. string
displayStatus Gets the short localizable label for the status. string
message Gets the message associated with the status. string

GalleryImageReference

Name Description Value
offer The offer of the gallery image. string
osType The OS type of the gallery image. string
publisher The publisher of the gallery image. string
sku The SKU of the gallery image. string
version The version of the gallery image. string

NetworkInterfaceProperties

Name Description Value
dnsName The DNS name. string
privateIpAddress The private IP address. string
publicIpAddress The public IP address. string
publicIpAddressId The resource ID of the public IP address. string
rdpAuthority The RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol). string
sharedPublicIpAddressConfiguration The configuration for sharing a public IP address across multiple virtual machines. SharedPublicIpAddressConfiguration
sshAuthority The SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH. string
subnetId The resource ID of the sub net. string
virtualNetworkId The resource ID of the virtual network. string

SharedPublicIpAddressConfiguration

Name Description Value
inboundNatRules The incoming NAT rules InboundNatRule[]

InboundNatRule

Name Description Value
backendPort The port to which the external traffic will be redirected. int
frontendPort The external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically. int
transportProtocol The transport protocol for the endpoint. 'Tcp'
'Udp'

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Creates a lab in Azure DevTest Labs with a Windows Server VM

Deploy to Azure
This template creates a new DevTest Lab / DTL instance with a Windows Server 2019 Datacenter VM in it. More Azure Resource Manager Quickstart Templates for Azure DevTest Labs available at https://github.com/Azure/azure-devtestlab/tree/master/ARMTemplates
Creates a lab in Azure DevTest Labs with a claimed VM

Deploy to Azure
This template creates a new DevTest Lab / DTL instance with a claimed Windows Server 2019 Datacenter VM in it. More Azure Resource Manager Quickstart Templates for Azure DevTest Labs available at https://github.com/Azure/azure-devtestlab/tree/master/ARMTemplates

ARM template resource definition

The labs/virtualmachines resource type can be deployed to: Resource groups.

To learn about resource group deployments, see ARM template.

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.DevTestLab/labs/virtualmachines resource, add the following JSON to your template.

{
  "type": "Microsoft.DevTestLab/labs/virtualmachines",
  "apiVersion": "2016-05-15",
  "name": "string",
  "location": "string",
  "tags": {
    "tagName1": "tagValue1",
    "tagName2": "tagValue2"
  },
  "properties": {
    "allowClaim": "bool",
    "applicableSchedule": {
      "location": "string",
      "properties": {
        "labVmsShutdown": {
          "location": "string",
          "properties": {
            "dailyRecurrence": {
              "time": "string"
            },
            "hourlyRecurrence": {
              "minute": "int"
            },
            "notificationSettings": {
              "status": "string",
              "timeInMinutes": "int",
              "webhookUrl": "string"
            },
            "provisioningState": "string",
            "status": "string",
            "targetResourceId": "string",
            "taskType": "string",
            "timeZoneId": "string",
            "uniqueIdentifier": "string",
            "weeklyRecurrence": {
              "time": "string",
              "weekdays": [ "string" ]
            }
          },
          "tags": {}
        },
        "labVmsStartup": {
          "location": "string",
          "properties": {
            "dailyRecurrence": {
              "time": "string"
            },
            "hourlyRecurrence": {
              "minute": "int"
            },
            "notificationSettings": {
              "status": "string",
              "timeInMinutes": "int",
              "webhookUrl": "string"
            },
            "provisioningState": "string",
            "status": "string",
            "targetResourceId": "string",
            "taskType": "string",
            "timeZoneId": "string",
            "uniqueIdentifier": "string",
            "weeklyRecurrence": {
              "time": "string",
              "weekdays": [ "string" ]
            }
          },
          "tags": {}
        }
      },
      "tags": {},
      "location": "string",
      "properties": {
        "labVmsShutdown": {
          "location": "string",
          "properties": {
            "dailyRecurrence": {
              "time": "string"
            },
            "hourlyRecurrence": {
              "minute": "int"
            },
            "notificationSettings": {
              "status": "string",
              "timeInMinutes": "int",
              "webhookUrl": "string"
            },
            "provisioningState": "string",
            "status": "string",
            "targetResourceId": "string",
            "taskType": "string",
            "timeZoneId": "string",
            "uniqueIdentifier": "string",
            "weeklyRecurrence": {
              "time": "string",
              "weekdays": [ "string" ]
            }
          },
          "tags": {}
        },
        "labVmsStartup": {
          "location": "string",
          "properties": {
            "dailyRecurrence": {
              "time": "string"
            },
            "hourlyRecurrence": {
              "minute": "int"
            },
            "notificationSettings": {
              "status": "string",
              "timeInMinutes": "int",
              "webhookUrl": "string"
            },
            "provisioningState": "string",
            "status": "string",
            "targetResourceId": "string",
            "taskType": "string",
            "timeZoneId": "string",
            "uniqueIdentifier": "string",
            "weeklyRecurrence": {
              "time": "string",
              "weekdays": [ "string" ]
            }
          },
          "tags": {}
        }
      },
      "tags": {}
    },
    "artifactDeploymentStatus": {
      "artifactsApplied": "int",
      "deploymentStatus": "string",
      "totalArtifacts": "int"
    },
    "artifacts": [
      {
        "artifactId": "string",
        "deploymentStatusMessage": "string",
        "installTime": "string",
        "parameters": [
          {
            "name": "string",
            "value": "string"
          }
        ],
        "status": "string",
        "vmExtensionStatusMessage": "string"
      }
    ],
    "computeVm": {
      "dataDiskIds": [ "string" ],
      "dataDisks": [
        {
          "diskSizeGiB": "int",
          "diskUri": "string",
          "managedDiskId": "string",
          "name": "string"
        }
      ],
      "networkInterfaceId": "string",
      "osDiskId": "string",
      "osType": "string",
      "statuses": [
        {
          "code": "string",
          "displayStatus": "string",
          "message": "string"
        }
      ],
      "vmSize": "string"
    },
    "createdByUser": "string",
    "createdByUserId": "string",
    "createdDate": "string",
    "customImageId": "string",
    "disallowPublicIpAddress": "bool",
    "environmentId": "string",
    "expirationDate": "string",
    "fqdn": "string",
    "galleryImageReference": {
      "offer": "string",
      "osType": "string",
      "publisher": "string",
      "sku": "string",
      "version": "string"
    },
    "isAuthenticationWithSshKey": "bool",
    "labSubnetName": "string",
    "labVirtualNetworkId": "string",
    "networkInterface": {
      "dnsName": "string",
      "privateIpAddress": "string",
      "publicIpAddress": "string",
      "publicIpAddressId": "string",
      "rdpAuthority": "string",
      "sharedPublicIpAddressConfiguration": {
        "inboundNatRules": [
          {
            "backendPort": "int",
            "frontendPort": "int",
            "transportProtocol": "string"
          }
        ]
      },
      "sshAuthority": "string",
      "subnetId": "string",
      "virtualNetworkId": "string"
    },
    "notes": "string",
    "osType": "string",
    "ownerObjectId": "string",
    "ownerUserPrincipalName": "string",
    "password": "string",
    "provisioningState": "string",
    "size": "string",
    "sshKey": "string",
    "storageType": "string",
    "uniqueIdentifier": "string",
    "userName": "string",
    "virtualMachineCreationSource": "string"
  }
}

Property values

labs/virtualmachines

Name Description Value
type The resource type 'Microsoft.DevTestLab/labs/virtualmachines'
apiVersion The resource api version '2016-05-15'
name The resource name

See how to set names and types for child resources in JSON ARM templates.
string (required)

Character limit: 1-15 (Windows)
1-64 (Linux)

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric. Can't be all numbers.
location The location of the resource. string
tags The tags of the resource. Dictionary of tag names and values. See Tags in templates
properties The properties of the resource. LabVirtualMachineProperties (required)

LabVirtualMachineProperties

Name Description Value
allowClaim Indicates whether another user can take ownership of the virtual machine bool
applicableSchedule The applicable schedule for the virtual machine. ApplicableSchedule
artifactDeploymentStatus The artifact deployment status for the virtual machine. ArtifactDeploymentStatusProperties
artifacts The artifacts to be installed on the virtual machine. ArtifactInstallProperties[]
computeVm The compute virtual machine properties. ComputeVmProperties
createdByUser The email address of creator of the virtual machine. string
createdByUserId The object identifier of the creator of the virtual machine. string
createdDate The creation date of the virtual machine. string
customImageId The custom image identifier of the virtual machine. string
disallowPublicIpAddress Indicates whether the virtual machine is to be created without a public IP address. bool
environmentId The resource ID of the environment that contains this virtual machine, if any. string
expirationDate The expiration date for VM. string
fqdn The fully-qualified domain name of the virtual machine. string
galleryImageReference The Microsoft Azure Marketplace image reference of the virtual machine. GalleryImageReference
isAuthenticationWithSshKey Indicates whether this virtual machine uses an SSH key for authentication. bool
labSubnetName The lab subnet name of the virtual machine. string
labVirtualNetworkId The lab virtual network identifier of the virtual machine. string
networkInterface The network interface properties. NetworkInterfaceProperties
notes The notes of the virtual machine. string
osType The OS type of the virtual machine. string
ownerObjectId The object identifier of the owner of the virtual machine. string
ownerUserPrincipalName The user principal name of the virtual machine owner. string
password The password of the virtual machine administrator. string
provisioningState The provisioning status of the resource. string
size The size of the virtual machine. string
sshKey The SSH key of the virtual machine administrator. string
storageType Storage type to use for virtual machine (i.e. Standard, Premium). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
userName The user name of the virtual machine. string
virtualMachineCreationSource Tells source of creation of lab virtual machine. Output property only. 'FromCustomImage'
'FromGalleryImage'

ApplicableSchedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object

ApplicableScheduleProperties

Name Description Value
labVmsShutdown The auto-shutdown schedule, if one has been set at the lab or lab resource level. Schedule
labVmsStartup The auto-startup schedule, if one has been set at the lab or lab resource level. Schedule

Schedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ScheduleProperties (required)
tags The tags of the resource. object

ScheduleProperties

Name Description Value
dailyRecurrence If the schedule will occur once each day of the week, specify the daily recurrence. DayDetails
hourlyRecurrence If the schedule will occur multiple times a day, specify the hourly recurrence. HourDetails
notificationSettings Notification settings. NotificationSettings
provisioningState The provisioning status of the resource. string
status The status of the schedule (i.e. Enabled, Disabled) 'Disabled'
'Enabled'
targetResourceId The resource ID to which the schedule belongs string
taskType The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart). string
timeZoneId The time zone ID (e.g. Pacific Standard time). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
weeklyRecurrence If the schedule will occur only some days of the week, specify the weekly recurrence. WeekDetails

DayDetails

Name Description Value
time The time of day the schedule will occur. string

HourDetails

Name Description Value
minute Minutes of the hour the schedule will run. int

NotificationSettings

Name Description Value
status If notifications are enabled for this schedule (i.e. Enabled, Disabled). 'Disabled'
'Enabled'
timeInMinutes Time in minutes before event at which notification will be sent. int
webhookUrl The webhook URL to which the notification will be sent. string

WeekDetails

Name Description Value
time The time of the day the schedule will occur. string
weekdays The days of the week for which the schedule is set (e.g. Sunday, Monday, Tuesday, etc.). string[]

ArtifactDeploymentStatusProperties

Name Description Value
artifactsApplied The total count of the artifacts that were successfully applied. int
deploymentStatus The deployment status of the artifact. string
totalArtifacts The total count of the artifacts that were tentatively applied. int

ArtifactInstallProperties

Name Description Value
artifactId The artifact's identifier. string
deploymentStatusMessage The status message from the deployment. string
installTime The time that the artifact starts to install on the virtual machine. string
parameters The parameters of the artifact. ArtifactParameterProperties[]
status The status of the artifact. string
vmExtensionStatusMessage The status message from the virtual machine extension. string

ArtifactParameterProperties

Name Description Value
name The name of the artifact parameter. string
value The value of the artifact parameter. string

ComputeVmProperties

Name Description Value
dataDiskIds Gets data disks blob uri for the virtual machine. string[]
dataDisks Gets all data disks attached to the virtual machine. ComputeDataDisk[]
networkInterfaceId Gets the network interface ID of the virtual machine. string
osDiskId Gets OS disk blob uri for the virtual machine. string
osType Gets the OS type of the virtual machine. string
statuses Gets the statuses of the virtual machine. ComputeVmInstanceViewStatus[]
vmSize Gets the size of the virtual machine. string

ComputeDataDisk

Name Description Value
diskSizeGiB Gets data disk size in GiB. int
diskUri When backed by a blob, the URI of underlying blob. string
managedDiskId When backed by managed disk, this is the ID of the compute disk resource. string
name Gets data disk name. string

ComputeVmInstanceViewStatus

Name Description Value
code Gets the status Code. string
displayStatus Gets the short localizable label for the status. string
message Gets the message associated with the status. string

GalleryImageReference

Name Description Value
offer The offer of the gallery image. string
osType The OS type of the gallery image. string
publisher The publisher of the gallery image. string
sku The SKU of the gallery image. string
version The version of the gallery image. string

NetworkInterfaceProperties

Name Description Value
dnsName The DNS name. string
privateIpAddress The private IP address. string
publicIpAddress The public IP address. string
publicIpAddressId The resource ID of the public IP address. string
rdpAuthority The RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol). string
sharedPublicIpAddressConfiguration The configuration for sharing a public IP address across multiple virtual machines. SharedPublicIpAddressConfiguration
sshAuthority The SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH. string
subnetId The resource ID of the sub net. string
virtualNetworkId The resource ID of the virtual network. string

SharedPublicIpAddressConfiguration

Name Description Value
inboundNatRules The incoming NAT rules InboundNatRule[]

InboundNatRule

Name Description Value
backendPort The port to which the external traffic will be redirected. int
frontendPort The external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically. int
transportProtocol The transport protocol for the endpoint. 'Tcp'
'Udp'

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Creates a lab in Azure DevTest Labs with a Windows Server VM

Deploy to Azure
This template creates a new DevTest Lab / DTL instance with a Windows Server 2019 Datacenter VM in it. More Azure Resource Manager Quickstart Templates for Azure DevTest Labs available at https://github.com/Azure/azure-devtestlab/tree/master/ARMTemplates
Creates a lab in Azure DevTest Labs with a claimed VM

Deploy to Azure
This template creates a new DevTest Lab / DTL instance with a claimed Windows Server 2019 Datacenter VM in it. More Azure Resource Manager Quickstart Templates for Azure DevTest Labs available at https://github.com/Azure/azure-devtestlab/tree/master/ARMTemplates

Terraform (AzAPI provider) resource definition

The labs/virtualmachines resource type can be deployed to: Resource groups.

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.DevTestLab/labs/virtualmachines resource, add the following Terraform to your template.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DevTestLab/labs/virtualmachines@2016-05-15"
  name = "string"
  location = "string"
  parent_id = "string"
  tags = {
    tagName1 = "tagValue1"
    tagName2 = "tagValue2"
  }
  body = jsonencode({
    properties = {
      allowClaim = bool
      applicableSchedule = {
        location = "string"
        properties = {
          labVmsShutdown = {
            location = "string"
            properties = {
              dailyRecurrence = {
                time = "string"
              }
              hourlyRecurrence = {
                minute = int
              }
              notificationSettings = {
                status = "string"
                timeInMinutes = int
                webhookUrl = "string"
              }
              provisioningState = "string"
              status = "string"
              targetResourceId = "string"
              taskType = "string"
              timeZoneId = "string"
              uniqueIdentifier = "string"
              weeklyRecurrence = {
                time = "string"
                weekdays = [
                  "string"
                ]
              }
            }
            tags = {}
          }
          labVmsStartup = {
            location = "string"
            properties = {
              dailyRecurrence = {
                time = "string"
              }
              hourlyRecurrence = {
                minute = int
              }
              notificationSettings = {
                status = "string"
                timeInMinutes = int
                webhookUrl = "string"
              }
              provisioningState = "string"
              status = "string"
              targetResourceId = "string"
              taskType = "string"
              timeZoneId = "string"
              uniqueIdentifier = "string"
              weeklyRecurrence = {
                time = "string"
                weekdays = [
                  "string"
                ]
              }
            }
            tags = {}
          }
        }
        tags = {}
        location = "string"
        properties = {
          labVmsShutdown = {
            location = "string"
            properties = {
              dailyRecurrence = {
                time = "string"
              }
              hourlyRecurrence = {
                minute = int
              }
              notificationSettings = {
                status = "string"
                timeInMinutes = int
                webhookUrl = "string"
              }
              provisioningState = "string"
              status = "string"
              targetResourceId = "string"
              taskType = "string"
              timeZoneId = "string"
              uniqueIdentifier = "string"
              weeklyRecurrence = {
                time = "string"
                weekdays = [
                  "string"
                ]
              }
            }
            tags = {}
          }
          labVmsStartup = {
            location = "string"
            properties = {
              dailyRecurrence = {
                time = "string"
              }
              hourlyRecurrence = {
                minute = int
              }
              notificationSettings = {
                status = "string"
                timeInMinutes = int
                webhookUrl = "string"
              }
              provisioningState = "string"
              status = "string"
              targetResourceId = "string"
              taskType = "string"
              timeZoneId = "string"
              uniqueIdentifier = "string"
              weeklyRecurrence = {
                time = "string"
                weekdays = [
                  "string"
                ]
              }
            }
            tags = {}
          }
        }
        tags = {}
      }
      artifactDeploymentStatus = {
        artifactsApplied = int
        deploymentStatus = "string"
        totalArtifacts = int
      }
      artifacts = [
        {
          artifactId = "string"
          deploymentStatusMessage = "string"
          installTime = "string"
          parameters = [
            {
              name = "string"
              value = "string"
            }
          ]
          status = "string"
          vmExtensionStatusMessage = "string"
        }
      ]
      computeVm = {
        dataDiskIds = [
          "string"
        ]
        dataDisks = [
          {
            diskSizeGiB = int
            diskUri = "string"
            managedDiskId = "string"
            name = "string"
          }
        ]
        networkInterfaceId = "string"
        osDiskId = "string"
        osType = "string"
        statuses = [
          {
            code = "string"
            displayStatus = "string"
            message = "string"
          }
        ]
        vmSize = "string"
      }
      createdByUser = "string"
      createdByUserId = "string"
      createdDate = "string"
      customImageId = "string"
      disallowPublicIpAddress = bool
      environmentId = "string"
      expirationDate = "string"
      fqdn = "string"
      galleryImageReference = {
        offer = "string"
        osType = "string"
        publisher = "string"
        sku = "string"
        version = "string"
      }
      isAuthenticationWithSshKey = bool
      labSubnetName = "string"
      labVirtualNetworkId = "string"
      networkInterface = {
        dnsName = "string"
        privateIpAddress = "string"
        publicIpAddress = "string"
        publicIpAddressId = "string"
        rdpAuthority = "string"
        sharedPublicIpAddressConfiguration = {
          inboundNatRules = [
            {
              backendPort = int
              frontendPort = int
              transportProtocol = "string"
            }
          ]
        }
        sshAuthority = "string"
        subnetId = "string"
        virtualNetworkId = "string"
      }
      notes = "string"
      osType = "string"
      ownerObjectId = "string"
      ownerUserPrincipalName = "string"
      password = "string"
      provisioningState = "string"
      size = "string"
      sshKey = "string"
      storageType = "string"
      uniqueIdentifier = "string"
      userName = "string"
      virtualMachineCreationSource = "string"
    }
  })
}

Property values

labs/virtualmachines

Name Description Value
type The resource type "Microsoft.DevTestLab/labs/virtualmachines@2016-05-15"
name The resource name string (required)

Character limit: 1-15 (Windows)
1-64 (Linux)

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric. Can't be all numbers.
location The location of the resource. string
parent_id The ID of the resource that is the parent for this resource. ID for resource of type: labs
tags The tags of the resource. Dictionary of tag names and values.
properties The properties of the resource. LabVirtualMachineProperties (required)

LabVirtualMachineProperties

Name Description Value
allowClaim Indicates whether another user can take ownership of the virtual machine bool
applicableSchedule The applicable schedule for the virtual machine. ApplicableSchedule
artifactDeploymentStatus The artifact deployment status for the virtual machine. ArtifactDeploymentStatusProperties
artifacts The artifacts to be installed on the virtual machine. ArtifactInstallProperties[]
computeVm The compute virtual machine properties. ComputeVmProperties
createdByUser The email address of creator of the virtual machine. string
createdByUserId The object identifier of the creator of the virtual machine. string
createdDate The creation date of the virtual machine. string
customImageId The custom image identifier of the virtual machine. string
disallowPublicIpAddress Indicates whether the virtual machine is to be created without a public IP address. bool
environmentId The resource ID of the environment that contains this virtual machine, if any. string
expirationDate The expiration date for VM. string
fqdn The fully-qualified domain name of the virtual machine. string
galleryImageReference The Microsoft Azure Marketplace image reference of the virtual machine. GalleryImageReference
isAuthenticationWithSshKey Indicates whether this virtual machine uses an SSH key for authentication. bool
labSubnetName The lab subnet name of the virtual machine. string
labVirtualNetworkId The lab virtual network identifier of the virtual machine. string
networkInterface The network interface properties. NetworkInterfaceProperties
notes The notes of the virtual machine. string
osType The OS type of the virtual machine. string
ownerObjectId The object identifier of the owner of the virtual machine. string
ownerUserPrincipalName The user principal name of the virtual machine owner. string
password The password of the virtual machine administrator. string
provisioningState The provisioning status of the resource. string
size The size of the virtual machine. string
sshKey The SSH key of the virtual machine administrator. string
storageType Storage type to use for virtual machine (i.e. Standard, Premium). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
userName The user name of the virtual machine. string
virtualMachineCreationSource Tells source of creation of lab virtual machine. Output property only. "FromCustomImage"
"FromGalleryImage"

ApplicableSchedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object
location The location of the resource. string
properties The properties of the resource. ApplicableScheduleProperties (required)
tags The tags of the resource. object

ApplicableScheduleProperties

Name Description Value
labVmsShutdown The auto-shutdown schedule, if one has been set at the lab or lab resource level. Schedule
labVmsStartup The auto-startup schedule, if one has been set at the lab or lab resource level. Schedule

Schedule

Name Description Value
location The location of the resource. string
properties The properties of the resource. ScheduleProperties (required)
tags The tags of the resource. object

ScheduleProperties

Name Description Value
dailyRecurrence If the schedule will occur once each day of the week, specify the daily recurrence. DayDetails
hourlyRecurrence If the schedule will occur multiple times a day, specify the hourly recurrence. HourDetails
notificationSettings Notification settings. NotificationSettings
provisioningState The provisioning status of the resource. string
status The status of the schedule (i.e. Enabled, Disabled) "Disabled"
"Enabled"
targetResourceId The resource ID to which the schedule belongs string
taskType The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart). string
timeZoneId The time zone ID (e.g. Pacific Standard time). string
uniqueIdentifier The unique immutable identifier of a resource (Guid). string
weeklyRecurrence If the schedule will occur only some days of the week, specify the weekly recurrence. WeekDetails

DayDetails

Name Description Value
time The time of day the schedule will occur. string

HourDetails

Name Description Value
minute Minutes of the hour the schedule will run. int

NotificationSettings

Name Description Value
status If notifications are enabled for this schedule (i.e. Enabled, Disabled). "Disabled"
"Enabled"
timeInMinutes Time in minutes before event at which notification will be sent. int
webhookUrl The webhook URL to which the notification will be sent. string

WeekDetails

Name Description Value
time The time of the day the schedule will occur. string
weekdays The days of the week for which the schedule is set (e.g. Sunday, Monday, Tuesday, etc.). string[]

ArtifactDeploymentStatusProperties

Name Description Value
artifactsApplied The total count of the artifacts that were successfully applied. int
deploymentStatus The deployment status of the artifact. string
totalArtifacts The total count of the artifacts that were tentatively applied. int

ArtifactInstallProperties

Name Description Value
artifactId The artifact's identifier. string
deploymentStatusMessage The status message from the deployment. string
installTime The time that the artifact starts to install on the virtual machine. string
parameters The parameters of the artifact. ArtifactParameterProperties[]
status The status of the artifact. string
vmExtensionStatusMessage The status message from the virtual machine extension. string

ArtifactParameterProperties

Name Description Value
name The name of the artifact parameter. string
value The value of the artifact parameter. string

ComputeVmProperties

Name Description Value
dataDiskIds Gets data disks blob uri for the virtual machine. string[]
dataDisks Gets all data disks attached to the virtual machine. ComputeDataDisk[]
networkInterfaceId Gets the network interface ID of the virtual machine. string
osDiskId Gets OS disk blob uri for the virtual machine. string
osType Gets the OS type of the virtual machine. string
statuses Gets the statuses of the virtual machine. ComputeVmInstanceViewStatus[]
vmSize Gets the size of the virtual machine. string

ComputeDataDisk

Name Description Value
diskSizeGiB Gets data disk size in GiB. int
diskUri When backed by a blob, the URI of underlying blob. string
managedDiskId When backed by managed disk, this is the ID of the compute disk resource. string
name Gets data disk name. string

ComputeVmInstanceViewStatus

Name Description Value
code Gets the status Code. string
displayStatus Gets the short localizable label for the status. string
message Gets the message associated with the status. string

GalleryImageReference

Name Description Value
offer The offer of the gallery image. string
osType The OS type of the gallery image. string
publisher The publisher of the gallery image. string
sku The SKU of the gallery image. string
version The version of the gallery image. string

NetworkInterfaceProperties

Name Description Value
dnsName The DNS name. string
privateIpAddress The private IP address. string
publicIpAddress The public IP address. string
publicIpAddressId The resource ID of the public IP address. string
rdpAuthority The RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol). string
sharedPublicIpAddressConfiguration The configuration for sharing a public IP address across multiple virtual machines. SharedPublicIpAddressConfiguration
sshAuthority The SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH. string
subnetId The resource ID of the sub net. string
virtualNetworkId The resource ID of the virtual network. string

SharedPublicIpAddressConfiguration

Name Description Value
inboundNatRules The incoming NAT rules InboundNatRule[]

InboundNatRule

Name Description Value
backendPort The port to which the external traffic will be redirected. int
frontendPort The external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically. int
transportProtocol The transport protocol for the endpoint. "Tcp"
"Udp"