Vagrant allows you to create lightweight, portable development environments. It’s very powerful, and can use VirtualBox, VmWare Workstation, Digital Ocean, and AWS as the Virtual Machine (VM) engine.
Homestead comes with (as of this writing):
- Ubuntu 14.04
- PHP 5.5
- Node (With Bower, Grunt, and Gulp)
- Laravel Envoy
- Fabric + HipChat Extension
The beauty of Vagrant is that you can add any other packages you want through provisioners. You can use Puppet, Chef and even shell scripts to add/remove/upgrade software.
If you really want to isolate your development environment, this is the way to go. For example, if you work in teams each developer can develop on a local Homestead box with the same software configuration. If you’re managing your database changes with a migrations package, then each developer can make their own database changes independent of each other. When a feature is ready for testing, then the person testing can fire up their Homestead environment and pull the latest changes. They can run the migrations and begin testing. Since the testing environment is identical to the development environment, issues found outside of code issues will be minimized.
If you want to demo a feature or software application, using Homestead would be a great way to do it. Whoever is giving the demo can fire up Homestead, pull the latest production code and run the migrations. The application will be at the same version as production.
And, you can run multiple applications in one instance of Homestead. Simply add a new shared folder and Nginx site configuration to the Homestead.yaml file and update your hosts file!
I use Homestead for my own side projects and for small projects at work. I highly recommend it as it has an extremely low barrier to entry, and is supported by the team that writes Laravel. It was the easiest Vagrant solution I’ve used, I had no issues and it was up and ready to go in seconds.