Microsoft.Compute / virtualMachines / extensions'具有不正确的段长度

时间:2017-11-08 10:40:24

标签: azure templates nested

由于我添加了自定义脚本扩展(CompDesc),我无法部署此NESTED模板。尝试部署时,系统会提示我出现以下错误:

错误:Code = InvalidTemplate;消息=部署模板验证失败:'第207行'和第'6'行的类型'Microsoft.Compute / virtualMachines / extensions'的模板资源'CompDesc'具有不正确的段长度。嵌套资源类型必须具有与其资源名称相同的段数。根资源类型的段长度必须大于其资源名称。有关使用详情,请参阅https://aka.ms/arm-template/#resources。'。

正如您所看到的,它已经有一个DSC扩展,我已经测试和部署完全正常,但我还需要为一个小的.ps1脚本添加这个CSE。

我已经检查过了: Azure website resource template errorSet ARM Template Web appSetting

我试过了:

  • name更改为1个字
  • type更改为1个字
  • name更改为[concat(parameters('vmName'),'/extension')]
  • type更改为Microsoft.Compute/virtualMachines/extensions
  • 将资源嵌套在VM资源中,然后将nametype更改为我尝试过的其中一种
  • 从VM资源中删除了CSE并将其置于自己的位置(如图所示),然后将nametype更改为我尝试过的其中一种

我知道它与命名约定有关,但我不确定如何解决它。请记住,这是一个嵌套模板。根据我从错误中读到和理解的内容,嵌套模板必须具有与其资源名称相同的段,我已经尝试过。

