# Awesome Vagrant

A curated list of awesome Vagrant resources, plugins, tutorials and other nice things.

## Official resources

- Vagrant site - installation instruction, official manuals and docs.
- GitHub repo - source code, issues discussion and collaboration.

## Boxes

Where to find OS boxes ?

- Vagrantbox.es - the biggest list of all available boxes, maintained by community via GitHub pull requests.
- Vagrant Cloud - config share, boxes distribution and discovery (also premium features of private collaboration and sharing).
- Cloud Images Ubuntu.com - “clean” official Ubuntu cloud images.
- Baseboxes from Opscode - CentOS, Fedora, Debian, FreeBSD, Ubuntu.
- Puppet Labs Vagrant Boxes - these boxes are provided to be used by various Puppet projects.
- Cloudsmith - A fully managed package management SaaS with support for Vagrant repositories (and many others).

## Provisioning

- All available build in provisioning providers - official doc.
- Vaprobash - Vagrant Provisioning Bash Scripts.

## Notable plugins

You can install these modules by this command `vagrant plugin install MODULE-NAME`

- List of available Vagrant plugins from GitHub wiki.
- vagrant-vbguest - autoupdate VirtualBox guest additions (according to VB version).
- vagrant-hostsupdater - adds an entry to your /etc/hosts file on the host system.
- vagrant-cachier - share a common package (apt-get, npm, etc.) cache among similar VM instances.
- vagrant-host-shell - a vagrant provisioner to run commands on the host when a VM boots.
- vagrant-ansible-local allow provisioning your VM with ansible playbooks directly from the guest VM.
- sahara - easy manage VM state (commit/rollback while experimenting with software stack).
- vagrant-registration - add “register” and “unregister” capabilities to Vagrant guests for updates on systems with a subscription model(like Red Hat Enterprise Linux).
- vagrant-service-manager - enable easier access to the features and services provided by the Atomic Developer Bundle (ADB).
- vagrant-scp - Copy files to a Vagrant VM via SCP.

## Helpers / Tools

- Packer - a tool for creating identical machine images for multiple platforms from a single source configuration. For fast infrastructure deployment with multi-provider portability.
- T.A.D.S. boilerplate - boilerplate to create, develop and deploy a Docker Swarm environment, using Vagrant to reproduce production environment locally.
- Veewee - a tool for easily (and repeatedly) building custom Vagrant base boxes, KVMs, and virtual machine images.
- Vagrant plugin for ZSH shell - auto-complete for commands, task names, box names and built-in documentation.
- CLI Vagrant Manager - simple command-line tool to manage multiple vagrant boxes

## Desktop tools

- Vagrant Manager for OS X.

## Web services

To generate Vagrantfile with automated provisioning scripts.

- Phansible - provides an easy to use interface that helps you generate Ansible Playbooks for PHP based projects.
- PuPHPet - a simple GUI to set up virtual machines for PHP Web development.
- Protobox - PuPHPet analog, but uses own installer with YAML configuration format to control everything that is installed on the virtual machine.
- Rove - a service that allows you to pregenerate typical Vagrant builds.

## Proxy services

To proxy your local web server and make it publicly available over the internet.

- Vagrant share - allows you to share your Vagrant environment with anyone in the world.
- nip.io - a magic domain name that provides wildcard DNS for any IP address.
- ngrok - tool to create secure tunnels to expose a local server behind a NAT or firewall to the internet.
- serveo - expose local servers to the internet, without installing any client!
- proxylocal.com - proxy your local web-server and make it publicly available over the internet.
- localtunnel.me - assign you a unique publicly accessible url that will proxy all requests to your locally running webserver.
- portmap.io - OpenVPN based free port forwarding solution.

## Tutorials

- Getting Started With Vagrant by This Programming Thing.
- Getting started with Vagrant - automated dev servers deploy and provisioning.
- Working with Advanced Vagrant features in PhpStorm.
- Sharing Your Virtual Machine on the Web with Vagrant Share.
- Programming Community Curated Resources for Learning Vagrant
- Vagrant Online Courses at Classpert List of Vagrant Online Courses (free and paid)

## Books

- Vagrant: Up and Running by Mitchell Hashimoto.
- Vagrant CookBook by Erika Heidi.
- Pro Vagrant by by Wlodzimierz Gajda.
- Creating Development Environments with Vagrant / 2nd Edition by Michael Peacock
- Vagrant Virtual Development Environment Cookbook by Chad Thompson

## Popular readymade environments

- Vagrantpress - development environment for creating and modifying WordPress sites.
- Varying Vagrant Vagrants - An open source Vagrant configuration focused on WordPress development.
- Joomla-Vagrant.
- VDD - Vagrant Drupal Development.
- Drupal VM - A VM for local Drupal development, built with Vagrant + Ansible
- Try Yii2 - try Yii2 with Vagrant VM + Ansible provisioning = Complete readymade virtual server playground.
- Laravel4-Vagrant - run Laravel 4 inside a Ubuntu 12.04 Vagrant Virtual Machine w/PHP 5.5.
- OpenStack on Ansible with Vagrant.
- Laravel Homestead - Official Vagrant Box for Laravel development, based on Ubuntu 16.04 LTS, PHP 7, Nginx, and multiple database platforms.
- Scotch Box - Simple Vagrant Box with LAMP stack, plus some useful extras, based on Ubuntu 14.04 LTS.

## License

To the extent possible under law, Ievgen Kuzminov has waived all copyright and related or neighboring rights to this work.