如何從 libvirt/kvm 實例創建自定義流浪盒?
Internet 上有許多資源可以從 VirtualBox 實例創建自定義 vagrant box。但我想知道直接從 kvm/libvirt 實例創建自定義 vagrant 框的直接方法。請不要建議 vagrant-mutate 或任何將 VirtualBox 轉換為其他提供商的方法。
在與 vagrant 共度時光後,我得到了自定義盒子的解決方案。首先在 libvirt/qvm 中安裝任何 Linux 作業系統並登錄到它進行自定義並
vagrant
使用密碼創建使用者vagrant
adduser vagrant
vagrant
使用者應該能夠在沒有密碼提示的情況下執行 sudo 命令sudo visudo -f /etc/sudoers.d/vagrant
並粘貼
vagrant ALL=(ALL) NOPASSWD:ALL
做任何你想做的事情來定制你的流浪盒並安裝
openssh-server
如果以前沒有安裝sudo apt-get install -y openssh-server
將 ssh 密鑰從 vagrant 使用者
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
vi /etc/ssh/sshd_config
並更改PubKeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys PermitEmptyPasswords no PasswordAuthentication no
使用重啟 ssh 服務
sudo service ssh restart
為工具安裝額外的開發包以正確編譯和安裝
sudo apt-get install -y gcc build-essential linux-headers-server
做任何你想要的改變並關閉虛擬機。現在,來到執行來賓VM的主機並轉到
/var/lib/libvirt/images/
並選擇您在其中進行更改並複製到某處的原始圖像/test
cp /var/lib/libvirt/images/test.img /test
創建兩個 文件
metadata.json
並Vagrantfile
進入/test``metadata.json
{ "provider" : "libvirt", "format" : "qcow2", "virtual_size" : 40 }
並且在
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
使用將 test.img 轉換為 qcow2 格式
sudo qemu-img convert -f raw -O qcow2 test.img ubuntu.qcow2
將 ubuntu.qcow2 重命名為 box.img
mv ubuntu.qcow2 box.img
**注意:**目前,libvirt-vagrant 僅支持 qcow2 格式。所以,不要改變格式只是重命名為box.img。因為它預設使用名稱 box.img 進行輸入。
創建框
tar cvzf custom_box.box ./metadata.json ./Vagrantfile ./box.img
將框添加到 vagrant
vagrant box add --name custom custom_box.box
轉到您要初始化 vagrant 的任何目錄並執行下面將創建 Vagrant 文件的命令
vagrant init custom
開始配置 vagrant VM
vagrant up --provider=libvirt
請享用 !!!