====== 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:
- ''box.img'' : la imatge del disc dur a guardar. Sol estar en formats com qcow2 per a libvirt
- ''metadata.json'' : dades de la VM a crear. Sol tenir una estructura tipus:{
"provider": "libvirt",
"format": "qcow2",
"virtual_size": 10 // mida del disc en GB
}
- ''Vagrantfile'' : un Vagrantfile de mostra per a l'usuari.
Referències:
- Recomanacions oficials per a [[https://developer.hashicorp.com/vagrant/docs/boxes/base|crear una imatge base per a Vagrant]]
- [[https://developer.hashicorp.com/vagrant/vagrant-cloud/boxes/create|Creació de la Vagrant Box]]
\\
===== 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):
{
"provider": "libvirt",
"format": "qcow2",
"virtual_size": 40
}
Afegir el ''Vagrantfile'', per ex:
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:
- metadata.json
- Vagrantfile
- 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"**
- Afegir nom i descripció (p.ex. pfsense)
- Afegir versió (p.ex. 2.9.0)
- Afegir provider (p.ex. libvirt)
- Afegir arquitectura (p.ex. amd64)
- Carregar l'arxiu .box
- Clicar "RELEASE NOW"