From the #Cloud: How to snapshot an Azure Virtual Machine

If you’re looking for a way to snapshot Azure VMs you will probably have established that unlike pureplay virtualisation (such as Hyper-V or ESXi on-premises) there is no simple snapshot option for a Azure VMs.

It’s possible that Microsoft might add this as a native portal option, but for now, the closest you can get to the convenience of a snapshot is to perform a VHD based point in time restore of a VM in it’s entirety. Yes, you read it correctly – in its entirety!

this step can be performed before you tinker if you’re going to tinker with VM config or after if not

Phase 2: Do whatever you want to do that necessitated you performing a snapshot

Phase 3: Restore “snapshot” if required

blow away the existing VM (yep. BLOW IT AWAY!)

blow away the existing VM disk(s)

restore the “snapshot” VM disk(s) to the source container

re-provision the VM using the previously exported config file

wipe your brow

Although slightly long-winded when compared to the simplicity of native virtualisation snapshots this approach is working nicely for me with demo environments that I need to reset to a known state.

Couple of caveats:

I’ve broken the functions out across two ps1 files so it’s simpler to view

I’ve built in a check to ensure that a VM being exported is stopped but not deallocated, this is for my needs as I use static IP, site-to-site VPNs and cloud services for demo purposes which I want to control and re-add when restoring the “snapshot”

You’ll need to change anything relevant to folders, files and subscriptions, of course