terraform-provider-opennebula icon indicating copy to clipboard operation
terraform-provider-opennebula copied to clipboard

Introduce `opennebula_virtual_machine_disk_attachment` to prevent issues when replacing image

Open frousselet opened this issue 1 year ago • 1 comments

Description

The issue:

Currently, an image is attached to a VM via an attribute (disk).

It's fine until we need to replace the image (for example in order to upgrade the the OS). In this case, the provider is not able to detach the disk by itself since a disk is an attribute.

A solution:

To fix this, a disk attachment should be an attribute:

Let's imagine a new resource called opennebula_virtual_machine_disk_attachment. It as (at least) 2 attributes: the image ID and the VM id. If one of both attributes changes, the disk attachment is forced recreated.

That means, if I change the image, its ID changes, so the attachement is recreated.

Another way would be to destroy-recreate the entire VM (but I'm quite sure this is not what we want here... 🤷🏻‍♂️).

New or affected resources and data sources

opennebula_virtual_machine (r+d): Deprecate disk attribute OpenNebula_virtual_machine_disk_attachment (r+d)

Potential terraform configuration

resource "opennebula_image" "my" {

  # ...

  clone_from_image = data.opennebula_image.ubuntu.id

  # ...

}

resource "opennebula_virtual_machine" "my" {

  # ...


  # Deprecated
  # disk {
  #   image_id = opennebula_image.my.id
  #   target   = "vda"
  # }

  # ...

}

resource "opennebula_virtual_machine_disk_attachment" "my" {
  vm_id = opennebula_virtual_machine.my.id
  image_id = opennebula_image.my.id
  target = "vda"
  # and same attributes as the old disk attribute
}

References

No response

frousselet avatar Jan 24 '24 16:01 frousselet

Similar to older work (not merged): issue: https://github.com/OpenNebula/terraform-provider-opennebula/issues/318 PR: https://github.com/OpenNebula/terraform-provider-opennebula/pull/323

treywelsh avatar Jan 24 '24 18:01 treywelsh