Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
Pojďme to probrat

Vagrant — jednotné vývojové prostředí pro celý tým

20. 01. 2014 2 min čtení CORE SYSTEMSinfrastructure

Každý vývojář v týmu měl jiný operační systém, jinou verzi Javy, jinak nakonfigurovaný Tomcat. Výsledek? „U mě to funguje” se stalo naším neoficiálním mottem. Pak jsme objevili Vagrant a všechno se změnilo.

Problém: snowflake prostředí

V týmu dvanácti vývojářů jsme měli minimálně pět různých konfigurací. Někdo na Windows 7, někdo na Windows 8, dva kolegové na Ubuntu, jeden na Fedoře. Každý měl jinou verzi JDK, jiné environment proměnné, jiný způsob, jak spouštěl lokální databázi. Onboarding nového kolegy trval dva dny — dva dny nastavování prostředí, hledání správných verzí knihoven, řešení záhadných chyb.

Vagrant: virtuální stroj jako kód

Vagrant od HashiCorp umožňuje popsat vývojové prostředí v jednom souboru — Vagrantfile. Je to Ruby DSL, ale nepotřebujete Ruby umět. Pár řádků a máte virtuální stroj s přesně definovaným softwarem.

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 5432, host: 5432
  config.vm.provision "shell", path: "provision.sh"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end
end

Provisioning script nainstaluje JDK 7, Tomcat 7, PostgreSQL 9.3, Maven 3.1 — přesně ty verze, které potřebujeme. Žádné překvapení, žádné odchylky. Nový vývojář přijde, naklonuje repo, spustí vagrant up a za 10 minut má běžící prostředí.

Multi-machine setup

Pro složitější projekty Vagrant umožňuje definovat více strojů v jednom Vagrantfile. Každý stroj má svou IP v privátní síti. Tím simulujeme produkční topologii lokálně — aplikační server + databázový server + message broker.

Sdílené složky propojují zdrojové kódy z hostitelského systému do VM. Vývojář píše kód ve svém oblíbeném IDE na hostiteli, kompilace probíhá uvnitř VM.

Provisioning: Shell vs. Chef vs. Puppet

Vagrant podporuje několik provisionerů. Začali jsme se shell skriptem — srozumitelný pro každého. Důležité je, aby provisioning byl idempotentní — můžete ho spustit opakovaně bez vedlejších efektů. Když přidáte novou závislost, stačí vagrant provision a všichni ji mají.

Problémy

Výkon: VirtualBox na starších laptopech běží pomalu. Sdílené složky přes Guest Additions jsou pomalé — NFS je lepší, ale na Windows nefunguje snadno. Velikost boxů: Přes gigabajt, stahování trvá. Docker vs. Vagrant: Slyšíme o Dockeru a přemýšlíme, jestli kontejnery nenahradí VM. Zatím jsou to komplementární nástroje.

Vagrant nám ušetřil stovky hodin

Od zavedení Vagrantu je onboarding otázkou minut, ne dnů. Všichni pracují na identickém prostředí. Pokud máte tým větší než dva lidi, Vagrant je investice, která se vrátí první den.

vagrantvirtualboxautomatizacevývoj
Sdílet:

CORE SYSTEMS

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.