Vagrant je open-sourcový software, který slouží pro stavbu a údržbu přenosného virtuálního prostředí pro vývoj software, jako je například VirtualBox, Hyper-V, Docker kontejnery, VMware nebo AWS, které se snaží zjednodušit správu konfigurace software a virtualizaci. Pokouší se tak dosáhnout vyšší produktivity vývoje. Vagrant je psaný v Ruby, ale jeho ekosystém podporuje vývoj v různých jazycích, například PHP, Pythonu, C#, Javě nebo Javascriptu.

Architektura

Vagrant používá jako stavební kameny „Provisioners“ a „Providers“, aby spravoval vývojová prostředí. Provisioners jsou nástroje, které uživatelům umožňují přizpůsobovat konfiguraci virtuálního prostředí. Puppet a Chef jsou nejpoužívanejší nástroje, které jsou v ekosystému Vagrant používané (také Ansible je dostupný od roku 2014).

Providers jsou služby, které Vagrant využívá, aby nastavil a vytvořil virtuální prostředí. VirtualBox, Hyper-V a Docker virtualizace jsou podporovány přímo v rámci Vagrantu, VMware a AWS jsou pak podporovány za využití pluginů.

Vagrant sedí nad virtualizačním softwarem jako wrapper a pomáhá vývojáři s interakcí s providery. Automatizuje konfiguraci virtuálních prostředí za pomoci Chef nebo Puppet a uživatel tak nemusí přímo používat žádný další virtualizační software.

Hardwarové a softwarové požadavky jsou uloženy v souboru, který se nazývá „Vagrantfile“. Za jeho pomoci jsou spuštěny nutné kroky k výrobě „boxu“ připraveného na vývoj. „Box“ je formát a přípona pro prostředí Vagrantu, který je kopírován do dalšího stroje tak, aby se replikovalo stejné prostředí.

Proč použít Vagrant

Lokální vývoj je vhodný, pokud vyvíjíte sami pro sebe a do vývoje není zapojený velký tým. Pokud ale pracujete na větším projektu, kde pracuje větší množství týmů a každý tým potřebuje jinou konfiguraci, Vagrant může být vhodným řešením. S jeho pomocí můžete udržet všechny projektové soubory a složky na lokálním prostředí, ale zároveň je mít i na některém serveru. Je tak snadné lokální prostředí zpřístupnit projektovému manažerovi nebo designérovi.

Výhody použití Vagrantu

  • Automatizace. Je možné vytvořit automatizované workflow.
  • Přístupnost. Je možné přistupovat k instanci Vagrantu i z dalších strojů.
  • Replikace. Umožňuje vytvořit stejné vývojové prostředí pro všechny členy týmu.
  • Provisioning skripty. Stačí aktualizovat Vagrant soubor.
  • Více používaných serverů. Pokud máte více frontend serverů, více backend serverů a CDN k instalaci, může se Vagrant velmi hodit. V takovém případě je obvykle náročné replikovat prostředí na každý stroj, které vývojáři používají. S Vagrantem stačí aktualizovat konfigurační soubor a automaticky pak vytvoří prostředí za vás a replikuje ho, kam bude potřeba.
  • Izolace závislostí. Za pomoci Vagrantu je možné izolovat závislosti a jejich konfiguraci do jediného konzistentního prostředí.
  • Testování infrastruktury. Za pomoci Vagrantu je možné rychle sestavit prostředí a konzistentní workflow pro testování skriptů na správu infrastruktury.
  • Zjednodušení práce designéra. Designer se může soustředit na svojí práci a zbytečně se nezdržovat s nastavováním prostředí.

Nevýhody použití Vagrantu

  • Použití na malých aplikacích je nepraktické. Pokud pracujete na malém CMS systému, Vagrant situaci pravděpodobně spíše zkomplikuje. Pokud je ale aplikace rozsáhlá a potřebujete automatizované a distribuované prostředí, Vagrant je vhodným řešením.
  • Obtížnost na učení. Nástroj je relativně náročné se naučit a zároveň je potřeba zapojit další systémy jako je Puppet nebo Chef.