Internet 上有许多资源可用于从 VirtualBox 实例创建自定义 vagrant box。但我想知道直接从 kvm/libvirt 实例创建自定义流浪盒的直接方法。请不要建议使用 vagrant-mutate 或任何将 VirtualBox 转换为其他提供商的工具。
答案1
在与 vagrant 一起度过一段时间后,我得到了自定义盒子的解决方案。首先在 libvirt/qvm 中安装任何 Linux 操作系统并登录它进行自定义并vagrant
使用密码创建用户vagrant
adduser vagrant
vagrant
用户应该能够在没有密码提示的情况下运行 sudo 命令
sudo visudo -f /etc/sudoers.d/vagrant
并粘贴
vagrant ALL=(ALL) NOPASSWD:ALL
做任何你想做的事情来定制你的 vagrant box 并安装(openssh-server
如果之前没有安装的话)
sudo apt-get install -y openssh-server
输入 vagrant 用户的 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
打开 sudovi /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
进行任何您想要的更改并关闭虚拟机。现在,来到运行来宾虚拟机的主机,然后转到 /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 box add --name custom custom_box.box
转到要初始化 vagrant 的任何目录并运行下面的命令来创建 Vagrant 文件
vagrant init custom
开始配置vagrant VM
vagrant up --provider=libvirt
享受 !!!