Pro tip: run Linux on host, run Windows in a vm for just those applications you need to run on Win.
That way you contain the inherent mess that a Windows install will eventually devolve into. You also get the ability to snapshot states of your windows install, which makes it possible to mess around a bit and then roll back to a previous state.
You didn't tell what Windows software you want to run, but depending on your needs you could even do a pci-passthrough in this setup.
I do not recommend Ansible as someone else did. You will spend your days fighting a mix of yaml and Jinja. You will end up looking at Python errors because there are no static types. Never again.
Some software, mostly multiplayer games with anti-cheat but also RDR2 singleplayer, attempt to detect VMs. Probably because cheaters use them. I love my pci passthrough setup but these anticheats are a pain.
Hopefully not relevant for uni work, but still worth mentioning.
This may actually be relevant if OP has to take remote exams with mandatory invasive proctoring software :/ Although I'm not sure if these attempt to detect VMs.
pubg recently also started to kick me for detecting a vm. currently am using two separate windows installations (one native, one in a vm). will try to switch to one installation that can be used for both usecases, but this will cause headache with drivers, or some that is tied to certain hardware ids (copy protection)
Ansible can be fine, but the errors are indeed cryptic.
If anyone is thinking about using ansible, I would suggest approaching it like a software project.
Define specialised roles, create test playbooks for those individual roles, use these roles to compose more complex playbooks, and offload logic to custom ansible modules that are written in python. This way you catch template problems early and won't wrestle with heavy logic in the template or playbook layer.
I have used Ansible for my Windows desktop setup for several years now, and I haven't fought those things in it. It has been pretty straightforward as I'm mostly just installing software and pulling some configs and scripts down.
I never had any problems with vbox usb passthru from lin.host to win.guest, so you might have a really specific case here, but I know there are loads of people running
qemu on lin.host with all kinds of advanced hardware pass through configurations.
Thinking about it, if you have a very old motherboard the IOMMU layout might have hindered proper hardware separation.
That way you contain the inherent mess that a Windows install will eventually devolve into. You also get the ability to snapshot states of your windows install, which makes it possible to mess around a bit and then roll back to a previous state.
You didn't tell what Windows software you want to run, but depending on your needs you could even do a pci-passthrough in this setup.
I do not recommend Ansible as someone else did. You will spend your days fighting a mix of yaml and Jinja. You will end up looking at Python errors because there are no static types. Never again.