请,任何想法?

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminPassword": {
      "type": "securestring",
      "metadata": {
        "description": "Password for the Virtual Machine."
      }
    },
    "adminUsername": {
      "type": "string",
      "minLength": 1,
      "metadata": {
        "description": "Username for the Virtual Machine."
      }
    },
    "computerDescription": {
      "type": "string",
      "metadata": {
        "description": "The description name of the VM."
      }
    },
    "nicName": {
      "type": "string",
      "metadata": {
        "description": "The name of the VM nic"
      }
    },
    "nodeConfigurationName": {
      "type": "string",
      "metadata": {
        "description": "The name of the node configuration, on the Azure Automation DSC pull server, that this node will be configured as"
      }
    },
    "projectTag": {
      "type": "string",
      "metadata": {
        "description": "name of the Project"
      }
    },
    "registrationKey": {
      "type": "securestring",
      "metadata": {
        "description": "Registration key to use to onboard to the Azure Automation DSC pull/reporting server"
      }
    },
    "registrationUrl": {
      "type": "string",
      "metadata": {
        "description": "The URL to register against the DSC automation server"
      }
    },
    "sasToken": {
      "type": "securestring",
      "metadata": {
        "description": "Generated SAS token to be used."
      }
    },
    "virtualNetworkName": {
      "type": "string",
      "metadata": {
        "description": "name of the vNet"
      }
    },
    "vmName": {
      "type": "string",
      "defaultValue": "myVM",
      "metadata": {
        "description": "The name of the VM resource"
      }
    },
    "windowsOSVersion": {
      "type": "string",
      "metadata": {
        "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter."
      }
    }
  },
  "variables": {
    // Configuration for the VM
    "imagePublisher": "MicrosoftWindowsServer",
    "imageOffer": "WindowsServer",
    "vmSize": "Standard_A2",
    "vhdStorageAccountName": "[concat('vhdstorage', uniqueString(resourceGroup().id))]",
    "vhdStorageContainerName": "vhds",
    "vhdStorageType": "Standard_LRS",

    // Configuration for network
    "publicIPAddressName": "myPublicIP",
    "publicIPAddressType": "Dynamic",
    "subnetRef": "[concat(variables('vnetId'), '/subnets/', variables('subnetName'))]",
    "subnetName": "default",
    "vnetId": "[resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",


    // Configuration of the DSC
    "allowModuleOverwrite": false,
    "actionAfterReboot": "ContinueConfiguration",
    "configurationFunction": "UpdateLCMforAAPull.ps1\\ConfigureLCMforAAPull",
    "configurationMode": "ApplyAndAutoCorrect",
    "configurationModeFrequencyMins": 15,
    "modulesUrl": "[concat('REDACTED', parameters('sasToken'))]",
    "refreshFrequencyMins": 30,
    "rebootNodeIfNeeded": true,
    "timestamp": "MM/dd/yyyy H:mm:ss tt"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('vhdStorageAccountName')]",
      "apiVersion": "2016-01-01",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "StorageAccount"
      },
      "sku": {
        "name": "[variables('vhdStorageType')]"
      },
      "kind": "Storage"
    },
    {
      "apiVersion": "2016-03-30",
      "type": "Microsoft.Network/publicIPAddresses",
      "name": "[variables('publicIPAddressName')]",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "PublicIPAddress"
      },
      "properties": {
        "publicIPAllocationMethod": "[variables('publicIPAddressType')]"
      }
    },
    {
      "apiVersion": "2016-03-30",
      "type": "Microsoft.Network/networkInterfaces",
      "name": "[parameters('nicName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "subnet": {
                "id": "[variables('subnetRef')]"
              }
            }
          }
        ]
      }
    },
    {
      "apiVersion": "2017-03-30",
      "type": "Microsoft.Compute/virtualMachines",
      "name": "[parameters('vmName')]",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "[concat(parameters('vmName'), parameters('projectTag'))]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('vhdStorageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', parameters('nicName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[variables('vmSize')]"
        },
        "osProfile": {
          "computerName": "[parameters('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "[variables('imagePublisher')]",
            "offer": "[variables('imageOffer')]",
            "sku": "[parameters('windowsOSVersion')]",
            "version": "latest"
          },
          "osDisk": {
            "createOption": "FromImage"
          },
          "dataDisks": [
            {
              "diskSizeGB": 1023,
              "lun": 0,
              "createOption": "Empty"
            }
          ]
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))]"
            }
          ]
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "enabled": true,
            "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('vhdStorageAccountName')), '2016-01-01').primaryEndpoints.blob]"
          }
        }
      }
    },
    {
      "name": "CompDesc",
      "type": "extensions",
      "location": "[resourceGroup().location]",
      "apiVersion": "2016-03-30",
      "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
      ],
      "tags": {
        "displayName": "CompDesc"
      },
      "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.4",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "fileUris": [
            "[concat('REDACTED', parameters('sasToken'))]"
          ],
          "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File compdesc.ps1', ' ', '\"', parameters('computerDescription'), '\"')]"
        }
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "[concat(parameters('vmName'),'/Microsoft.Powershell.DSC')]",
      "apiVersion": "2015-06-15",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
      ],
      "properties": {
        "publisher": "Microsoft.Powershell",
        "type": "DSC",
        "typeHandlerVersion": "2.19",
        "autoUpgradeMinorVersion": true,
        "protectedSettings": {
          "Items": {
            "registrationKeyPrivate": "[parameters('registrationKey')]"
          }
        },
        "settings": {
          "ModulesUrl": "[variables('modulesUrl')]",
          "SasToken": "",
          "ConfigurationFunction": "[variables('configurationFunction')]",
          "Properties": [
            {
              "Name": "RegistrationKey",
              "Value": {
                "UserName": "PLACEHOLDER_DONOTUSE",
                "Password": "PrivateSettingsRef:registrationKeyPrivate"
              },
              "TypeName": "System.Management.Automation.PSCredential"
            },
            {
              "Name": "RegistrationUrl",
              "Value": "[parameters('registrationUrl')]",
              "TypeName": "System.String"
            },
            {
              "Name": "NodeConfigurationName",
              "Value": "[parameters('nodeConfigurationName')]",
              "TypeName": "System.String"
            },
            {
              "Name": "ConfigurationMode",
              "Value": "[variables('configurationMode')]",
              "TypeName": "System.String"
            },
            {
              "Name": "ConfigurationModeFrequencyMins",
              "Value": "[variables('configurationModeFrequencyMins')]",
              "TypeName": "System.Int32"
            },
            {
              "Name": "RefreshFrequencyMins",
              "Value": "[variables('refreshFrequencyMins')]",
              "TypeName": "System.Int32"
            },
            {
              "Name": "RebootNodeIfNeeded",
              "Value": "[variables('rebootNodeIfNeeded')]",
              "TypeName": "System.Boolean"
            },
            {
              "Name": "ActionAfterReboot",
              "Value": "[variables('actionAfterReboot')]",
              "TypeName": "System.String"
            },
            {
              "Name": "AllowModuleOverwrite",
              "Value": "[variables('allowModuleOverwrite')]",
              "TypeName": "System.Boolean"
            },
            {
              "Name": "Timestamp",
              "Value": "[variables('timestamp')]",
              "TypeName": "System.String"
            }
          ]
        }
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

我的上帝,我自己的疏忽。我做了更改后忘记将嵌套模板重新上传到blob存储。太蠢了。

无论如何,对于那些想要了解的人; https://github.com/blumu/azure-content/blob/master/articles/resource-manager-common-deployment-errors.md