cara membuat kotak kustom gelandangan dari libvirt / kvm instance?

16

Ada banyak sumber daya di Internet untuk membuat kotak gelandangan khusus dari instance VirtualBox. Tapi saya ingin tahu metode langsung untuk membuat kotak gelandangan khusus langsung dari contoh kvm / libvirt. Tolong jangan menyarankan bermutasi-gelandangan atau yang mengkonversi VirtualBox ke penyedia lain.

pl_rock
sumber

Jawaban:

21

setelah menghabiskan waktu dengan gelandangan saya mendapat solusi untuk kotak kustom. pertama-tama instal OS Linux apa pun di libvirt / qvm dan login ke sana untuk penyesuaian dan buat vagrantpengguna dengan kata sandivagrant

adduser vagrant

vagrant pengguna harus dapat menjalankan perintah sudo tanpa prompt kata sandi

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

dan tempel

vagrant ALL=(ALL) NOPASSWD:ALL

lakukan apa pun yang ingin Anda sesuaikan kotak gelandangan Anda dan instal openssh-serverjika belum diinstal sebelumnya

sudo apt-get install -y openssh-server

menaruh kunci ssh dari pengguna gelandangan

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

buka sudo vi /etc/ssh/sshd_configdan ubah

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

restart layanan ssh menggunakan

 sudo service ssh restart

instal paket pengembangan tambahan untuk alat untuk dikompilasi dan diinstal dengan benar

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

lakukan perubahan yang Anda inginkan dan matikan VM. sekarang, datang ke mesin host di mana tamu VM berjalan dan kebagian /var/lib/libvirt/images/dan pilih gambar mentah di mana Anda melakukan perubahan dan menyalin di suatu tempat misalnya/test

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

buat dua file metadata.jsondan Vagrantfiledi /test lakukan entri dimetadata.json

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

dan masuk 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

konversi format test.img ke qcow2 menggunakan

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

ganti nama ubuntu.qcow2 ke box.img

mv ubuntu.qcow2 box.img 

Catatan: saat ini, libvirt-gelandangan hanya mendukung format qcow2. jadi, jangan ubah formatnya, ganti nama saja menjadi box.img. karena dibutuhkan input dengan nama box.img secara default.
buat kotak

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

tambahkan kotak ke gelandangan

vagrant box add --name custom custom_box.box

buka direktori mana pun di mana Anda ingin menginisialisasi vagrant dan jalankan perintah di bawah ini yang akan membuat file Vagrant

vagrant init custom

mulai mengkonfigurasi VM gelandangan

vagrant up --provider=libvirt 

Nikmati !!!

pl_rock
sumber
2
Saya ingin menunjukkan, bahwa setelah menghabiskan semua waktu itu untuk pertunjukan mereka, gelandangan menghabiskan waktu yang setara untuk mendekompresi tar itu lagi. : fubar:
ThorSummoner
2
untuk melewati tar / untar pulang-pergi, Anda mungkin dapat menjatuhkan Vagrantfile, meta.json, dan box.img Anda langsung ke~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner
UPvote untuk penjelasan yang sangat jelas untuk prosedur yang relatif rumit. Terima kasih
Avi Mehenwal