Norrin Rad
Norrin Rad

Reputation: 991

JSON Template Failing with Active deployment in loop

I'm trying to create a template which does multiple vm's in Azure and then encrypts the disks, I've managed to get it working with 2 vm's about 3 hours ago, however when I do three of more vm's in the loop I get the following error:

            "code": "DeploymentFailed",
        "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.",
        "details": [
          {
            "code": "Conflict",
            "message": "{\r\n  \"error\": {\r\n    \"code\": \"DeploymentActive\",\r\n    \"message\": \"Unable to edit or replace deployment 'updatevm': previous deployment 
from '12/29/2018 1:11:34 AM' is still active (expiration time is '1/5/2019 1:11:34 AM'). Please see https://aka.ms/arm-deploy for usage details.\"\r\n  }\r\n}"
          }
        ]
      }
    ]

Is there a way of putting a pause so it waits for the updatevm extension to complete?

The section of code I have for the encryption is:

{
      "name": "[concat(parameters('VMNames'),copyIndex(),'UpdateEncryptionSettings')]",
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2015-01-01",
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMNames'),copyIndex(1))]"
      ],
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "uri": "[concat(parameters('_artifactsLocation'),'/nestedtemplates/encryptVm.json',parameters('_artifactsLocationSasToken'))]",
          "contentVersion": "1.0.0.0"
        },
        "parameters": {
          "vmName": {
            "value": "[concat(parameters('VMNames'), copyIndex(1))]"
          },
          "aadClientID": {
            "value": "[parameters('aadClientID')]"
          },
          "aadClientSecret": {
            "value": "[parameters('aadClientSecret')]"
          },
          "keyVaultName": {
            "value": "[parameters('keyVaultName')]"
          },
          "keyVaultResourceGroup": {
            "value": "[parameters('keyVaultResourceGroup')]"
          },
          "useExistingKek": {
            "value": "[parameters('useExistingKek')]"
          },
          "keyEncryptionKeyURL": {
            "value": "[parameters('keyEncryptionKeyURL')]"
          },
          "_artifactsLocation": {
            "value": "[parameters('_artifactsLocation')]"
          },
          "_artifactsLocationSasToken": {
            "value": "[parameters('_artifactsLocationSasToken')]"
          }
        }
      }
    },

Upvotes: 0

Views: 607

Answers (1)

4c74356b41
4c74356b41

Reputation: 72171

make it depend on the previous extension, since you do not provide the exact code, its something like:

"dependsOn": [
    "updatevm"
}

this didnt exactly work due to how the templates were structured, the answer was to use serial copy mode to only create one copy at a timeю

"copy": {
    "name": "storagecopy",
    "count": 4,
    "mode": "serial",
    "batchSize": 1
}

https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-multiple#resource-iteration

Upvotes: 1

Related Questions