1. A method comprising: identifying at least one application available for execution on an initial virtual machine; identifying a triggering event comprising an attempt to upgrade an operating system on the initial virtual machine to an updated version of the operating system; in response to the triggering event, provisioning a new virtual machine with the updated version of the operating system; monitoring for completion of the provisioning of the new virtual machine; in response to the completion of the provisioning of the new virtual machine, dynamically attaching the at least one application to the new virtual machine, wherein dynamically attaching the at least one application to the new virtual machine comprises dynamically attaching at least one application volume containing the at least one application to the new virtual machine, and making the at least one application available without installation on the new virtual machine; and in response to dynamically attaching the at least one application volume, overlaying contents of the at least one application volume corresponding to the at least one application in the new virtual machine.