Guió VagrantMVs
Nom de la tasca
Adaptar les MVs perquè puguin ser compatibles amb Vagrant
Com preparar cinc màquines virtuals perquè Vagrant les pugui gestionar, amb les proves i els problemes trobats.
Equip 8
Justificació
Vagrant no instal·la sistemes operatius: crea i controla màquines virtuals que ja existeixen. Per fer-ho sense intervenció manual necessita entrar a la MV, executar ordres i apagar-la. Per això cada MV s’ha de preparar abans, i cada configuració té una raó concreta.
| Configuració | Per què la necessita Vagrant |
|---|---|
Servidor SSH (ssh / sshd) | És el canal que Vagrant fa servir per connectar-se a la MV, executar ordres i llançar el provisionament. Sense SSH, Vagrant es queda esperant que la MV arrenqui i acaba donant error de temps d’espera. |
| Servei SSH actiu i automàtic | La MV s’inicia i s’apaga moltes vegades. Si el servei no arrenca sol, Vagrant no podrà entrar després de cada reinici. |
Usuari vagrant | És l’usuari que Vagrant espera trobar per defecte. Així el mateix Vagrantfile funciona igual a Windows, Debian, Ubuntu o Rocky Linux. |
Clau pública de Vagrant a authorized_keys | Permet iniciar sessió sense contrasenya, de manera automàtica. Vagrant la fa servir en el primer arrencament. |
Permisos 700 a .ssh i 600 a authorized_keys (Linux) | SSH rebutja la clau si els permisos són massa oberts. Sense aquests permisos la connexió falla encara que la clau sigui correcta. |
sudo sense contrasenya (Linux) | El provisionament executa ordres amb privilegis elevats. Si sudo demana contrasenya, el procés es bloqueja perquè no hi ha ningú per escriure-la. |
Crear C:\Users\vagrant\.ssh abans de descarregar la clau (Windows) | Si la ruta no existeix, la descàrrega falla o es crea una carpeta mal formada, i Vagrant no troba la clau. |
| Desactivar WSUS (Windows) | La política WSUS impedia instal·lar OpenSSH. Sense OpenSSH no hi ha SSH, i sense SSH Vagrant no pot gestionar la MV. |
| Apagar la MV al final | La MV queda en un estat net i tancat, a punt per ser utilitzada per Vagrant. |
Implementació
Les configuracions s’han aplicat a les cinc MVs. A cada secció (MV 1 a MV 5) hi ha el codi exacte que s’ha executat i les captures com a evidència.
| Configuració | MV 1 Win 10 | MV 2 Win Server | MV 3 Debian | MV 4 Ubuntu | MV 5 Rocky |
|---|---|---|---|---|---|
| Servidor SSH instal·lat | ✔ | ✔ | ✔ | ✔ | ✔ |
| Servei SSH actiu i automàtic | ✔ | ✔ | ✔ | ✔ | ✔ |
Usuari vagrant | ✔ | ✔ | ✔ | ✔ | ✔ |
| Clau pública de Vagrant | ✔ | ✔ | ✔ | ✔ | ✔ |
Permisos correctes a .ssh | – | – | ✔ | ✔ | ✔ |
sudo sense contrasenya | – | – | ✔ | ✔ | ✔ |
| Correcció WSUS | ✔ | ✔ | – | – | – |
| MV apagada al final | ✔ | ✔ | ✔ | ✔ | ✔ |
El guió “–” vol dir que aquella configuració no s’aplica a aquest sistema operatiu.
Resum de les 5 MVs
Totes les MVs es configuren amb l’usuari vagrant i un servei SSH actiu. Vagrant necessita aquests elements per poder gestionar-les.
| MV | Sistema operatiu | Usuari de configuració | Servei SSH |
|---|---|---|---|
| MV 1 | Windows 10 | vagrant | sshd |
| MV 2 | Windows Server 2019 | vagrant | sshd |
| MV 3 | Debian | vagrant | ssh |
| MV 4 | Ubuntu | vagrant | ssh |
| MV 5 | Rocky Linux | vagrant | ssh / sshd |
MV 1: Windows 10
S’executa: PowerShell com a Administrador dins de Windows 10.
Aquesta MV necessita el servidor OpenSSH, el servei sshd en marxa i la clau pública de Vagrant a la carpeta de l’usuari vagrant. Això permet que Vagrant entri sense contrasenya.
Codi utilitzat
# 1. Desactivar WSUS i instal·lar el servidor OpenSSH
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
Get-Service wuauserv | Restart-Service
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 2. Activar i iniciar el servei SSH
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 3. Crear directori de l'usuari vagrant i injectar la clau pública
New-Item -Path "C:\Users\vagrant" -ItemType Directory -Force
New-Item -Path "C:\Users\vagrant\.ssh" -ItemType Directory -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub" -OutFile "C:\Users\vagrant\.ssh\authorized_keys" -UseBasicParsing
# 4. Comprovar la clau i apagar
Get-Item C:\Users\vagrant\.ssh\authorized_keys
Stop-Computer

