====== 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"