Marvin Pascale

[B.Log]

14 Aprile 2020

Alla scoperta di Vagrant

Vagrant

Cosa è Vagrant

Vagrant è un software opensource distribuito da Hashicorp che permette di creare macchine virtuali su molti hypervisor (kvm, VirtualBox, VMware, …).

Strizza l’occhio all’infrastructure as a code e permette di costruire, modificare e distruggere macchine virtuali con enorme facilità sfruttando le API dei vari hypervisor.

Terminologie utilizzate:

  • provider: definisce quali api utilizzare per comunicare con l’hypervisor;
  • box: definisce quale immagine di macchina virtuale utilizzare;
  • provisioning: definisce azioni e comandi da eseguire dopo l’avvio.

Queste informazioni vanno definite all’interno di un file di configurazione chiamato Vagrantfile.

Di seguito un piccolo esempio per avviare una macchina virtuale con Debian 10.

config.vm.box = "debian/buster64"
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 2
  end

Con il comando vagrant up si avvierà su VirtualBox una macchina virtuale con 2 virtual cpu e 1 GB di RAM.

E’ possibile collegarsi in ssh con il comando vagrant ssh.

Una volta terminate le attività si potrà decidere se spegnere la macchina virtuale (vagrant halt) o distruggerla in modo permanente (vagrant destroy).

Dopo un pò di pratica sarà non solo possibile creare macchine virtuali ma intere infrastrutture composte da istanze, reti e molto altro.

E’ possibile cercare box di partendo dal sito di Vagrant e una volta scaricato il Vagrantfile si potrà personalizzare l’ambiente.

Per gli esempi mi baserò sul provider VirtualBox.

Creiamo una cartella per il nostro nuovo progetto e scarichiamo il Vagrantfile.

vagrant init debian/buster64

All’interno dei file troveremo molti utili commenti che per ragioni di spazio non inserirò.

Ecco un esempio interessante di Vagrantfile.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "debian/buster64"
  config.vm.network "public_network"
  config.vm.provider "virtualbox" do |vb|
   vb.gui = false
   vb.cpus = 2
   vb.memory = "1024"
  end
  config.vm.provision "shell", inline: <<-SHELL
   apt-get update
   apt-get install -y apache2
  SHELL
end

Avviando il deploy verrà creata una macchina virtuale Debian Buster su VirtualBox con le seguente caratteristiche:

  • 2 virtual cpu;
  • 1 GB di RAM;
  • rete bridged sull’intercaccia selezionata in fase di avvio.

Appena avviata la macchina virtuale verranno aggiornati i repository e installato Apache http server.

Dimostrazione


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: