Azure ARM模板osprofile依赖项
创建自定义模板时出现问题。我试图从vhd创建虚拟机作为vhd,但在部署过程中失败,错误是缺少Azure ARM模板osprofile依赖项,azure,deployment,Azure,Deployment,创建自定义模板时出现问题。我试图从vhd创建虚拟机作为vhd,但在部署过程中失败,错误是缺少osProfile。这很有趣,因为在internet上的其他模板中,我看到并没有osprofile部分,它的部署没有问题 因此,我添加了带有computerName参数的osProfile。但现在部署失败,出现错误,需要adminUsername和adminPassword。我不明白为什么在另一个脚本中这是不需要的,它将创建VM而不会出现问题 还有一个事实是,我的模板正在使用vhd创建VM,而另一个模板正
osProfile
。这很有趣,因为在internet上的其他模板中,我看到并没有osprofile部分,它的部署没有问题
因此,我添加了带有computerName
参数的osProfile
。但现在部署失败,出现错误,需要adminUsername
和adminPassword
。我不明白为什么在另一个脚本中这是不需要的,它将创建VM而不会出现问题
还有一个事实是,我的模板正在使用vhd创建VM,而另一个模板正在使用托管磁盘创建VM。这可能有问题吗
我的代码:
"apiVersion": "2017-03-30",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[concat(parameters('vmName'))]",
"adminUsername": "",
"adminPassword": ""
},
"storageProfile": {
"osDisk": {
"name": "[concat(parameters('vmName'),'-osDisk')]",
"osType": "[parameters('osType')]",
"caching": "ReadWrite",
"image": {
"uri": "[parameters('osVhdUri')]"
},
"vhd": {
"uri": "[variables('osDiskVhdName')]"
},
"createOption": "FromImage"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('userDiagStorageAccountName')), '2016-01-01').primaryEndpoints.blob)]"
}
}
我知道adminUsername
和adminPassword
不能为空,但我不希望在从现有vhd创建VM时使用此参数
部署中的一段模板代码成功:
"apiVersion": "2017-03-30",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "VirtualMachine"
},
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
"[concat(parameters('vmName'), '_OSdisk')]",
"[concat(parameters('vmName'), '_Datadisk')]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"storageProfile": {
"osDisk": {
"osType": "[parameters('osType')]",
"caching": "ReadWrite",
"createOption": "Attach",
"managedDisk": {
"id": "[resourceId('Microsoft.Compute/disks', concat(parameters('vmName'), '_OSdisk'))]"
}
},
"dataDisks": [
{
"lun": 0,
"managedDisk": {
"id": "[resourceId('Microsoft.Compute/disks', concat(parameters('vmName'), '_Datadisk'))]"
},
"caching": "ReadOnly",
"createOption": "Attach"
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('diagStorageAccountName')), '2016-01-01').primaryEndpoints.blob)]"
}
}
这是我的模板中没有osProfile的部署失败的打印屏幕。
将“createOption”:“FromImage”
更改为“createOption”:“附加”
。您正在尝试从市场映像而不是现有VHD创建VM
在这种情况下,您可以完全删除osProfile在此处搜索VHD模板,查看其中是否有适合的模板谢谢,但在我更改后,部署中会出现新错误:如果VM是从平台或用户映像创建的,则无法连接现有操作系统磁盘。您使用的是通用VHD吗?否,因为此vhd来自现有azure VM。我仅将托管操作系统磁盘从此现有Azure VM转换为vhd。Azure中的VM资源是否已存在?请删除vm资源,然后重试。有很多事情可能是错误的,请检查此链接。但是你应该使用attach。我建议你结束这个问题,调查到底发生了什么,然后带着一个新问题回来。因为这个问题已经解决了(虽然你仍然有一个问题,但它是另一个问题),我在你的帮助下得到了它。因此,正如您所说,我从image改为Attach,然后删除了这一部分
“name”:“[concat(parameters('vmName'),'-osDisk')]”,“osType”:“[parameters('osType')]”,“caching”:“ReadWrite”,“image”:{“uri”:“[parameters('osVhdUri')]””},
最后一件事是破折号(-),它在代码的另一部分。我从这里删除了破折号参数('vmName'),'-osDisk.vhd')],