Diferencia entre revisiones de «Escenario Vagrant 1A: Instalación e primeiro proxecto»
| Línea 153: | Línea 153: | ||
Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na [https://cloud-images.ubuntu.com web de imaxes Ubuntu] de e configuramos o Vagrantfile: | Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na [https://cloud-images.ubuntu.com web de imaxes Ubuntu] de e configuramos o Vagrantfile: | ||
| − | [[File:Vagrant_2026_003.png | Fig. Repositorio imaxes cloud oficiais de Ubuntu.]] | + | [[File:Vagrant_2026_003.png |thumb|center| Fig. Repositorio imaxes cloud oficiais de Ubuntu.]] |
Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na web de https://cloud-images.ubuntu.com e configuramos o Vagrantfile: | Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na web de https://cloud-images.ubuntu.com e configuramos o Vagrantfile: | ||
Revisión del 17:45 13 ene 2026
Sumario
Descrición do escenario
Neste escenario práctico instalaremos Vagrant e crearemos un Vagrantfile básico que servirá para crear unha máquina virtual Ubuntu Server 22.04 con saída a Internet e cun cartafol compartido co equipo anfitrión.
Instalación
Aínda que nos repositorios de Ubuntu hai un paquete para instalar Vagrant, éste pode ser máis antigo ca versión oficial dispoñible na páxina oficial de descargas. Para instalar a versión máis recente imos á web oficial https://www.vagrantup.com/Downloads e descargamos o paquete axeitado. No caso de equipos Debian/Ubuntu hai dúas opcións a escoller:
- Seguir os pasos indicados para configurar o repositorio e instalar Vagrant.
- Descargar o binario e instalalo.
A mellor opción é a primeira (configurar o repositorio) xa que cando saia unha nova versión de vagrant e actualicemos o software do equipo anfitrión, Vagrant se actualizará á última versión oficial. A instalación directa dende o binario é sinxela, pero cando saian novas versión de Vagrant habería que repetir o proceso para instalalas.
Na web hai descargables e indicacións para instalación en contornas Windows, Mac e Linux. A instalación con repositorio oficial de Vagrant en contorna linux:
$ wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list $ sudo apt update && sudo apt install vagrant
En calquera momento podemos ver a versión co comando vagrant version:
vagrant version
Vagrantfile básico
Para o noso primeiro proxecto con Vagrant creamos un cartafol proyecto01 e unha vez dentro del executamos o comando vagrant init --minimal para crear un arquivo Vagrantfile básico co que comenzar:
~/Vagrant$ mkdir proyecto01 ~/Vagrant$ cd proyecto01 ~/Vagrant/proyecto01$ vagrant init --minimal
Aparecerá esta mensaxe:
"A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant."
Amosamos o ficheiro:
~/Vagrant/proyecto01$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "base"
end
Se no canto de vagrant init --minimal executásemos vagrant init obteríamos un Vagrantfile de exemplo moito máis completo, con moitas directivas e comentarios explicativos. O Vagrantfile mínimo está moi ben para explicar partindo de cero pero o outro é ideal para telo de referencia á hora de crear os noso proxectos.
Podemos especifiar que box vaise a usar como plantilla para crear a máquina virtual. Por exemplo, para o box bento/ubuntu-22.04:
:~/Vagrant/proyecto01$ nano Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-22.04"
end
As liñas en amarelo forman un bloque e dentro del irán directivas de configuración, que comezarán por config xa que foi a palabra indicada na primeira liña do bloque |config|. O noso Vagrantfile contén a directiva config.vm.box que serve para especifiar que box vaise a usar como plantilla para crear a máquina virtual. En https://app.vagrantup.com/boxes/search temos todo un catálogo de boxes á nosa disposición e procedemos a editar o ficheiro e indicar que queremos usar Ubuntu Jammy Jellyfish (22.04) de 64 bits:
Unha vez indicada a imaxe podemos validar o Vagrantfile e verificar que non ten erros con vagrant validate:
~/Vagrant/proyecto01$ vagrant validate Vagrantfile validated successfully.
Agora procedemos a executar vagrant up para lanzar o proxecto e crear a infraestrutura. Resáltanse en negriña algúns pasos importantes da operación:
:~/Vagrant/proyecto01$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'bento/ubuntu-22.04' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'bento/ubuntu-22.04'
default: URL: https://vagrantcloud.com/api/v2/vagrant/bento/ubuntu-22.04
==> default: Adding box 'bento/ubuntu-22.04' (v202510.26.0) for provider: virtualbox (amd64)
default: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-22.04/versions/202510.26.0/providers/virtualbox/amd64/vagrant.box
==> default: Successfully added box 'bento/ubuntu-22.04' (v202510.26.0) for 'virtualbox (amd64)'!
==> default: Importing base box 'bento/ubuntu-22.04'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'bento/ubuntu-22.04' version '202510.26.0' is up to date...
==> default: Setting the name of the VM: proyecto01_default_1768041128507_77202
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /home/joselv/vagrant/proyecto01 => /vagrant
Revisando a saída vemos que:
- Ó non ter unha copia local do box bento/ubuntu-22.04 procédese á súa descarga do repositorio de imaxes. Unha vez descargada xa non haberá que descargala de novo do repositorio, polo que acelerarase todo o proceso de creación dos proxectos que usen este box.
- Créase unha máquina virtual en Virtualbox de nome proyecto01_default_1768041128507_77202 cunha interfaz de rede en modo NAT, que permite ter saída a Internet (pero non ter acceso dende outros equipos nin dende o equipo anfitrión).
- Configúrase unha redirección de portos (forwarding ports) mapeando o porto 2222 do host co 22 do guest; para permitir deste xeito, o acceso por ssh dende o equipo anfitrión.
- Configúrase o acceso por ssh á máquina virtual usando chaves dixitais (sen contrasinal).
- Créase un cartafol compartido entre o host e o guest (/vagrant => /home/joselv/Vagrant/proyecto01). No guest o cartafol /vagrant correspóndese co cartafol do proxecto, no meu caso /home/manuel/Vagrant/proyecto01 do host.
O resultado é unha infraestrutura cunha máquina Ubuntu Server 22.04 cunha interfaz en modo NAT, un cartafol compartido co host, accesible por ssh dende o porto 2222 do host e correndo en modo headless (en segundo plano):
Podemos ver o estado das máquinas dun proxecto Vagrant con vagrant status
~/Vagrant/proyecto01$ vagrant status
Acceso e traballo na maquina local
Para acceder e traballar na máquina virtual podemos facer uso da conexión ssh usando vagrant ssh:
~/Vagrant/proyecto01$ vagrant ssh exit
Para parar a máquina virtual (guest) usamos vagrant halt
~/Vagrant/proyecto01$ vagrant halt
Para arrincar de novo a máquina facemos vagrant up:
~/Vagrant/proyecto01$ vagrant up
Para reiniciar a máquina usaremos vagrant reload.
~/Vagrant/proyecto01$ vagrant reload
Un punto a ter en conta é que con vagrant up e vagrant reload, volvese a ler o Vagrantfile aplicándose os cambios de configuración en caso de habelos (salvo o aprovisionamento que únicamente faise a primeira vez).
Se o día de mañá queremos destruír completamente a infraestrutura (borrando as máquinas e toda a configuración asociada a elas coma carpetas compartidas, redirección de portos, etc.) usaremos vagrant destroy:
~/Vagrant/proyecto01$ vagrant destroy
Por suposto:
- ó conservar o Vagrantfile poderemos reconstruír unha nova contorna igual á oxiginal en poucos segundos/minutos con vagrant up.
- se distribuimos este Vagrantfile calquera persoa poderá crear unha contorna coas mesmas características ca nosa.
Sobre as imaxes
Como xa se viu o noso Vagrantfile contén a directiva config.vm.box que serve para especifiar que box vaise a usar como plantilla para crear a máquina virtual e escollemos unha do catálogo.
As imaxes bento teñen boa reputación e funcionan ben, pero tamén é posible empregar imaxes oficiais de Ubuntu. Canonical, a empresa detrás de Ubuntu, colocou as imaxes cloud no seu repositorio https://cloud-images.ubuntu.com/. Básicamente son imaxes para correr en clouds públicos ou privadas empregando tecnoloxías coma Vagrant, Virtualbox, KVM, LXC/LXD, ...
Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na web de imaxes Ubuntu de e configuramos o Vagrantfile:
Se queremos empregar como box a imaxe oficial de Ubuntu 22.04 LTS escollemos un nome, gardamos a ligazón correspondente na web de https://cloud-images.ubuntu.com e configuramos o Vagrantfile:
~/Vagrant/proyecto01$ nano Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "jammy-server-cloudimg-amd64-vagrant"
config.vm.box_url = "https://cloud-images.ubuntu.com/jammy/20260106/jammy-server-cloudimg-amd64-vagrant.box"
end
~/Vagrant/proyecto01$ vagrant up
Usando o comando vagrant box poderemos xestionar as imaxes plantilla a usar con Vagrant:
~/Vagrant/proyecto01$ vagrant box
Por exemplo, vagrant box list_
~/Vagrant/proyecto01$ vagrant box list
bento/ubuntu-22.04 (virtualbox, 202510.26.0, (amd64)) jammy-server-cloudimg-amd64-vagrant (virtualbox, 0, (amd64))
Pódese comprobar que temos á nosa disposición no repositorio local do equipo a imaxe bento e máis a oficial de Ubuntu 22.04.