Vagrant is an amazing technology by HashiCorp. It lets you imperatively create vritual machines for your projects. Essentially it is a part of Infrastructure as a Code approach, where you write Vagrantfile with specifics about virtual machine and Vagrant boots the machine up and "provisions" it with ansible or just plain bash scripts. I really had a blast using it. In a matter of minutes I could bring up any product and play with it.
Although Vagrant documentation is pretty straight forward, there are some pitfalls that you might need to overcome. Depending on the virtualization provider, there are some specific options that you need to handle.
I have created a repository specifically for kubernetes deployment in virtualbox environment using ansible playbooks. I try to keep it working throughout the kubernetes releases.