come creare un box vagabondo personalizzato dall'istanza libvirt / kvm?


16

Esistono molte risorse su Internet per creare un box vagabondo personalizzato da un'istanza di VirtualBox. Ma voglio sapere un metodo diretto per creare un box vagabondo personalizzato direttamente da un'istanza di kvm / libvirt. Si prega di non suggerire vagrant-mutate o qualsiasi altro che converta VirtualBox in un altro provider.

Risposte:


21

dopo aver trascorso del tempo con Vagrant ho ottenuto la soluzione per la scatola personalizzata. prima di tutto installa qualsiasi sistema operativo Linux in libvirt / qvm e accedi ad esso per la personalizzazione e crea un vagrantutente con passwordvagrant

adduser vagrant

vagrant l'utente dovrebbe essere in grado di eseguire i comandi sudo senza una richiesta di password

sudo visudo -f /etc/sudoers.d/vagrant

e incolla

vagrant ALL=(ALL) NOPASSWD:ALL

fai quello che vuoi per personalizzare il tuo vagabondo e installalo openssh-serverse non installato in precedenza

sudo apt-get install -y openssh-server

metti la chiave ssh dall'utente vagabondo

mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate \
https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub \
-O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

apri sudo vi /etc/ssh/sshd_confige cambia

PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no

riavviare il servizio ssh utilizzando

 sudo service ssh restart

installare pacchetti di sviluppo aggiuntivi per gli strumenti da compilare e installare correttamente

sudo apt-get install -y gcc build-essential linux-headers-server

fare le modifiche desiderate e arrestare la macchina virtuale. ora, vieni sulla macchina host su cui è in esecuzione la VM guest e vai su /var/lib/libvirt/images/e scegli l'immagine non elaborata in cui hai apportato la modifica e copia da qualche parte per esempio/test

cp /var/lib/libvirt/images/test.img  /test 

creare due file di metadata.jsone Vagrantfilein /test entrata in dometadata.json

{
  "provider"     : "libvirt",
  "format"       : "qcow2",
  "virtual_size" : 40
}

e dentro Vagrantfile

Vagrant.configure("2") do |config|
         config.vm.provider :libvirt do |libvirt|
         libvirt.driver = "kvm"
         libvirt.host = 'localhost'
         libvirt.uri = 'qemu:///system'
         end
config.vm.define "new" do |custombox|
         custombox.vm.box = "custombox"       
         custombox.vm.provider :libvirt do |test|
         test.memory = 1024
         test.cpus = 1
         end
         end
end

converti test.img nel formato qcow2 usando

sudo qemu-img convert -f raw -O qcow2  test.img  ubuntu.qcow2

rinominare ubuntu.qcow2 in box.img

mv ubuntu.qcow2 box.img 

Nota: attualmente, libvirt-vagrant supporta solo il formato qcow2. quindi, non cambiare il formato, basta rinominarlo in box.img. perché richiede l'input con nome box.img per impostazione predefinita.
crea box

tar cvzf custom_box.box ./metadata.json ./Vagrantfile ./box.img 

aggiungi box a vagabondo

vagrant box add --name custom custom_box.box

andare in qualsiasi directory in cui si desidera inizializzare Vagrant ed eseguire il comando sotto che creerà il file Vagrant

vagrant init custom

iniziare a configurare la VM vagabonda

vagrant up --provider=libvirt 

godere !!!


2
Volevo sottolineare che, dopo aver trascorso tutto quel tempo a cercare i concerti, il vagabondo trascorre una quantità equivalente di tempo a decomprimere nuovamente quel catrame. : fubar:
ThorSummoner

2
per saltare il tar / untar di andata e ritorno, potresti essere in grado di rilasciare il tuo Vagrantfile, meta.json e box.img direttamente in~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

UPvote per una spiegazione così chiara per una procedura relativamente complicata. Grazie
Avi Mehenwal il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.