Further reading
The article on Automating the Setup of the Local Developer Machine by Vishwas Parameshwarappa is a great place to start for using Vagrant, found at https://www.vagrantup.com. You can find the article at https://Red-gate.com/simple-talk/sysadmin/general/automating-setup-local-developer-machine.
Other tools include Chef, found at https://www.chef.io/, and Puppet, found at https://puppet.com. Some developers prefer to work within Docker containers during coding, found at https://www.docker.com. This is done to isolate different versions of SDKs from each other. Specific development tools cannot be scoped to a given folder and must be installed globally or OS-wide, making it very difficult to work on multiple projects at the same time. I recommend staying away from this type of setup if you can avoid it. In the future, I expect such chores are going to be automated by IDEs, as CPU core counts increase, and virtualization tech has better hardware acceleration.
We'll leverage Docker a little later in this book, but we'll use it to isolate our production software dependencies from their surrounding elements, like our local development environment or a server in the cloud.