Back to Azure Resource templates index <–
![]()
Creates an Azure Virtual Machine.
Template Locations
Infrastructure As Code Advisor (Beta)
WAF-compliance
The WAF-compliance advisor validates templates based on the Well Architected Framework practices. Every day a GitHub Action updates the templates compliance data and lists the recomendations.
Sustainbility Advisor
The sustainability advisor is based on the Sogeti Cloud Reference Architecture with sustainble practices. These sustainble practices cover application code, cloud infrastructures and data. The global Sogeti community is continously evolving the sustainble practices and every day new and tuned are added. For cloud infrastructures the sustainble practices are automatically validated and reported below.
note: when 100% it can be that there is no sustainble practices yet for this Cloud infrastructure.
Online documentation
Template reference
Service description
Functionality
This template deploys a Windows or Linux Azure Virtual Machine. Based on the specified parameters, the following Virtual Machine extensions will be added to the Virtual Machine:
Extensions for Windows Virtual Machines
- MicrosoftMonitoringAgent (not yet enabled)
- DependencyAgentWindows
- IaaSAntiMalware
- JsonADDomainExtension (not yet enabled)
- AzureDiskEncryption
- Azure Automation DSC
Extensions for Linux Virtual Machines
- OmsAgentForLinux (not yet enabled)
- DependencyAgentLinux
- AzureDiskEncryptionForLinux
- DSCForLinux
Requirements
See also Cloud Boost IaaS Landing zone and its release VSTS Azure IaaS Release
- Automation Account (DSC Extension)
- Active Directory (JsonADDomainExtension) (not yet enabled)
- OMS Workspace (MicrosoftMonitoringAgent/OmsAgentForLinux) (not yet enabled)
- Virtual Network and Subnet
Parameters
| Name | Type | Allowed Values | Default Value | Mandatory | Description |
|---|---|---|---|---|---|
| tagBillingIdentifier | string | Yes | BillingIdentifier tag. | ||
| azureAutomationAccountEndPoint | string | Yes | Automation Account Registration URL. | ||
| azureAutomationAccountKey | string | Yes | Automation Account Registration URL key. | ||
| vmCount | int | 1-99 | 1 | No | Number of Virtual Machines to be created. |
| vmExDscNodeConfigurationName | string | No | The name of the node configuration, on the Azure Automation DSC pull server, that this node will be configured as. If it does not contain a ‘.’ (dot), then a dot followed by the VM name will be appended. | ||
| vmVmSize | string | Standard_A2 | No | Virtual Machine’s Size. Please, check the online documentation for a complete list of available VM sizes: [Windows] https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes [Linux] https://docs.microsoft.com/en-us/azure/virtual-machines/linux/sizes |
|
| vmImageReferenceName | string | WS2016DC RHEL7.4 RHELSAPHANA7.3 SUSESAP12SP3 WS2016SQL2017ENT WS2016SQL2017STD WS2016SQL2017WEB |
WS2016DC | No | Name of Virtual Machine’s Image Reference on the Image reference list. |
| vmDataDiskCount | int | 0-16 | 0 | No | Number of Data disks that should be attached to the Virtual Machine. |
| vmDataDiskSizeGb | int | 31 63 127 511 1023 2047 4095 |
31 | No | Size (in Gb) of each of the Virtual Machine’s data disks |
| vmDiskStorageType | string | HDD SSD |
HDD | No | Indicator for the disk type. The following values are supported: HDD, SSD. |
| vmAvailabilitySetType | string | None HA |
None | No | Indicator for a high available setup type |
| vmAvailabilitySetPlatformFaultDomainCount | int | 2 | No | Fault Domain count of the Availability Set | |
| vmAvailabilitySetPlatformUpdateDomainCount | int | 3 | No | Update Domain count of the Availability Set | |
| migrateLicense | string | Yes No N/A |
No | No | Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. |
| vmPrivateIPAllocationMethod | string | Static Dynamic |
Dynamic | No | Set the Private IP on (each of) the Virtual Machine(s) to static or dynamic |
| vmPrivateIPRange | string | 10.0.24. | No | String containing the first 3 bytes of the Private IP(s) that will be created for the Virtual Machine(s) if vmPrivateIPAllocationMethod is set to static. | |
| vmPrivateIPIndexOffset | int | 1-254 | 4 | No | Last byte of the first of the Private IPs that will be created for the Virtual Machine(s) if vmPrivateIPAllocationMethod is set to static. |
| vmVnetSubnetResourceId | string | Yes | The Resource Id of the Virtual Network Subnet to which the Virtual Machine’s NIC(s) will be attached. | ||
| vmLinuxConfigurationSshPublicKeysKeyData | string | No | The content of the SSH RSA public key file as a Base64 encoded string. | ||
| vmIndexOffset | int | 0-999 | 1 | No | Index from where the Virtual Machine creation will be started. |
| vmAdminUserPassword | securestring | Yes | Password of the Virtual Machine’s local administrator user. | ||
| vmWindowsConfigurationTimeZone | string | No | The time zone of the VM. |
Output
The output of this template is an object with a property named virtualMachines containing an array with the Name(s) and ResourceId(s) of the created Virtual Machine(s)
| Name | Type | Description |
|---|---|---|
| virtualMachines | array | Array containing the Name(s) and ResourceId(s) of the created Virtual Machine(s). |
Sample Output:
"virtualMachines":[
{
"vmName": "vmname1",
"vmResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gtia001-it-weu-p01-adc/providers/Microsoft.Compute/virtualMachines/itweup01adcvm01"
},
{
"vmName": "vmname2",
"vmResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gtia001-it-weu-p01-adc/providers/Microsoft.Compute/virtualMachines/itweup01adcvm02" }
]
Compliance Advisor details
Resource Health Result
| Message | ResourceType | Severity |
|---|---|---|
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/availabilitySets | 2 |
| Your current API Version i.e.2017-03-30 for the resource Microsoft.Compute/availabilitySets is outdatedconsider updating to new recent version available i.e. 2023-03-01 or 2022-11-01 | Microsoft.Compute/availabilitySets | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Network/publicIPAddresses | 2 |
| Your current API Version i.e.2016-03-30 for the resource Microsoft.Network/publicIPAddresses is outdatedconsider updating to new recent version available i.e. 2023-04-01 or 2023-02-01 | Microsoft.Network/publicIPAddresses | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Network/networkInterfaces | 2 |
| Your current API Version i.e.2015-06-15 for the resource Microsoft.Network/networkInterfaces is outdatedconsider updating to new recent version available i.e. 2023-04-01 or 2023-02-01 | Microsoft.Network/networkInterfaces | 2 |
| Your current API Version i.e.2017-08-01 for the resource Microsoft.Resources/deployments is outdatedconsider updating to new recent version available i.e. 2022-09-01 or 2021-04-01 | Microsoft.Resources/deployments | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines | 2 |
| Install the extension to enable a vulnerability assessment solution on your virtual machines. | Microsoft.Compute/virtualMachines | 2 |
| It is recommended to implement Auto-Shutdown option for your virtual Machine if you are using non production or Dev/Test lab virtual machines, this will enable us to save compute power | Microsoft.Compute/virtualMachines | 2 |
| Your current API Version i.e.2017-03-30 for the resource Microsoft.Compute/virtualMachines is outdatedconsider updating to new recent version available i.e. 2023-03-01 or 2022-11-01 | Microsoft.Compute/virtualMachines | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Your current API Version i.e.2017-05-10 for the resource Microsoft.Resources/deployments is outdatedconsider updating to new recent version available i.e. 2022-09-01 or 2021-04-01 | Microsoft.Resources/deployments | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| Location for the resource should not be hardcoded, it should be parameterized and should refer from Resource Group's location i.e. [resourceGroup().location] | Microsoft.Compute/virtualMachines/extensions | 2 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/availabilitySets | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/availabilitySets | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/availabilitySets | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Network/publicIPAddresses | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Network/publicIPAddresses | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Network/publicIPAddresses | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Network/networkInterfaces | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Network/networkInterfaces | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Network/networkInterfaces | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Resources/deployments | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Resources/deployments | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Resources/deployments | 1 |
| It is recommended to use below property for your resource Microsoft.Compute/virtualMachines { "priority": "Spot" }Using Azure Spot Virtual Machines allows you to take advantage of our unused capacity at a significant cost savings. At any point in time when Azure needs the capacity back, the Azure infrastructure will evict Azure Spot Virtual Machines. Therefore, Azure Spot Virtual Machines are great for workloads that can handle interruptions like batch processing jobs, dev/test environments, large compute workloads, and more | Microsoft.Compute/virtualMachines | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines | 1 |
| Azure Backup should be enabled for virtual machines | Microsoft.Compute/virtualMachines | 1 |
| Use B-series VMs, B-series VM are used for typically idle applications that have sudden usage bursts. B-series VMs use baseline-level CPU power having you paying only for the minimal usage. When there’s a sudden burst, CPU power increases and you pay extra for the extra used capacity. | Microsoft.Compute/virtualMachines | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Resources/deployments | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Resources/deployments | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Resources/deployments | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to use tags for your resource, which is currently missing | Microsoft.Compute/virtualMachines/extensions | 1 |
| To help other contributors understand the purpose of the resource, specify comments for each resource in the template | Microsoft.Compute/virtualMachines/extensions | 1 |
| It is recommended to parameterized your tag and make it as object type | Microsoft.Compute/virtualMachines/extensions | 1 |
TemplateParameterHealthResult
| Message | Severity |
|---|---|
| Define default values for parameters that aren't sensitive. By specifying a default value, it's easier to deploy the template, and users of your template see an example of an appropriate value i.e. tagBillingIdentifierRead More | 1 |
| Define default values for parameters that aren't sensitive. By specifying a default value, it's easier to deploy the template, and users of your template see an example of an appropriate value i.e. dnsLabelPrefixRead More | 1 |
| Define default values for parameters that aren't sensitive. By specifying a default value, it's easier to deploy the template, and users of your template see an example of an appropriate value i.e. azureAutomationAccountEndPointRead More | 1 |
| Define default values for parameters that aren't sensitive. By specifying a default value, it's easier to deploy the template, and users of your template see an example of an appropriate value i.e. vmVnetSubnetResourceIdRead More | 1 |
| It is recommended to make your parameter as camel case, wherever possible for i.e. zoneRead More | 1 |
TemplateVariableHealthResult
| Message | Severity |
|---|---|
| It is recommended to make your variable as camel case, wherever possible for e.g. environmentRead More | 1 |
TemplateOthersHealthResult
| Message | Severity |
|---|---|
| Current schema version is not valid, Please change the version year to 2019-04-01 or greater | 2 |
Sustainable Advisor details
| Message | ResourceType | Severity |
|---|---|---|
| It is recommended to implement Auto-Shutdown option for your virtual Machine if you are using non production or Dev/Test lab virtual machines, this will enable us to save compute power | Microsoft.Compute/virtualMachines | 2 |
| It is recommended to use below property for your resource Microsoft.Compute/virtualMachines { "priority": "Spot" }Using Azure Spot Virtual Machines allows you to take advantage of our unused capacity at a significant cost savings. At any point in time when Azure needs the capacity back, the Azure infrastructure will evict Azure Spot Virtual Machines. Therefore, Azure Spot Virtual Machines are great for workloads that can handle interruptions like batch processing jobs, dev/test environments, large compute workloads, and more | Microsoft.Compute/virtualMachines | 1 |
| Use B-series VMs, B-series VM are used for typically idle applications that have sudden usage bursts. B-series VMs use baseline-level CPU power having you paying only for the minimal usage. When there’s a sudden burst, CPU power increases and you pay extra for the extra used capacity. | Microsoft.Compute/virtualMachines | 1 |