我想使用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'))]"
],
DependsOn只能引用同一个ARM模板中的资源吗?
任何帮助表示感谢。
问候,弗兰克。
答案 0 :(得分:5)
DependsOn只能引用同一个ARM模板中的资源吗?
关于在Azure Resource Manager模板中定义依赖关系的官方document,我们可以找到以下内容:
资源管理器评估资源之间的依赖关系,并按相关顺序部署它们。当资源不依赖于彼此时,资源管理器会并行部署它们。 您只需要为部署在同一模板中的资源定义依赖关系。
根据我的测试,我可以重现这个问题。您需要在模板中添加存储资源,如下所示:
{
"name": "[parameters('storageAccounts_simscitestrg6892_name')]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"dependsOn": [],
"tags": {
"displayName": "StorageAccountResourceName"
},
"properties": {
"accountType": "[parameters('StorageAccountType')]"
}
}
对于您的VM资源,您可以在“properties> storageProfile”部分下配置osDisk
,如下所示:
"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"
}
如果不存在,将在与VM相同的位置创建存储资源。
答案 1 :(得分:1)
不,这没有意义,dependsOn属性用于跟踪ARM模板内的依赖项,因此它可以按特定顺序配置资源。如果有资源,那么跟踪它是没有意义的。它已经存在了。您只需在使用它时引用它。
答案 2 :(得分:0)
是。当您创建依赖于您通过相同模板创建的另一个资源的资源时,将使用DependsOn。如果资源已经创建,那么您只需添加对它的引用。在您的情况下,您可以像这样添加VM的属性键:
"properties": {
"hardwareProfile": {
"vmSize": "Standard_DS1"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServerHPCPack",
"offer": "WindowsServerHPCPack",
"sku": "2012R2",
"version": "latest"
},
"osDisk": {
"name": "[parameters('virtualMachines_APP01_name')]",
"createOption": "FromImage",
"vhd": {
"uri": "[concat('https', '://', parameters('storageAccounts_vmdkstorageacct_name'), '.blob.core.windows.net', concat('/vhds/', parameters('virtualMachines_APP01_name'),'APP01.vhd'))]"
},
"caching": "ReadWrite"
},
"dataDisks": []
},
"osProfile": {
"computerName": "[parameters('virtualMachines_APP01_name')]",
"adminUsername": "vmadmin",
"windowsConfiguration": {
"provisionVMAgent": true,
"enableAutomaticUpdates": true
},
"secrets": [],
"adminPassword": "[parameters('virtualMachines_APP01_adminPassword')]"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaces_app01_name'))]"
}
]
}
}