Allow a VM to be added to an availability set without recreating the VM
Currently after you have created a VM you are not able to add this to an existing or new availability set. It would be great if this was available function to be completed at any point during a VM's lifecycle.
It would be nice to be able to move VM's into a different Availability Set when offline/deallocated for sure.
Tim Yandell commented
I agree with James' comment. We would be happy to deallocate the VM to allow it to be moved to the proper update/fault domain. You could just tag the VM with the proper domain and pop up a message that the VM needs to be deallocated and reallocated (or redeployed) to join the availability set properly.
I think it would be acceptable for most users to deallocate the VM to allow Azure to migrate disks between storage clusters before the server is brought back online. An alternative would be a PowerShell method to drop the existing VM and rebuild it keeping the same VM Generation-Id and support for OS managed disks.
Ned Bellavance commented
This would be a very nice feature to add an existing VM to an empty availability set. The problem that I see is adding a VM to an existing availability set with other VMs may violate the availability set constraints. Imagine a situation where you have two VMs in an Av-Set and you would like to add a third. If the third VM already exists, it may be running in the same update or failure domain as one of the other two VMs. In order to add the third VM without violating the constraints, it would need to be moved to a different update domain or failure domain. Doing so requires the VM to be powered down, since Azure doesn't do live migration of VMs off their current host.
I have come across several situations where someone started with a single VM and later decided they wanted to add a second VM for redundancy, but they had not configured an Av-Set with the first VM. It would be nice to be able to create an empty Av-Set and add the first VM, then create the second VM in the same Av-Set. That avoids the constraint violation issues I mentioned above and makes like easier for the admin.