Úvod do Vagrantu

K čemu slouží Vagrant? Kdy a proč ho použít? To vám představíme v dnešním článku.

Každý vývojář může pracovat na zcela jiném vývojovém prostředí – s jiným operačním systémem, s jiným webovým serverem a odlišnými verzemi toho všeho. Rozdílné vývojové prostředí může způsobit problémy při nasazování na produkční server, nebo při spolupráci vývojářů na společném projektu. Nutit vývojáře přejít na stejné prostředí není řešením. Vhodnější cestou je použít nástroj, který problémy plynoucí z rozdílnosti vyřeší. Jmenuje se Vagrant a v tomto článku se s ním seznámíme teoreticky.

Co je Vagrant?

Vagrant je nástroj, který vytváří kompletní přenosné vývojové prostředí pomocí virtualizace. V podstatě vytvoří na našem stroji další virtuální počítač, který muže být konfigurován například stejně jako produkční linuxový server.

Vývojář ale nemusí Linux ani znát – o Vagrant mašinu se vůbec nemusí zajímat. Pracuje dál ve svém operačním systému, jak je zvyklý. Mění kód svého projektu a ten se díky automatickému sdílení projektové složky spouští ve Vagrantem vytvořené mašině. Výsledky práce pak můžeme ihned kontrolovat například přes svůj prohlížeč.

Vagrant spojuje technologie pro virtualizaci a nástroje pro konfiguraci serverů. Spolu s Vagrantem je tedy nutné nainstalovat nějaký virtualizační nástroj. Nejznámějším je VirtualBox, který si stáhnete zdarma na https://www.virtualbox.org/wiki/Downloads. Vagrant ale umí pracovat i s dalšími nástroji jako například VMware a Hyper-V.

Pojďme si něco povědět o základních kamenech a pojmech Vagrantu.

Vagrantfile

Vagrantfile je konfigurační soubor psaný v Ruby. Jeho syntax ale nutně znát nemusíte, velmi intuitivně se doplňuje. Abychom Vagrant spustili, musí Vagrantfile existovat. Jeho umístění je ideálně v kořenovém adresáři projektu.

Ve Vagrantfile můžeme nastavit, jakou mašinu má Vagrant spustit. Podstatné je, abychom znali cestu nebo název k image mašiny. V terminologii Vagrantu se těmto připraveným mašinám říká boxy.

Podívejme se, jak vypadá základní Vagrantfile, který postačí, abychom mohli vyvíjet např. svůj PHP projekt.

Vagrant.configure(2) do |config|
  config.vm.box = "scotch/box"
  config.vm.network :forwarded_port, host: 8888, guest: 80, auto_correct: true
end

V tomto ukázkovém Vagrantfile nastavujeme box a síť. Říkame tak, jakou mašinu má Vagrant spustit a na jaký port hostitele má přesměrovat provoz ze svého portu 80. Box je připraven tak, že z něho vznikne linuxová mašina s připraveným LAMP přímo pro vývoj PHP aplikací.

Virtualizace

A jakou mašinu tedy Vagrant spouští? Jakou mu řekneme. Tyto boxy jsou v podobě jednoho souboru, podobně jako image disku.

K webovému vývoji bychom např. mohli potřebovat Linux s již nainstalovaným LAMP serverem. Ve speciálním repozitáři Vagrantu je možné najít předpřipravené boxy (repozitářů a seznamů boxů je na internetu víc), nebo si je můžeme vyrobit sami. Výroba boxu ale vyžaduje vyšší level zkušeností z oblasti systémových administrátorů.

Provisioning

Kromě dalších nastavení lze ve VagrantFile konfigurovat tzv. Provisioning. Je to prakticky následné spuštění dalších skriptů na nově vytvořené mašině. Ty mají většinou také ryze konfigurační účel, například doinstalace některých služeb na server a jejich nastavení.

Provisioning lze provést několika způsoby. Nejjednodušší je použití bash skriptu přímo ve Vagrantfile, nebo jeho připojení jako vedlejšího souboru. Velká výhoda Vagrantu je ale jeho podpora konfiguračních technologií jako jsou Puppet, Chef nebo Docker.

Pokud je váš produkční server konfigurován pomocí těchto technologií, lze použít jejich skripty pro Vagrant a pracovat ve velmi homogenním prostředí. Stejné konfigurační skripty budou použity pro vytvoření produkčních virtuálních strojů i pro lokální vývoj.

