I started using Vagrant just over a year ago. When I first started using it I didn’t know much about it. To use it you really don’t need to know much about it either. The concept of vagrant is you create your development environment in a virtual box and then use vagrant’s technology to connect to it. This connect is like a regular SSH connection but also has various other features. Vagrant basically supplies a way to make the virtual box act as a server. I recently had to create my own vagrant box from start to finish and had an interesting experience. Overall the experience was good and it went pretty smooth. For not knowing what I was doing at first I was able to get everything installed and running within five hours. That’s not to bad when you add in download time and reading about how to do things. If you need to know how to install vagrant I would follow the documentation as it was well done. While doing the instal through I found some advantages and disadvantages to using vagrant.
I see a lot of advantage to vagrant. The first of course is you can create a vagrant box and then deploy it to many machines. So one developer on your team spends the time creating the box and the rest of the team benefits by not having to create it themselves. They simply can download the .box file and vagrant up. It’s that easy. This is a great time saver when you have a team. Even if you are by yourself it can be a time saver if you ever switch machines. Another advantage is everybody on the team is literally using the same environment. This is everything from OS version down to package version. This can be important especially if a major version is the difference. You can also start with a predefined box using Vagrant Cloud. For example you could start with a fresh Ubuntu box or you could search for specific package you need installed. This can save you time because you don’t have to do all of the installation process yourself. Even thought there is a lot of good there is some downside to using Vagrant.
First you have to be running a virtual machine using either VirtualBox or VMWare. This can slow down your machine and it takes extra resources. So if you have a machine that is not very powerful this can be a huge burden. Another disadvantage is everything has to go through that server connection. So when you access localhost:3000 it has to call the virtual server and run through that. This will add a little bit of overhead compared to just running it on your local machine. This can be a little frustrating to deal with if you are use to developing on your local machine.
To sum it up I think Vagrant is a great tool and has really advanced over the last year. Vagrant Cloud looks super neat and is a great idea. To share these environments should help developers for years to come. The biggest pain for a developer is to setup their environment. Vagrant makes that whole process a whole lot easier.