libvirt / kvm örneğinden özel vagrant kutusu nasıl oluşturulur?


16

Internet üzerinde, VirtualBox örneğinden özel bir vagrant kutusu oluşturmak için birçok kaynak vardır. Ancak doğrudan kvm / libvirt örneğinden özel bir vagrant kutusu oluşturmak için doğrudan bir yöntem bilmek istiyorum. Lütfen vagrant-mutate veya VirtualBox'ı başka bir sağlayıcıya dönüştüren herhangi bir şey önermeyin.

Yanıtlar:


21

vagrant ile zaman geçirdikten sonra özel kutu için çözüm var. her şeyden önce libvirt / qvm içine herhangi bir Linux işletim sistemi kurun ve özelleştirme için oturum açın ve vagrantşifre ile kullanıcı oluşturunvagrant

adduser vagrant

vagrant kullanıcı sudo komutlarını şifre istemi olmadan çalıştırabilmelidir

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

ve yapıştır

vagrant ALL=(ALL) NOPASSWD:ALL

vagrant kutunuzu özelleştirmek istediğinizi yapın ve openssh-serverdaha önce kurulmadıysa yükleyin

sudo apt-get install -y openssh-server

sg anahtarını serseri kullanıcıdan koy

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

sudo'yu aç vi /etc/ssh/sshd_configve değiştir

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

kullanarak ssh servisini yeniden başlat

 sudo service ssh restart

Düzgün bir şekilde derlemek ve kurmak için araçlar için ek geliştirme paketleri yükleyin

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

istediğiniz değişiklikleri yapın ve VM'yi kapatın. şimdi, konuk VM'nin çalıştığı ana makineye gelin /var/lib/libvirt/images/ve değişikliği yaptığınız ham görüntüyü seçin ve örneğin bir yere kopyalayın/test

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

İki dosya oluşturmak metadata.jsonve Vagrantfilede /test do girişindemetadata.json

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

ve 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

kullanarak test.img dosyasını qcow2 formatına dönüştürün

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

ubuntu.qcow2'yi box.img olarak yeniden adlandırın

mv ubuntu.qcow2 box.img 

Not: şu anda libvirt-vagrant yalnızca qcow2 biçimini desteklemektedir. bu yüzden formatı sadece box.img olarak değiştirmeyin. çünkü varsayılan olarak box.img adıyla girdi alır.
kutu oluştur

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

vagrant'a kutu ekle

vagrant box add --name custom custom_box.box

vagrant'ı başlatmak istediğiniz herhangi bir dizine gidin ve Vagrant dosyası oluşturacak olan aşağıdaki komutu çalıştırın

vagrant init custom

vagrant VM'yi yapılandırmaya başla

vagrant up --provider=libvirt 

zevk almak !!!


2
Belirtmek istedim, o kadar zaman harcadıktan sonra, vagrant o katranı tekrar açmak için eşdeğer bir zaman harcıyor. : fubar:
ThorSummoner

2
gidiş-dönüş katranı / untar'ı atlamak için Vagrantfile, meta.json ve box.img dosyalarınızı doğrudan~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

UP Nispeten karmaşık bir prosedür için çok net bir açıklama için oy verin. Teşekkürler
Avi Mehenwal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.