Unable to create formula through ARM template in Dev Test Lab using image from Azure Compute Galleries

Balraj 0 Reputation points
2024-07-25T09:43:52.0866667+00:00

I created an ARM template to deploy the formula in the Dev Test Lab using image from Azure Compute Galleries as follows:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
      "formulaName": {
          "defaultValue": "MyFormula",
          "type": "String"
      },
      "labName": {
          "defaultValue": "MyLab",
          "type": "String"
      },
      "description": {
          "defaultValue": "Example formula description",
          "type": "String"
      },
      "offer": {
        "defaultValue": "ODW00000.8.0.5.28.01offer"
        "type": "String"
    },
      "publisher": {
          "defaultValue": "ODW00000.8.0.5.28.01publishe"
          "type": "String"
      },
      "sku": {
        "defaultValue": "ODW00000.8.0.5.28.01sku"
        "type": "String"
    },
      "size": {
        "defaultValue": "Standard_D4s_v3",
        "type": "String"
    },
      "userName": {
        "type": "string",
        "defaultValue": "Admin"
      },
      "password": {
        "type": "securestring"
      },
      "diskType": {
          "defaultValue": "StandardSSD",
          "type": "String"
      },
      "osType": {
          "defaultValue": "Windows",
          "type": "String"
      },
      "version": {
          "defaultValue": "latest",
          "type": "String"
      },
      "labSubnetName": {
          "defaultValue": "MyLabSubnet",
          "type": "String"
      },
      "labVirtualNetworkId": {
          "defaultValue": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/virtualNetworks/{vnet-name}",
          "type": "String"
      }
  },
  "variables": {
      "formulaName": "[concat(parameters('labName'), '/', parameters('formulaName'))]"
  },
  "resources": [
      {
          "type": "Microsoft.DevTestLab/labs/formulas",
          "apiVersion": "2018-09-15",
          "name": "[variables('formulaName')]",
          "properties": {
              "description": "[parameters('description')]",
              "formulaContent": {
                  "properties": {
                      "allowClaim": true,
                      "dataDiskParameters": [
                          {
                              "attachNewDataDiskOptions": {
                                  "diskType": "[parameters('diskType')]"
                              }
                          }
                      ],
                      "disallowPublicIpAddress": true,
                      "galleryImageReference": {
                          "osType": "[parameters('osType')]",
                          "publisher": "[parameters('publisher')]",
                          "offer": "[parameters('offer')]",
                          "sku": "[parameters('sku')]",
                          "version": "[parameters('version')]"
                      },
                      "size": "[parameters('size')]",
                      "userName": "[parameters('userName')]",
                      "password": "[parameters('password')]",
                      "labSubnetName": "[parameters('labSubnetName')]",
                      "labVirtualNetworkId": "[parameters('labVirtualNetworkId')]",
                      "networkInterface": {
                        "sharedPublicIpAddressConfiguration": {
                          "inboundNatRules": [
                            {
                              "transportProtocol": "tcp",
                              "backendPort": 3389
                            }
                          ]
                        }
                      }
                  }
              }
          }
      }
  ]
}


After deploying this ARM, the formula is created but it shows three values below

User's image

After clicking on Advance setting >> View ARM template, then the ARM template view as below

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "newVMName": {
      "type": "string",
      "defaultValue": "MyFormula"
    },
    "labName": {
      "type": "string",
      "defaultValue": "MyLab"
    },
    "size": {
      "type": "string",
      "defaultValue": "Standard_D4s_v3"
    },
    "userName": {
      "type": "string",
      "defaultValue": "Admin"
    },
    "password": {
      "type": "securestring"
    }
  },
  "variables": {
    "labSubnetName": "DEVLAB-Subnet",
    "labVirtualNetworkId": "[resourceId('Microsoft.DevTestLab/labs/virtualnetworks', parameters('labName'), variables('labVirtualNetworkName'))]",
    "labVirtualNetworkName": "DEVLAB-Vnet",
    "vmId": "[resourceId ('Microsoft.DevTestLab/labs/virtualmachines', parameters('labName'), parameters('newVMName'))]",
    "vmName": "[concat(parameters('labName'), '/', parameters('newVMName'))]"
  },
  "resources": [
    {
      "apiVersion": "2018-10-15-preview",
      "type": "Microsoft.DevTestLab/labs/virtualmachines",
      "name": "[variables('vmName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "labVirtualNetworkId": "[variables('labVirtualNetworkId')]",
        "notes": "t",
        "size": "[parameters('size')]",
        "userName": "[parameters('userName')]",
        "password": "[parameters('password')]",
        "isAuthenticationWithSshKey": false,
        "labSubnetName": "[variables('labSubnetName')]",
        "disallowPublicIpAddress": true,
        "storageType": "StandardSSD",
        "allowClaim": true,
        "networkInterface": {
          "sharedPublicIpAddressConfiguration": {
            "inboundNatRules": [
              {
                "transportProtocol": "tcp",
                "backendPort": 3389
              }
            ]
          }
        }
      }
    }
  ],
  "outputs": {
    "labVMId": {
      "type": "string",
      "value": "[variables('vmId')]"
    }
  }
}

