🟢 Beginner

Vagrant — Lokálne vývojové prostredia

Vagrant od HashiCorp je nástroj na vytváranie a správu prenosných virtuálnych vývojových prostredí. Jeden Vagrantfile definuje celé prostredie — od operačného systému po nainštalovaný softvér — a každý člen tímu dostane identickú kópiu.


Čo je Vagrant?

Vagrant rieši klasický problém „u mňa to funguje." Namiesto manuálneho nastavovania vývojového prostredia definujete všetko v kóde. Nový vývojár spustí vagrant up a za pár minút má funkčné prostredie identické s produkciou.

  • Prenosnosť — Vagrantfile zdieľate cez Git
  • Izolácia — každý projekt má vlastnú VM
  • Konzistencia — rovnaké prostredie pre celý tím
  • Jednoduchévagrant up, vagrant ssh, vagrant destroy

Ako Vagrant funguje

  1. Vagrantfile — Ruby-based konfiguračný súbor popisujúci prostredie
  2. Box — predpripravený obraz OS (Ubuntu, CentOS, Windows)
  3. Provider — virtualizačná platforma (VirtualBox, VMware, Docker, Hyper-V)
  4. Provisioner — automatická konfigurácia po štarte (shell, Ansible, Chef)
  5. Synced Folders — automatická synchronizácia súborov medzi hostom a VM

Príklad Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.hostname = "dev-server"

  config.vm.network "forwarded_port", guest: 3000, host: 3000
  config.vm.network "private_network", ip: "192.168.56.10"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y nodejs npm postgresql
    npm install -g yarn
  SHELL

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "provisioning/playbook.yml"
  end
end

Základné príkazy

  • vagrant up — vytvorí a spustí VM
  • vagrant ssh — pripojí sa do VM
  • vagrant halt — zastaví VM
  • vagrant destroy — zmaže VM
  • vagrant reload — reštartuje s aktualizovanou konfiguráciou
  • vagrant snapshot — vytvorí snapshot pre rýchly návrat

Praktické použitie

  • Onboarding nových vývojárov — funkčné prostredie za minúty
  • Testovanie na rôznych OS — Ubuntu, CentOS, Windows v jednom projekte
  • Multi-machine setup — simulácia distribuovaných systémov lokálne
  • Reprodukcia production prostredia pre debugging

Best Practices

  • Verzionujte Vagrantfile spolu s projektom v Git
  • Používajte provisioning namiesto manuálnej konfigurácie
  • Vyberajte oficiálne boxy z Vagrant Cloud
  • Pre väčšie tímy vytvorte vlastný base box s predpripraveným softvérom
  • Zvážte Docker provider pre ľahšiu alternatívu k plným VM
  • Dokumentujte požiadavky na host systém (RAM, disk)

Vagrant zostáva užitočný nástroj pre lokálny vývoj, hoci v mnohých scenároch ho nahradili kontajnery a Dev Containers.