Taula de continguts

Creació d'una Vagrant Box

Una Vagrant box és la imatge base a partir de la qual crearem les nostres VMs. Anem a veure com crear-ne una de pròpia.

Una Vagrant box sol ser un arxiu comprimit amb tar i gzip que consta de:

  1. box.img : la imatge del disc dur a guardar. Sol estar en formats com qcow2 per a libvirt
  2. metadata.json : dades de la VM a crear. Sol tenir una estructura tipus:
    metadata.json
    {
      "provider": "libvirt",
      "format": "qcow2",
      "virtual_size": 10 // mida del disc en GB
    }
  3. Vagrantfile : un Vagrantfile de mostra per a l'usuari.

Referències:

  1. Recomanacions oficials per a crear una imatge base per a Vagrant


Creació local del box

Crear la VM amb el virtualitzador desitjat (libvirt, VirtualBox, etc.)

Localitzar la imatge de disc desitjada. A libvirt sol estar a /var/lib/libvirt/images/.

Copiar la imatge en una carpeta de treball amb el nom box.img.

Consultar les dades de la imatge de disc (en particular ens interessa la mida del disc virtual size):

$ qemu-img info box.img
image: box.img
file format: qcow2
virtual size: 40 GiB (42949672960 bytes)
disk size: 1.52 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: box.img
    protocol type: file
    file length: 40 GiB (42956488704 bytes)
    disk size: 1.52 GiB

Crear arxiu metatada.json i aplicar la virtual size (la mida total del disc, no la ocupada):

metadata.json
{
  "provider": "libvirt",
  "format": "qcow2",
  "virtual_size": 40
}

Afegir el Vagrantfile, per ex:

Vagrantfile
Vagrant.configure("2") do |config|
  # appliance pfsense
  config.vm.define :pfsense , primary:true do |pfsense|
    pfsense.vm.provider "libvirt" do |vm|
      vm.memory = "2048"
    end
    # credencials
    pfsense.ssh.insert_key = false
    pfsense.ssh.username = "admin"
    pfsense.ssh.password = "vagrant"
    # deshabilitem carpeta compartida per defecte, no ens cal i no funciona
    pfsense.vm.synced_folder ".", "/vagrant", disabled: true
  end
end

Ara ja hauriem de tenir els 3 arxius:

  1. metadata.json
  2. Vagrantfile
  3. box.img

Comprimim els 3 arxius en el package box (trigarà una mica):

$ tar cvfz pfsense-2.9.0.box ./metadata.json ./Vagrantfile ./box.img

Amb l'arxiu box disponible, ja podem importar la imatge al sistema local:

$ vagrant box add pfsense-2.9.0.box --name pfsense-2.9.0


Càrrega a Vagrant Cloud

Creeu un compte a Vagrant Cloud. La manera més senzilla sol ser logant-se amb Github.

Anar a Vagrant Registry

Anar a Crear box registry i crear-ne un amb el teu nom d'usuari registrat.

Entrar dins el teu registry.

Anar a «+ Create box»

  1. Afegir nom i descripció (p.ex. pfsense)
  2. Afegir versió (p.ex. 2.9.0)
  3. Afegir provider (p.ex. libvirt)
  4. Afegir arquitectura (p.ex. amd64)
  5. Carregar l'arxiu .box
  6. Clicar «RELEASE NOW»