MV 2: Windows Server 2019
MV2k19. S’executa: PowerShell com a Administrador dins de Windows Server 2019.
Els passos són els mateixos que a Windows 10: OpenSSH, servei sshd i clau pública de Vagrant.
Codi utilitzat
# 1. Desactivar WSUS i instal·lar el servidor OpenSSH
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
Get-Service wuauserv | Restart-Service
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 2. Activar i iniciar el servei SSH
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 3. Crear directori de l'usuari vagrant i injectar la clau pública
New-Item -Path "C:\Users\vagrant" -ItemType Directory -Force
New-Item -Path "C:\Users\vagrant\.ssh" -ItemType Directory -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub" -OutFile "C:\Users\vagrant\.ssh\authorized_keys" -UseBasicParsing
# 4. Comprovar la clau i apagar
Get-Item C:\Users\vagrant\.ssh\authorized_keys
Stop-Computer(pendent d’afegir)
(pendent d’afegir)
MV 3: Debian
S’executa: terminal com a root o sudo dins de la MV Debian.
Instal·lem el servidor SSH, creem l’usuari vagrant amb sudo sense contrasenya i hi afegim la clau pública amb els permisos correctes.
Codi utilitzat
# 1. Actualitzar repositoris e instal·lar OpenSSH Server
sudo apt update && sudo apt install -y openssh-server curl
sudo systemctl enable --now ssh
# 2. Crear l'usuari vagrant i donar permisos sudo sense contrasenya
sudo useradd -m -s /bin/bash vagrant
echo "vagrant:vagrant" | sudo chpasswd
echo "vagrant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/vagrant
# 3. Injectar la clau pública de Vagrant amb permisos correctes
sudo mkdir -p /home/vagrant/.ssh
sudo chmod 700 /home/vagrant/.ssh
curl -sSL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub | sudo tee /home/vagrant/.ssh/authorized_keys
sudo chmod 600 /home/vagrant/.ssh/authorized_keys
sudo chown -R vagrant:vagrant /home/vagrant/.ssh
# 4. Apagar la MV
sudo poweroff



MV 4: Ubuntu
S’executa: terminal com a root o sudo dins de la MV Ubuntu.
El procés és idèntic al de Debian, ja que tots dos fan servir apt i el servei ssh.
Codi utilitzat
# 1. Actualitzar repositoris e instal·lar OpenSSH Server
sudo apt update && sudo apt install -y openssh-server curl
sudo systemctl enable --now ssh
# 2. Crear l'usuari vagrant i donar permisos sudo sense contrasenya
sudo useradd -m -s /bin/bash vagrant
echo "vagrant:vagrant" | sudo chpasswd
echo "vagrant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/vagrant
# 3. Injectar la clau pública de Vagrant amb permisos correctes
sudo mkdir -p /home/vagrant/.ssh
sudo chmod 700 /home/vagrant/.ssh
curl -sSL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub | sudo tee /home/vagrant/.ssh/authorized_keys
sudo chmod 600 /home/vagrant/.ssh/authorized_keys
sudo chown -R vagrant:vagrant /home/vagrant/.ssh
# 4. Apagar la MV
sudo poweroff

MV 5: Rocky Linux
S’executa: terminal com a root o sudo dins de la MV Rocky Linux.
Rocky Linux fa servir dnf com a gestor de paquets i el servei s’anomena sshd. La resta del procés és igual que a Debian i Ubuntu.
Codi utilitzat
# 1. Actualitzar repositoris e instal·lar OpenSSH Server i Curl
sudo dnf check-update
sudo dnf install -y openssh-server curl
sudo systemctl enable --now sshd
# 2. Crear l'usuari vagrant i donar permisos sudo sense contrasenya
sudo useradd -m -s /bin/bash vagrant
echo "vagrant:vagrant" | sudo chpasswd
echo "vagrant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/vagrant
# 3. Injectar la clau pública de Vagrant amb permisos correctes
sudo mkdir -p /home/vagrant/.ssh
sudo chmod 700 /home/vagrant/.ssh
curl -sSL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub | sudo tee /home/vagrant/.ssh/authorized_keys
sudo chmod 600 /home/vagrant/.ssh/authorized_keys
sudo chown -R vagrant:vagrant /home/vagrant/.ssh
# 4. Apagar la màquina virtual
sudo poweroff


