【发布时间】:2017-05-07 11:00:06
【问题描述】:
我有一个存储在 Azure 中的映像,我想从中启动多个 VM。我创建了一个模板,它将为我创建必要的资源,并且除了创建 VM 之外,所有资源都成功了。
使用 CreateOption.FromImage 运行部署大约 40 分钟,直到出现错误:
虚拟机“vmName”的操作系统配置未在分配的时间内完成。但是,检测到 VM 来宾代理正在运行。这表明来宾操作系统尚未准备好用作 VM 映像(使用 CreateOption=FromImage)。要解决此问题,请按原样使用 VHD 与 CreateOption=Attach 或正确准备它以用作图像
将CreateOption.FromImage 更改为CreateOption.Attach 立即给我以下错误:
如果 VM 是从平台或用户映像创建的,则无法附加现有的 OS 磁盘。
我想通过模板实现的目标:
- 指向主图像
- 为主副本提供所需的目标
- 将主映像复制到目标位置
- 创建虚拟机
- 将副本附加到 VM
下面是我用来部署的模板的虚拟机部分:
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[resourceGroup().location]",
"tags": {
"displayName": "VirtualMachine"
},
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'))]"
],
"properties": {
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"hardwareProfile": {
"vmSize": "[variables('vmSize')]"
},
"storageProfile": {
"osDisk": {
"name": "[parameters('OSDiskName')]",
"osType": "windows",
"caching": "ReadWrite",
"createOption": "FromImage",
"image": {
"uri": "[concat('https://', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('sourceStorageContainerName'), '/', parameters('sourceVHDName'), '.vhd')]"
},
"vhd": {
"uri": "[concat('https://', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('vhdStorageContainerName'), '/', parameters('OSDiskName'), '.vhd')]"
}
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))]"
}
]
}
}
}
【问题讨论】:
-
你检查你的图像是否经过系统准备?
-
+1 给 Fred Han。 Windows 映像需要进行系统准备,Linux 映像需要取消配置才能正确启动。
-
为了记录,即使我的形象被概括,这也发生在我身上。我正在从上传的 VHD 创建映像,然后尝试从中创建 VM。看来我需要按原样附加通用 VHD 或将其上传到空的托管磁盘中。
标签: .net azure virtual-machine azure-storage azure-resource-manager