This isn't really a guide, but more like a log of what I know when it comes to automating VMs. First I'll details things in a non-specific way (eg: without it depending on a particular application). I'll details things later.
- SSH (local)
- ISO extration/editing/re-bundle
- Chroot to install package, etc
- Just move files or extract them too (eg: exctrating a .deb files on debian/ubuntu can work too, etc)
- Compiling (same as above depending on how you look at it)
- COM bridge (Mostly Windows)
- socket (tcp, etc)
- ?? (there more possible entry but I'll update it whenever I feel like it's worth adding)
I know there existing ways to "provision" VMs, but I prefer to not use them here (unless under a professional/business setting).
The best two VM I found that I like to automate are:
- Vbox
- Qemu
It's mostly a preferences thing.