Are you looking at reproducibility for dev environments, or for a home server?
For the former, Vagrant is probably the tool you’re looking for.
For the latter it depends on the level of complexity and reproducibility that you’re comfortable dealing with. Something like Proxmox lets you snapshot and restore VMs, which may be enough. On the other end of the spectrum you would have golden images that you rebuild on demand, or cloud init coupled with ansible or chef to customize VMs on demand based on metadata.
Are you looking at reproducibility for dev environments, or for a home server?
For the former, Vagrant is probably the tool you’re looking for.
For the latter it depends on the level of complexity and reproducibility that you’re comfortable dealing with. Something like Proxmox lets you snapshot and restore VMs, which may be enough. On the other end of the spectrum you would have golden images that you rebuild on demand, or cloud init coupled with ansible or chef to customize VMs on demand based on metadata.