Azure ARM模板依赖:资源未在模板中定义

fra*_*eng 2 azure azure-resource-manager azure-rm-template azure-template

我想使用visual studio 2015在azure中创建一个新的vm资源组.新的vm依赖于同一资源组中的现有资源,该资源组未在模板中声明.但我得到了"资源'Microsoft.Storage/storageAccounts/***'是02:21:10 - 未在模板中定义"

"resources": [
{
  "apiVersion": "2015-06-15",
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]",
  "location": "[resourceGroup().location]",
  "tags": {
    "displayName": "VirtualMachine"
  },
  "dependsOn": [
    "[resourceId('0abb7c58-93b4-45f4-b1be-61a98ac347a3','securitydata','Microsoft.Storage/storageAccounts', parameters('storageAccounts_simscitestrg6892_name'))]"
  ],
Run Code Online (Sandbox Code Playgroud)

DependsOn只能引用同一ARM模板中的资源?

任何帮助赞赏.

问候,弗兰克.

Bru*_*hen 6

DependsOn只能引用同一ARM模板中的资源?

从这篇关于在Azure Resource Manager模板中定义依赖关系的官方文档中,我们可以找到如下内容:

资源管理器评估资源之间的依赖关系,并以依赖顺序部署它们.当资源不依赖于彼此时,资源管理器会并行部署它们.您只需要为在同一模板中部署的资源定义依赖关系.

根据我的测试,我可以重现这个问题.您需要在模板中添加存储资源,如下所示:

{
    "name": "[parameters('storageAccounts_simscitestrg6892_name')]",
    "type": "Microsoft.Storage/storageAccounts",
    "location": "[resourceGroup().location]",
    "apiVersion": "2015-06-15",
    "dependsOn": [],
    "tags": {
      "displayName": "StorageAccountResourceName"
    },
    "properties": {
      "accountType": "[parameters('StorageAccountType')]"
    }
}
Run Code Online (Sandbox Code Playgroud)

对于VM资源,您可以osDisk在"properties> storageProfile"部分下配置,如下所示:

"osDisk": {
  "name": "Your-VMOSDisk",
  "vhd": {
    "uri": "[concat('https://', parameters('storageAccounts_simscitestrg6892_name'), '.blob.core.windows.net/', variables('Your-VMStorageAccountContainerName'), '/', variables('Your-VMOSDiskName'), '.vhd')]"
  },
  "caching": "ReadWrite",
  "createOption": "FromImage"
}
Run Code Online (Sandbox Code Playgroud)

如果不存在,将在与VM相同的位置创建存储资源.