我正在使用 terraform 创建一个测试虚拟机,以在其上验证加壳程序构建的 ARM 映像。 在 azurerm_virtual_machine 定义中使用 storage_image_reference 这似乎意味着我必须在此资源块中创建磁盘。
创建很好,但当破坏发生时,地形会将磁盘留在后面,从而导致错误。我是 Azure 新手,很困惑,因为在 AWS 中清理磁盘是微不足道的。
从 ARM 映像构建虚拟机并使用虚拟机销毁磁盘的正确方法是什么?
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
}
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
}
}
使用 terrafrom 删除 azure_virtual_machine 的托管存储操作系统磁盘
要在销毁虚拟机时删除操作系统磁盘,我们需要在门户中创建虚拟机时选择一个选项。
通过在销毁虚拟机时启用此功能,将确保磁盘也被删除。
该操作是通过
delete_os_disk_on_termination = true
操作进行的。该参数专为 terraform 设计。
当您使用 Terraform 创建 Azure 虚拟机时,附加到它的操作系统磁盘是“托管磁盘”。默认情况下。如果您忘记在配置中指定这一点,terraform 不会破坏磁盘资源,并且仍会保留在同一个 RG 中,导致手动删除的支出增加。
在查询中,您已经配置了资源,因此请确保在配置状态本身中添加此delete_os_disk_on_termination,以便确保在运行 terraform destroy 命令时磁盘与虚拟机一起被删除。
参考: