如何从libvirt / kvm实例创建自定义无业游民的盒子?


16

Internet上有许多资源可以根据VirtualBox实例创建自定义的无用信息框。但是我想知道一种直接从kvm / libvirt实例创建自定义无业游民的盒子的直接方法。请不要建议使用vagrant-mutate或将VirtualBox转换为其他提供程序的任何方法。

Answers:


21

花时间与无业游民后,我得到了自定义框的解决方案。首先在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密钥从无业游民的用户

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。现在,进入运行来宾VM的主机并转到, /var/lib/libvirt/images/然后选择进行更改的原始映像并复制到某个地方/test

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

创建两个文件metadata.jsonVagrantfile/test do中输入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 box add --name custom custom_box.box

转到要初始化vagrant的任何目录,然后运行以下将创建Vagrant文​​件的命令

vagrant init custom

开始配置无业游民的虚拟机

vagrant up --provider=libvirt 

请享用 !!!


2
我想指出的是,在花了所有时间焦油使他们的演出后,无业游民花了等量的时间再次解压缩焦油。:fubar:
ThorSummoner

2
要跳过来回tar / untar,您可以直接将Vagrantfile,meta.json和box.img拖放到~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

UPvote为相对复杂的过程提供了如此清晰的解释。谢谢
Avi Mehenwal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.