- Vagrant és compatible amb Hyper-V des de Windows 8.1 o superior i facilita entorns reproduïbles
- Instal·lar i configurar Vagrant a Hyper-V requereix ajustaments específics en xarxa i aprovisionament
- Hyper-V no permet certes funcions com IPs estàtiques fàcilment, però hi ha solucions complementàries
- Es recomana utilitzar imatges 'boxes' compatibles amb Hyper-V per evitar errors d'arrencada

D'entrada, muntar entorns virtuals de forma ràpida i ordenada a Windows sembla una missió complexa. Per sort, comptem amb eines com Vagrant a Hyper-V per fer-ho possible. I encara que el seu ús està més associat a VirtualBox, també és plenament compatible amb aquesta tecnologia de virtualització que ja ve integrada a moltes versions de Windows.
Tot i això, instal·lar i configurar Vagant a Hyper-V no és tan fàcil com sembla. Hi ha passos clau i peculiaritats del proveïdor de virtualització de Microsoft que has de conèixer. En aquest article t'apropem tot allò necessari perquè posis en marxa entorns virtuals seguint aquesta fórmula i sense contratemps.
¿ Què és Vagrant i per què utilitzar Hyper-V?
Vagant és una eina de codi obert que permet construir entorns virtuals reproduïbles i portables a través de simples fitxers de configuració. Està pensada per a desenvolupadors, administradors de sistemes o qualsevol persona que necessiti entorns consistents entre equips, amb suport per a múltiples sistemes operatius.
D'altra banda, Hyper-V és l'hipervisor nadiu de Microsoft, inclòs en versions Professional, Enterprise i Education de Windows 8.1 en endavant. Ofereix un alt rendiment i estabilitat, especialment útil quan altres hipervisors com ara VirtualBox generen conflictes en entorns Windows moderns.
Un dels motius més comuns per optar per Hyper-V en lloc de VirtualBox és que alguns productes, com escriptori docker o WSL2 (subsistema de Linux per a Windows), necessiten que Hyper-V estigui activat. Això genera incompatibilitats amb VirtualBox, cosa que converteix Hyper-V en l'única solució vàlida si no volem estar activant i desactivant serveis.
Instal·lació de Vagrant i habilitació d'Hyper-V
Abans de començar a utilitzar Vagrant a Hyper-V, assegura't que el teu equip té Hyper-V activat.Cuidado, perquè no sol estar habilitat per defecte.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Després d'executar aquesta ordre, cal reiniciar l'ordinador perquè els canvis tinguin efecte.
En paral·lel, has de descarregar i instal·lar Vagrant des de la web oficial. L'instal·lador inclou tot el necessari perquè pugueu utilitzar l'ordre vagrant directament des de qualsevol terminal.
Un cop instal·lat, pots verificar que tot estigui correcte executant a la terminal:
vagrant --version
Aquesta ordre hauria de tornar-te la versió instal·lada, per exemple Vagrant 2.4.0.
Primer pas: preparar un entorn base
Vagrant es basa en “boxes”, que són imatges base de sistemes operatius preinstal·lats. Aquestes es descarreguen automàticament des de l'index públic conegut com a Vagrant Cloud. Per començar, cal crear una carpeta on treballaràs amb el teu projecte. Per exemple:
mkdir mi_proyecto_vagrant
cd mi_proyecto_vagrant
vagrant init generic/alpine36
aquesta comanda generarà un fitxer anomenat Vagrantfile que és on resideix tota la configuració de la màquina virtual. Dins seu hauràs d'ajustar alguns paràmetres clau per utilitzar Hyper-V.
Configuració del proveïdor Hyper-V
Per defecte, Vagrant intentarà fer servir VirtualBox com a proveïdor. Per utilitzar Hyper-V, pots indicar-ho cada vegada llançant:
vagrant up --provider=hyperv
O bé, establir Hyper-V com a proveïdor per defecte configurant una variable dentorn:
$env:VAGRANT_DEFAULT_PROVIDER="hyperv"
Aquest pas es pot fer des de PowerShell o directament a les variables d'entorn del sistema.
Dins del Vagrantfile, es recomana especificar el proveïdor amb configuracions específiques. Un exemple bàsic seria:
Vagrant.configure("2") do |config|
config.vm.box = "generic/alpine36"
config.vm.provider "hyperv" do |h|
h.vmname = "mi_vm_hyperv"
h.memory = 2048
h.cpus = 2
end
end
Aquests paràmetres permeten assignar memòria RAM, quantitat de nuclis i el nom que tindrà la màquina a Hyper-V.
Xarxes i connectivitat a Hyper-V
Un dels punts febles de Hyper-V a Vagrant és que no configura automàticament la xarxa. Per això hauràs de seleccionar manualment un vSwitch amb connectivitat externa ja creada a Hyper-V.
Per associar una xarxa privada o seleccionar un vSwitch concret, pots fer servir:
config.vm.network "private_network", bridge: "NombreDelvSwitch"
Tingues en compte que Hyper-V no permet configurar directament IPs estàtiques des de Vagrant, per la qual cosa s'han d'establir mitjançant scripts o modificant els paràmetres del sistema operatiu convidat.
Accés a la màquina: SSH i altres eines
Encara que sembli que a Windows no es pot fer servir SSH, Vagrant inclou un client SSH integrat, de manera que pots accedir-hi sense necessitat d'instal·lar programes addicionals.
Accedeix amb:
vagrant ssh
També pots fer servir PuTTY, però en aquest cas necessitaràs convertir la clau privada que genera Vagrant en format PPK (amb PuTTYgen), ja que no és compatible directament. La clau està ubicada a:
.vagrant/machines/default/hyperv/private_key
Això et permetrà connectar-te manualment des de qualsevol client SSH que prefereixis.
Aprovisionament amb scripts
Un dels majors beneficis de Vagrant és el seu suport per a aprovisionament automàtic, gràcies a scripts. Pots llançar scripts de shell per a instal·lacions repetibles:
config.vm.provision "shell", path: "bootstrap.sh"
Dins de l'arxiu bootstrap.sh pots incloure instruccions com:
apk update
apk add git
Això s'executarà la primera vegada que es creï la VM. Si vols tornar a aplicar l'script posteriorment, pots fer-ho:
vagrant reload --provision
Treballant amb múltiples màquines
Vagrant permet gestionar més d'una màquina des d'un fitxer. Això és útil per a laboratoris o clústers de servidors. Una configuració típica per a un laboratori pot incloure diverses definicions:
Vagrant.configure("2") do |config|
config.vm.define "master" do |master|
master.vm.box = "bento/ubuntu-20.04"
master.vm.hostname = "master"
master.vm.network :private_network, ip: "10.0.0.10"
end
(1..2).each do |i|
config.vm.define "node#{i}" do |node|
node.vm.box = "bento/ubuntu-20.04"
node.vm.hostname = "node#{i}"
node.vm.network :private_network, ip: "10.0.0.#{i + 10}"
end
end
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y avahi-daemon libnss-mdns
SHELL
end
Això permet que les màquines es reconeguin mitjançant noms com node1.local o master.local gràcies a lús de mDNS.
Consells sobre rendiment i compatibilitat
El rendiment de Vagrant a Hyper-V és generalment bo, però depèn de:
- La potència del teu equip amfitrió (RAM, CPU, tipus de disc).
- La imatge base usada (millor fer servir boxes optimitzades).
- La quantitat de màquines funcionant alhora.
- Ús de disc diferencial i aprovisionament lleuger.
Una pràctica habitual per scriptar múltiples entorns és crear-ne una box personalitzada que ja inclogui totes les teves categories: eines, serveis, rutes, etc. Això evita haver de tornar a instal·lar el mateix a cada instància.
Usar Vagrant a Hyper-V a Windows és totalment viable, encara que amb algunes limitacions que es poden solucionar amb petits ajustaments. Hyper-V aporta robustesa i compatibilitat amb tecnologies modernes de Microsoft, mentre que Vagrant facilita l'automatització i portabilitat de l'entorn de desenvolupament.
Redactor especialitzat en temes de tecnologia i internet amb més de deu anys d'experiència a diferents mitjans digitals. He treballat com a editor i creador de continguts per a empreses de comerç electrònic, comunicació, màrqueting en línia i publicitat. També he escrit a webs d'economia, finances i altres sectors. La meva feina és també la meva passió. Ara, a través dels meus articles a Tecnobits, intento explorar totes les novetats i noves oportunitats que el món de la tecnologia ens ofereix dia a dia per millorar les nostres vides.



