Il existe de nombreuses ressources sur Internet pour créer une boîte Vagrant personnalisée à partir d'une instance VirtualBox. Mais je veux connaître une méthode directe pour créer une boîte Vagrant personnalisée directement à partir d'une instance KVM/LIBVIRT. S'il vous plaît ne suggérez pas la mutation de Vagrant ou de tout convertir VirtualBox en un autre fournisseur.
après avoir passé du temps avec Vagrant, j'ai eu la solution pour une boîte personnalisée. Tout d'abord, installez tout système d'exploitation Linux dans LIBVIRT/QVM et connectez-vous à la personnalisation et à la création vagrant
utilisateur avec mot de passe vagrant
adduser vagrant
vagrant
_ L'utilisateur doit pouvoir exécuter des commandes sudo sans une invite de mot de passe
Sudo visudo -f /etc/sudoers.d/vagrant
et coller
vagrant ALL=(ALL) NOPASSWD:ALL
faites ce que vous voulez personnaliser votre boîte vagabonde et installez openssh-server
Si non installé précédemment
Sudo apt-get install -y openssh-server
mettre la clé SSH de Vagrant User
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
open sudo vi /etc/ssh/sshd_config
et changer
PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no
redémarrez le service SSH en utilisant
Sudo service ssh restart
installez des packages de développement supplémentaires pour les outils pour compiler et installer correctement
Sudo apt-get install -y gcc build-essential linux-headers-server
faites n'importe quel changement que vous voulez et fermez le VM. Maintenant, venez à la machine hôte sur laquelle votre invité VM est en cours d'exécution et goto le /var/lib/libvirt/images/
et choisissez une image brute dans laquelle vous avez fait le changement et la copie quelque part par exemple /test
cp /var/lib/libvirt/images/test.img /test
créer deux fichier metadata.json
et Vagrantfile
dans /test
Entrée dans metadata.json
{
"provider" : "libvirt",
"format" : "qcow2",
"virtual_size" : 40
}
et dans 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
convertir Test.Img au format Qcow2 en utilisant
Sudo qemu-img convert -f raw -O qcow2 test.img ubuntu.qcow2
renommer ubuntu.qcow2 à la boîte.Img
mv ubuntu.qcow2 box.img
Remarque : Actuellement, Libvirt-Vagrant supporte uniquement le format Qcow2. Donc, ne changez pas le format que vous venez de renommer à la case.Img. Parce qu'il faut en entrée avec NAME BOX.IMG par défaut.
Créer une boîte
tar cvzf custom_box.box ./metadata.json ./Vagrantfile ./box.img
ajouter une boîte à Vagrant
vagrant box add --name custom custom_box.box
accédez à n'importe quel répertoire dans lequel vous souhaitez initialiser le Vagrant et exécuter la commande ci-dessous qui créera un fichier Vagrant
vagrant init custom
commencez à configurer VM Vagrant
vagrant up --provider=libvirt
prendre plaisir !!!