terraform azurerm_managed_disk在terraform应用和销毁VM后始终被替换

mhd8tkvw  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(166)

正如你在下面看到的,我正在尝试使用azurerm_managed_disk部署一个新的虚拟机。第一次它工作正常,但每次我运行terraform plan/apply时,azurerm_managed_disk资源都在重建,因此使用此磁盘的VM也在重建。有人知道发生了什么吗?

  • 验证码:*
  1. resource "azurerm_snapshot" "snapshot" {
  2. name = "az1srzertosnaphot"
  3. location = azurerm_resource_group.resource_group.location
  4. resource_group_name = azurerm_resource_group.resource_group.name
  5. create_option = "Copy"
  6. source_resource_id = data.azurerm_managed_disk.zerto_managed_disk.id
  7. }
  8. resource "azurerm_managed_disk" "zerto_managed_disk" {
  9. name = "az1srzerto_managed_disk"
  10. location = azurerm_resource_group.resource_group.location
  11. resource_group_name = azurerm_resource_group.resource_group.name
  12. storage_account_type = "Standard_LRS"
  13. create_option = "Copy"
  14. source_resource_id = azurerm_snapshot.snapshot.id
  15. disk_size_gb = "127"
  16. }
  17. resource "azurerm_virtual_machine" "zerto_virtual_machine" {
  18. name = var.vm_zerto_name
  19. location = azurerm_resource_group.resource_group.location
  20. resource_group_name = azurerm_resource_group.resource_group.name
  21. vm_size = "Standard_D2s_v3"
  22. network_interface_ids = [azurerm_network_interface.vm_zerto_interface.id]
  23. storage_os_disk {
  24. name = azurerm_managed_disk.zerto_managed_disk.name
  25. caching = "ReadWrite"
  26. disk_size_gb = "127"
  27. os_type = "Windows"
  28. managed_disk_type = "Standard_LRS"
  29. managed_disk_id = azurerm_managed_disk.zerto_managed_disk.id
  30. create_option = "Attach"
  31. }
  32. os_profile_windows_config {
  33. provision_vm_agent = false

字符串

  • 按照地形图 *
  1. Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  2. -/+ destroy and then create replacement
  3. Terraform will perform the following actions:
  4. # module.disaster_recovery.azurerm_managed_disk.zerto_managed_disk must be replaced
  5. -/+ resource "azurerm_managed_disk" "zerto_managed_disk" {
  6. ~ disk_iops_read_only = 0 -> (known after apply)
  7. ~ disk_iops_read_write = 500 -> (known after apply)
  8. ~ disk_mbps_read_only = 0 -> (known after apply)
  9. ~ disk_mbps_read_write = 60 -> (known after apply)
  10. - hyper_v_generation = "V1" -> null # forces replacement
  11. ~ id = "/subscriptions/XXXXXXXXXXXX/resourceGroups/az-prd-euw-disasterrecovery-rg-001/providers/Microsoft.Compute/disks/az1srzerto_managed_disk" -> (known after apply)
  12. + logical_sector_size = (known after apply)
  13. ~ max_shares = 0 -> (known after apply)
  14. name = "az1srzerto_managed_disk"
  15. - on_demand_bursting_enabled = false -> null
  16. - os_type = "Windows" -> null
  17. + source_uri = (known after apply)
  18. - tags = {} -> null
  19. + tier = (known after apply)
  20. - trusted_launch_enabled = false -> null
  21. # (7 unchanged attributes hidden)
  22. }
  23. # module.disaster_recovery.azurerm_virtual_machine.zerto_virtual_machine must be replaced
  24. -/+ resource "azurerm_virtual_machine" "zerto_virtual_machine" {
  25. + availability_set_id = (known after apply)
  26. ~ id = "/subscriptions/XXXXXXXXXX/resourceGroups/az-prd-euw-disasterrecovery-rg-001/providers/Microsoft.Compute/virtualMachines/az1srzerto" -> (known after apply)
  27. + license_type = (known after apply)
  28. name = "az1srzerto"
  29. - tags = {} -> null
  30. - zones = [] -> null
  31. # (6 unchanged attributes hidden)
  32. + identity {
  33. + identity_ids = (known after apply)
  34. + principal_id = (known after apply)
  35. + type = (known after apply)
  36. }
  37. + storage_data_disk {
  38. + caching = (known after apply)
  39. + create_option = (known after apply)
  40. + disk_size_gb = (known after apply)
  41. + lun = (known after apply)
  42. + managed_disk_id = (known after apply)
  43. + managed_disk_type = (known after apply)
  44. + name = (known after apply)
  45. + vhd_uri = (known after apply)
  46. + write_accelerator_enabled = (known after apply)
  47. }
  48. + storage_image_reference {
  49. + id = (known after apply)
  50. + offer = (known after apply)
  51. + publisher = (known after apply)
  52. + sku = (known after apply)
  53. + version = (known after apply)
  54. }
  55. ~ storage_os_disk {
  56. ~ managed_disk_id = "/subscriptions/XXXXXXXXXX/resourceGroups/az-prd-euw-disasterrecovery-rg-001/providers/Microsoft.Compute/disks/az1srzerto_managed_disk" -> (known after apply) # forces replacement
  57. name = "az1srzerto_managed_disk"
  58. # (6 unchanged attributes hidden)
  59. }
  60. # (1 unchanged block hidden)
  61. }
  62. Plan: 2 to add, 0 to change, 2 to destroy.
  63. ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  64. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.


你知道吗?

mxg2im7a

mxg2im7a1#

我们也尝试过使用terraform通过托管磁盘和快照来创建虚拟机。
正如@Marko E 所建议的,* 我们也观察到了使用不同参数的相同情况(即,create_option=“Empty”并将其更改为“copy”)*。

  • 错误详细信息:-* x1c 0d1x
  • 将值更改为以前的值后 *:-

下面是我们正在使用的代码。

  1. provider "azurerm" {
  2. features {}
  3. }
  4. variable "prefix" {
  5. default = "examplem"
  6. }
  7. locals {
  8. vm_name = "${var.prefix}-vm"
  9. }
  10. resource "azurerm_resource_group" "example" {
  11. name = "${var.prefix}-resources"
  12. location = "West Europe"
  13. }
  14. resource "azurerm_virtual_network" "main" {
  15. name = "${var.prefix}-network"
  16. address_space = ["10.0.0.0/16"]
  17. location = azurerm_resource_group.example.location
  18. resource_group_name = azurerm_resource_group.example.name
  19. }
  20. resource "azurerm_subnet" "internal" {
  21. name = "internal"
  22. resource_group_name = azurerm_resource_group.example.name
  23. virtual_network_name = azurerm_virtual_network.main.name
  24. address_prefixes = ["10.0.2.0/24"]
  25. }
  26. resource "azurerm_network_interface" "main" {
  27. name = "${var.prefix}-nic"
  28. location = azurerm_resource_group.example.location
  29. resource_group_name = azurerm_resource_group.example.name
  30. ip_configuration {
  31. name = "internal"
  32. subnet_id = azurerm_subnet.internal.id
  33. private_ip_address_allocation = "Dynamic"
  34. }
  35. }
  36. resource "azurerm_virtual_machine" "example" {
  37. name = local.vm_name
  38. location = azurerm_resource_group.example.location
  39. resource_group_name = azurerm_resource_group.example.name
  40. network_interface_ids = [azurerm_network_interface.main.id]
  41. vm_size = "Standard_F2"
  42. storage_image_reference {
  43. publisher = "Canonical"
  44. offer = "UbuntuServer"
  45. sku = "16.04-LTS"
  46. version = "latest"
  47. }
  48. storage_os_disk {
  49. name = "mydisk"
  50. caching = "ReadWrite"
  51. create_option = "FromImage"
  52. managed_disk_type = "Standard_LRS"
  53. }
  54. os_profile {
  55. computer_name = local.vm_name
  56. admin_username = "yourusername"
  57. admin_password = "yourpassword!"
  58. }
  59. os_profile_linux_config {
  60. disable_password_authentication = false
  61. }
  62. }
  63. resource "azurerm_managed_disk" "example" {
  64. name = "${local.vm_name}-disk1"
  65. location = azurerm_resource_group.example.location
  66. resource_group_name = azurerm_resource_group.example.name
  67. storage_account_type = "Standard_LRS"
  68. create_option = "Empty"
  69. //source_resource_id = azurerm_snapshot.example.id
  70. disk_size_gb = 10
  71. }
  72. resource "azurerm_snapshot" "example" {
  73. name = "snapshot"
  74. location = azurerm_resource_group.example.location
  75. resource_group_name = azurerm_resource_group.example.name
  76. create_option = "Copy"
  77. source_resource_id = azurerm_managed_disk.example.id
  78. }
  79. resource "azurerm_virtual_machine_data_disk_attachment" "example" {
  80. managed_disk_id = azurerm_managed_disk.example.id
  81. virtual_machine_id = azurerm_virtual_machine.example.id
  82. lun = "10"
  83. caching = "ReadWrite"
  84. }

字符串

  • 建议您 要解决此问题,请确保您提供的参数值与之前在托管磁盘上提到的参数值相同。*
  1. - hyper_v_generation = "V1"

  • 成功应用:-*


展开查看全部

相关问题