Problemes trobats i solucions
Durant el procés van aparèixer diversos errors. Aquí expliquem què va passar i com es van resoldre.
1. Bloqueig d’instal·lació d’OpenSSH per política WSUS
Windows 10 i Windows Server 2019Problema: en instal·lar OpenSSH.Server amb Add-WindowsCapability, Windows buscava el paquet al servidor d’actualitzacions local (WSUS) i fallava amb un error de política de directiva de grup.
Solució (PowerShell Admin):
# 1. Desactivar temporalment l'ús del servidor WSUS al registre
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
# 2. Reiniciar el servei de Windows Update per aplicar el canvi
Get-Service wuauserv | Restart-Service
# 3. Reintentar la instal·lació d'OpenSSH directament des dels servidors de Microsoft
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
2. Error en descarregar la clau SSH (DirectoryNotFoundException)
Windows 10 i Windows Server 2019Problema: en executar Invoke-WebRequest per desar la clau pública a C:\Users\vagrant\.ssh\authorized_keys, PowerShell tornava l’error Could not find a part of the path o creava una carpeta mal formada anomenada vagrant.ssh a C:\Users, perquè el directori pare no existia.
Solució (PowerShell Admin):
# Crear l'estructura completa de directoris forçadament abans de descarregar
New-Item -Path "C:\Users\vagrant" -ItemType Directory -Force
New-Item -Path "C:\Users\vagrant\.ssh" -ItemType Directory -Force
# Descarregar la clau pública sense utilitzar l'interfície d'Internet Explorer
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub" -OutFile "C:\Users\vagrant\.ssh\authorized_keys" -UseBasicParsing
# Verificar que el fitxer existeix i té la mida correcta (~409 bytes)
Get-Item C:\Users\vagrant\.ssh\authorized_keys
3. Permisos incorrectes al directori .ssh i a authorized_keys
Debian, Ubuntu i Rocky LinuxProblema: si el directori .ssh o el fitxer authorized_keys tenen permisos massa oberts (com 777 o 755), el dimoni SSH rebutja la connexió per seguretat i no deixa entrar sense contrasenya.
Solució (terminal Linux dins de la MV):
# Directori .ssh amb permisos estrictes d'usuari (700)
sudo chmod 700 /home/vagrant/.ssh
# authorized_keys amb lectura/escriptura només per al propietari (600)
sudo chmod 600 /home/vagrant/.ssh/authorized_keys
# Garantir que l'usuari i grup vagrant en siguin els propietaris
sudo chown -R vagrant:vagrant /home/vagrant/.ssh
4. Demanda de contrasenya en executar ordres d’administració
Debian, Ubuntu i Rocky LinuxProblema: quan Vagrant es connecta per SSH a una MV Linux, necessita executar ordres amb privilegis elevats (sudo). Si el sistema demana contrasenya, la línia d’ordres es bloqueja o la connexió falla.
Solució (terminal Linux dins de la MV):
# Regla a sudoers perquè vagrant no hagi d'introduir contrasenya
echo "vagrant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/vagrant
# Permisos del fitxer de sudoers per seguretat
sudo chmod 0440 /etc/sudoers.d/vagrant
5. El WiFi no funcionava
Totes les MVsProblema: les MVs no tenien accés a Internet. Per això fallaven apt update, dnf install, Add-WindowsCapability i la descàrrega de la clau pública de Vagrant.
Causa: l’adaptador de xarxa de la MV a VirtualBox no estava ben configurat i la MV no sortia a Internet a través de la connexió WiFi de l’ordinador amfitrió.
Solució: amb la MV apagada, a VirtualBox vam anar a Configuració → Xarxa, vam activar l’adaptador i el vam posar en mode NAT (o Adaptador pont escollint la targeta WiFi de l’ordinador). Després vam reiniciar la MV i vam comprovar que hi havia connexió.
# Linux: comprovar que hi ha Internet
ping -c 4 8.8.8.8
ping -c 4 google.com
# Windows (PowerShell): comprovar que hi ha Internet
Test-Connection 8.8.8.8 -Count 4
6. La IP no estava ben configurada
Totes les MVsProblema: la MV no tenia una adreça IP vàlida (o en tenia una fora de la xarxa correcta), així que no hi havia connexió i no es podia entrar per SSH.
Causa: la interfície de xarxa no rebia adreça per DHCP, o tenia una IP estàtica incorrecta.
Solució: vam comprovar la IP amb les ordres següents i vam configurar la interfície perquè obtingués l’adreça automàticament per DHCP. Després de reiniciar la xarxa, la MV ja tenia una IP vàlida i es podia connectar per SSH.
# Linux: veure la IP i demanar-ne una per DHCP
ip a
sudo systemctl restart NetworkManager # Rocky Linux
sudo systemctl restart networking # Debian
sudo netplan apply # Ubuntu (si usa netplan)
# Windows (PowerShell): veure la IP i renovar-la
ipconfig
ipconfig /release
ipconfig /renew
Conclusió
Les cinc MVs queden preparades per a Vagrant: tenen un servei SSH actiu, l’usuari vagrant i la clau pública injectada. Les errades més comunes van ser de xarxa (WiFi i IP), de permisos a Linux i de rutes a Windows. Resoldre-les ens ha ajudat a entendre millor com treballa Vagrant amb SSH.