Tak tedy vagrant up

Pro ucelení úvodu velmi stručně popíšu, jak Vagrant pracuje a jak se s ním pracuje například z pohledu vývojáře webu. Situace: web je na lokálním disku a v jeho kořenovém adresáři je již nahrán soubor Vagrantfile se vším potřebným nastavením.

Co udělám:

  • V kořenovém adresáři projektu zadám příkaz vagrant up.

Co se stalo:

  • Vagrant příkaz si načetl soubor Vagrantfile,
  • VirtualBox spustí nový virtuální stroj a nainstaluje ho z boxu, v našem případě Ubuntu Linux server s LAMPem,
  • nový stroj nastaví tak, abychom mohli využít sdílení složek a byl přístupný na naší síti,
  • spustí provision script, pokud je nějaký nastaven ve Vagrantfile, například vytvoření databáze apod.

 

6 výhod Vagrantu:

1. Vývojové prostředí = produkční prostředí, což vede k minimalizaci chyb

S Vagrantem máte jistotu, že vyvíjený projekt poběží bez problémů na produkčním serveru. Vývojové prostředí je totiž díky virtualizaci zcela identické s produkčním. Výmluva typu: “Ale u mně na lokálu to běží” je minulostí.

2. Vývojáři vyvíjejí na stejném prostředí vůči projektu

Každý projekt může mít rozdílné produkční prostředí. S Vagrantem nepřenášíte jen projekt mezi vývojáři, ale přenášíte projekt i s nastavením celého produkčního prostředí, které si každý spustí lokálně.

3. Můžeme rozjet několik i zcela rozdílných prostředí najednou

I kdybychom potřebovali jen hodinu pracovat na projektu, který potřebuje PHP 5.4 a databázi MySQL a druhou hodinu na projektu na NodeJS a MongoDB – s Vagrantem je jednoduché během chvilky takové projekty lokálně rozjet napoprvé a klidně i najednou.

4. Pro konfiguraci virtuálních strojů lze použít stejných skriptů jako na hostingu

Kdo používá Puppet, Chef, Docker a další nástroje pro konfiguraci, silně využije tyto možnosti pro nastavení lokálního stroje přes Vagrant provisioning.

5. Rozjetí projektů bez komplikací

Vagrant nám zajistí spuštění projektu a jeho stabilního rozjetí pomocí jediného příkazu. Přijde-li například do firmy nový vývojář, nemusí si instalovat nic jiného než Vagrant a virtualizační nástroj k tomu, aby mohl okamžitě začít pracovat na projektech. Neztrácí čas řešením problému s vývojovým prostředím.

6. Licence zdarma

Licenčně je Vagrant zdarma, dokonce i pro komerční využití, stejně jako např. VirtualBox.

Závěr

Místo složitého zjišťování nastavení lokálního prostředí může mít každý projekt v GIT repozitáři svůj Vagrantfile. Jediné, co pak musí vývojář udělat, je “vagrant up”, a může vyvíjet.

U nás v AITOMu mají programátoři a kodéři snad všechny druhy operačních systémů různých verzí. Vagrant nám dává jistotu, že nás nečekají žádná překvapení způsobená rozdílností tolika prostředí. A když přijde nováček, za pár minut může pracovat. Vyzkoušejte to. Výsledkem bude velmi profesionální a efektivní přístup k vývojovému prostředí.

V budoucnu bych se Vagrantu rád dál věnoval a napsal o jeho použití v praxi.

AITOM nabízí komplexní řešení, od vstupní studie přes vývoj webu až po internetový marketing, a díky tomu dokáže nést odpovědnost za stanovené výsledky. Aktuálně sháníme nové kolegy a kolegyně do našeho týmu.

Pracuje v digitální agentuře AITOM jako hlavní programátor. Buduje moderní zázemí pro vývoj a stará se o to, aby agentura technologicky nikdy nezaspala. Je také CTO neziskového projektu CSWU.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 10

Přehled komentářů

Kaja Vagrant versus Docker
VerosK Re: Vagrant versus Docker
Lukáš Havrlant Re: Vagrant versus Docker
Finch Re: Vagrant versus Docker
to je jedno
Martin Svačinka Re:
Jakub Kulhan Custom VPS provider?
elmariofredo Re: Custom VPS provider?
msgre Re: Vagrant versus Docker
msgre Re: Vagrant versus Docker
Zdroj: https://www.zdrojak.cz/?p=15673