Terraform创建ARM镜像VM后,销毁时如何同步删除托管系统磁盘?
解决Terraform销毁Azure VM时遗留系统磁盘的问题
问题原因
Azure托管磁盘的默认行为和AWS不同:通过VM资源创建系统磁盘时,默认会在VM销毁后保留磁盘,而AWS的EBS卷默认随实例一同销毁,这就是你遇到销毁VM后磁盘遗留的核心原因。
解决方案
在storage_os_disk块中添加delete_option = "Delete"配置,明确指定销毁VM时同步删除系统磁盘。
修改后的Terraform配置
resource "azurerm_virtual_machine" "this" { name = local.name_prefix location = var.location resource_group_name = module.core.resource_group_name network_interface_ids = [azurerm_network_interface.this.id] vm_size = var.vm_size tags = local.tags storage_image_reference { id = data.azurerm_shared_image_version.dev.id } storage_os_disk { name = local.name_prefix caching = "ReadWrite" create_option = "FromImage" managed_disk_type = var.vm_disk_type delete_option = "Delete" # 新增配置,指定销毁VM时删除磁盘 } os_profile { computer_name = local.name_prefix admin_username = var.admin_username } os_profile_linux_config { disable_password_authentication = true ssh_keys { path = "/home/${var.admin_username}/.ssh/authorized_keys" key_data = tls_private_key.this.public_key_openssh } } }
额外说明
- 若后续需要保留磁盘(比如用于数据备份),可将
delete_option设置为默认值Detach,磁盘会从VM上分离但保留在资源组中。 - 对于挂载的数据磁盘,同样可以在对应的
storage_data_disk块中设置delete_option = "Delete",实现随VM同步销毁。
内容的提问来源于stack exchange,提问作者Peter Kahn
相关产品推荐
相关产品推荐

