- Consistent, reliable virtual environments for web development
- Easy to use commands
- Lacks a GUI, would be useful for entry level users
- Uses lots of resources on old machines
- Compatibility issues with some operating systems (Windows 8.1 home, Windows 10 home)
- Vagrant is decentralized so anyone can make a container package to get a project started. you aren't limited to wordpress, or even one style of wordpress install (you can make a sage.io wordpress environment).
- Vagrant easily lets you set ports and URLs for local development.
- I have yet to have a problem with Vagrant, as opposed to MAMP and DesktopServer, which both gave me SQL or other issues.
- The learning curve is steep for deploying a vagrant package if you've never dealt the command line.
- Initially, it was a little difficult to get the networking right because I didn't have a lot of experience with using to the virtual machine.
- Local testing
- Allows use of the same OS and software as the server
- Pretty fast and reliable
- Can be difficult to set up
- Requires command line usage, which can be difficult for less tech savvy designers/developers
- Can take up a lot of disk space if running several VMs with various configurations
It's less appropriate for more design focused developers who are not super comfortable with the command line. Though once set up and configured, it's pretty easy to teach anyone how to use it.
- Easy to create machines with different OS's, list of them can be found from Vagrant's website with configuration details.
- Flexible configuration, user can determine what software will be pre-installed to machine. Saves time because it doesn't need to be done manually every time.
- Easily manage full environments, not just single machines, with single command.
- There's no GUI. Everything has to be configured by text editor and all operations are done through command line.
- If there's a problem when bringing up the machine, Vagrant may take lot of time by just waiting and not giving good error output.
- I don't like its configuration syntax (Ruby).
- Server Virtualization - it's easy to recreate a server environment and automate builds for other developers.
- Seamless integration between the server environment and local machine. This allows you to use your preferred editor, automation tools and other applications, but have the website run in a self-contained environment
- Learning curve is steep - It can be challenging for someone to set up initially. After some coaching, the basics come pretty quickly though.
- Relies on external Virtual Machine applications - It would be great if Vagrant itself could run the virtual machine instead of leaning on other virtualization software. This is a small detail, but would make setup simple.
- Better support for running
- It builds VM quickly and easily, which allows them to be treated like livestock rather than pets. They can easily be thrown away and rebuilt.
- Having access to a large library of VMs (via Vagrantfiles) enables rapid testing in multiple environments.
- It's free and open-source.
- As Vagrant's installed base has expanded, the combinations of Vagrant versions, guest OS versions, and VM providers has exploded. As a result, sometimes a particular combination doesn't work. It can be difficult to pin down the culprit, but the community is very helpful. This isn't really a knock on Vagrant - it's inevitable given its success.
- Fast & easy setup for development environment.
- Consistent to all programmers within a same project.
- One is the memory usage, because it is a virtual OS running on top of the host. Thus if a PC does not have enough memory, it is quite suffer[able] to use it.
When we started work on our second application Taskle, I decided to try using Vagrant for our development environment. I had seen a presentation about it at a local user group and thought it would make development easier.
Initially we used Vagrant with Chef, but eventually, I found Ansible and have really liked using it.
Since Vagrant is a tool for development environments, it's only used by our developers. We currently have several freelance developers working on our applications in addition to myself and we all use Vagrant boxes for development.
- Vagrant allows me to do development locally. That means that as long as I have my computer I can work on our product. This has been helpful when our internet has gone down, or even just if the internet has been slow. I've also been able to work in the car or when I'm camping and don't have wi-fi.
- Vagrant has allowed me to set up a consistent development environment for all of our developers. I know they are using the correct version of the servers and of the code.
- Vagrant allows me to easily.
- Vagrant also allows me to experiment with alternate configurations. I can test our for instance if upgrading the OS or version of PHP is going to break anything.
- Because Vagrant is a low-level tool with many ways to configure it, there is a steep learning curve. You don't just have to learn (or install) Vagrant, but also Virtualbox, Ansible and possibly some Vagrant plugins to keep boxes up to date.
- Support on Windows doesn't seem great. I'm a Mac guy, so it's been very difficult getting things to work as expected when a developer wants to work on Windows.
- Perhaps I didn't configure it correctly, but the default shared folders are not the best for performance. There are also frequently weird issues regarding file permissions.
If you're writing software, particularly software that depends on other services (web servers or databases for example) then Vagrant is great. I know some people skip Vagrant and just set up virtual machines on their own, but I've found that Vagrant streamlines the process nicely and makes it easy to update or swap out versions.
If you're a web developer (which I am) it's amazing. I can have several boxes configured for my different projects and I just spin them up or down based on what I'm working on.
One scenario where this might not be ideal is if you're running Vagrant on a computer that has limited resources. Since you're running a virtual machine with its own operating system and such you'll want a host computer with enough RAM, hard drive space and CPU to run the virtual machine properly without killing the performance of the host.
The virtual disks can also take up a lot of space if you're not careful so if you have many virtual machines provisioned and don't clean up the old ones that you're not using, you may find that your hard drive is full. Each of my Linux servers take up about 10GB of disk space.
Vagrant became the main staple for the company's developers, as we all were part of both the research and the development tasks at the company. So, switching projects - as well as keeping various scenarios at the same time on our servers - really became a breeze for everyone. Now, every new task of research that involves a new set of technology, comes with a vagrant up command, which is nice and simple to deal with the incompatibilities, so common in this industry.
- Maintaining many virtualized machines at the same time
- Multiple platform support
- A lot lighter if compared with VMBox
- The end of "it's working at my computer" kind of excuse when things break at production
- If possible, it could be lighter than its alternatives.
- Improve the way boxes work, to make it easier to update and/or find
- For simple out-of-the-box tasks Vagrant is pretty simple to use, but for much more real-life and complex tasks, it can become quite daunting to configure a box and make it available/distributable to all the company's computers.
- A consistant development environment across multiple operating systems.
- I don't have to worry about my code breaking on someone else's machine as long as we have the same vagrant image and settings.
- Support for Docker as well but I am not sure how this plays out.
- Vagrant is a pain to configure initially and depending on what your machine is, it might actually take you a few hours to get it up and running.
- Vagrant uses VirtualBox and VMware for running the virtual machines and in my personal opinion, I think it's having trouble keeping up with the updates to VirtualBox. There have been some reports of bugs that have crept in because of this. I personally have also come across this.
Vagrant Scorecard Summary
Vagrant Technical Details