This is a template for creating a VM, but unfortunately, I was unable to make the VM because in this template there is no image parameter like sharedImageId is not present.

But when I tried to make the formula with the same image manually then after creation it showed me the image below:

User's image

After clicking on Advance setting >> View ARM template, then the ARM template view as below, Where we can see the sharedImageId keyword

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "newVMName": {
      "type": "string",
      "defaultValue": "ticketformula"
    },
    "labName": {
      "type": "string",
      "defaultValue": "DEVLAB"
    },
    "size": {
      "type": "string",
      "defaultValue": "Standard_D4s_v3"
    },
    "userName": {
      "type": "string",
      "defaultValue": "admin"
    },
    "password": {
      "type": "securestring"
    }
  },
  "variables": {
    "labSubnetName": "DEVLAB-Subnet",
    "labVirtualNetworkId": "[resourceId('Microsoft.DevTestLab/labs/virtualnetworks', parameters('labName'), variables('labVirtualNetworkName'))]",
    "labVirtualNetworkName": "DEVLAB-Vnet",
    "vmId": "[resourceId ('Microsoft.DevTestLab/labs/virtualmachines', parameters('labName'), parameters('newVMName'))]",
    "vmName": "[concat(parameters('labName'), '/', parameters('newVMName'))]"
  },
  "resources": [
    {
      "apiVersion": "2018-10-15-preview",
      "type": "Microsoft.DevTestLab/labs/virtualmachines",
      "name": "[variables('vmName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "labVirtualNetworkId": "[variables('labVirtualNetworkId')]",
        "notes": "t",
        "sharedImageId": "/subscriptions/b2b47bb5-f3b7-4c27-XXXXXX/resourcegroups/devlab-rg/providers/microsoft.devtestlab/labs/devlab/sharedgalleries/baseimages/sharedimages/odw00000.8.0.5.28.01",
        "size": "[parameters('size')]",
        "userName": "[parameters('userName')]",
        "password": "[parameters('password')]",
        "isAuthenticationWithSshKey": false,
        "labSubnetName": "[variables('labSubnetName')]",
        "disallowPublicIpAddress": true,
        "storageType": "StandardSSD",
        "allowClaim": false,
        "networkInterface": {
          "sharedPublicIpAddressConfiguration": {
            "inboundNatRules": [
              {
                "transportProtocol": "tcp",
                "backendPort": 3389
              }
            ]
          }
        }
      }
    }
  ],
  "outputs": {
    "labVMId": {
      "type": "string",
      "value": "[variables('vmId')]"
    }
  }
}


We can provision VM through this template using a formula we created manually.

I think something is wrong while creating the formula through the template

                      "galleryImageReference": {
                          "osType": "[parameters('osType')]",
                          "publisher": "[parameters('publisher')]",
                          "offer": "[parameters('offer')]",
                          "sku": "[parameters('sku')]",
                          "version": "[parameters('version')]"
                      }

My image location is in Azure compute galleries and we don't have any sharedImageId keyword in the official documentation https://learn.microsoft.com/en-us/azure/templates/microsoft.devtestlab/labs/formulas?pivots=deployment-language-arm-template

Azure DevTest Labs
Azure DevTest Labs
An Azure service that is used for provisioning development and test environments.
276 questions
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.