我正在尝试从现有快照创建托管磁盘,然后从该磁盘创建 VM。
我在创建托管磁盘时收到错误。
这是我的代码。
主文件
resource "azurerm_managed_disk" "copy" {
name = "myOsDisk1"
location = "East US"
resource_group_name = data.azurerm_resource_group.test.name
storage_account_type = "Standard_LRS"
create_option = "Copy"
source_resource_id = var.snapshot_id
disk_size_gb = "50"
}
resource "azurerm_virtual_machine" "myterraformvm" {
name = "Test-01"
location = "East Us"
resource_group_name = data.azurerm_resource_group.test.name
network_interface_ids = ["${azurerm_network_interface.main.id}"]
vm_size = "Standard_DS1_v2"
storage_os_disk {
name = "${azurerm_managed_disk.copy.name}"
os_type = "windows"
managed_disk_id = "${azurerm_managed_disk.copy.id}"
create_option = "Attach"
}
}
下面是错误
<块引用>错误:创建/更新托管磁盘“myOsDisk1”(资源组“vm-from-snap”)时出错:compute.DisksClient#CreateOrUpdate:发送请求失败:StatusCode=400 -- 原始错误:Code="InvalidParameter" 消息="实体不是预期类型" Target="sourceResourceId"
在 main.tf 第 44 行,在资源“azurerm_managed_disk”“copy”中: 44:资源“azurerm_managed_disk”“复制”{
答案 0 :(得分:0)
根据错误信息,您可以验证您是否输入了正确的source_resource_id
。变量快照可以像这样的格式进行贴标:
variable "snapshot_id" {
default = "/subscriptions/<xxxsubIdxxx>/resourceGroups/<rgName>/providers/Microsoft.Compute/snapshots/<snapshotName>"
}
第 1 步:使用 Azure 门户创建快照,
第 2 步:将快照 ID 复制到上面的变量 snapshot_id
。
最后,我建议将 terraform 升级到最新版本或 0.12 以上。对我来说,一切都很顺利。
Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/azurerm v2.43.0