首页 > 解决方案 > JSON模板失败,循环中的活动部署

问题描述

我正在尝试创建一个模板,该模板在 Azure 中执行多个 vm,然后加密磁盘,大约 3 小时前我设法让它与 2 个 vm 一起工作,但是当我在循环中执行另外三个 vm 时,我得到了以下错误:

            "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}"
          }
        ]
      }
    ]

有没有办法暂停以等待updatevm扩展完成?

我用于加密的代码部分是:

{
      "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')]"
          }
        }
      }
    },

标签: jsonazurearm-templateazure-template

解决方案


使其依赖于先前的扩展,因为您没有提供确切的代码,它类似于:

"dependsOn": [
    "updatevm"
}

由于模板的结构,这并不完全有效,答案是使用串行复制模式一次只创建一个副本ю

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

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


推荐阅读