Servus alle miteinand,
Wer kennt das folgende Szenario nicht? Mit viel neuer Software, welche gerade (manuell) getestet werden muss, dachte ich mir, ich baue mal schnell eine Vagrant Box auf Basis von Debian 9, um Tests unter einem Stretch durchzuführen.
Falsch gedacht !!
Anstelle eines libvirt install auf der Kommandozeile und eines tar-Befehls zum Packen des eigentlichen Box-Images,
musste ich mit einer kleinen Widrigkeiten im Bereich der Netzwerkkonfiguration kämpfen.
Aber eins nach dem anderen.
Fangen wir mit dem Image für die libvirt Maschine an:
virt-install --name=linuxconfig-vm \ --vcpus=1 \ --memory=1024 \ --cdrom=/tmp/debian-9.4.0-amd64-netinst.iso \ --disk size=10 \ --os-variant=debian9
Dies war noch der unproblematische Teil der Installation.
Danach erfolgt in der VM das nachziehen von Berechtigungen für den Vagrant User.
sudo visudo -f /etc/sudoers.d/vagrant vagrant ALL=(ALL) NOPASSWD:ALL
Hinzufügen des Vagrant public Keys:
mkdir -p /home/vagrant/.ssh chmod 0700 /home/vagrant/.ssh wget --no-check-certificate \ \/keys/vagrant.pub \ -O /home/vagrant/.ssh/authorized_keys chmod 0600 /home/vagrant/.ssh/authorized_keys chown -R vagrant /home/vagrant/.ssh
Wenn man nicht so Wach war, um rechtzeitig im Installationsmenü schon SSH mitzuinstallieren, muss es per Hand nachgeholt werden:
sudo apt-getinstall -y openssh-server sudo nano /etc/ssh/sshd_config AuthorizedKeysFile %h/.ssh/authorized_keys
Danach kann das System so präpariert werden, wie man es benötigt.
Das Image der VM noch verkleinern und in box.img umbenennen:
qemu-img convert -c -O qcow2 debian9.qcow2 small.qcow2 mv small.qcow2 box.img
Alles handlich verpacken und dem Vagrant Box Store hinzufügen:
tar czvf debian9.box ./metadata.json ./Vagrantfile ./box.img vagrant box add --name debian9 debian9.box
Hier allerdings fingen meine Probleme an.
Nach dem Packen der Box, dem Hinzufügen zum Boxstore und einem Erwartungsvollen „vagrant up“ erhielt ich „==> default: Waiting for domain to get an IP address…“, was zu keinem Erfolg führte und ich wahrscheinlich jetzt immer noch warten würde.
Nach einem erneuten Hochfahren der VM mit dem virt-manager und nachschauen, ob das network device fehl konfiguriert ist, konnte ich keinen Fehler feststellen.
# The primary network interface allow-hotplug eth0 iface eth0 inet dhcp
Gefühlte Jahrtausende von Recherche später, wurde mir folgendes klar:
Debian hat in neuen Versionen eine Änderung der Device-Namen vorgenommen.
Vagrant wartet vergeblich auf „eth0“, weil ein network device Namens „ens21“ existiert, wenn ich die VM mit „vagrant up“ starte.
Also zurück in die VM und das folgende Kommandos abgesetzt:
sudo nano /etc/default/grub
Im Editor dann folgende Anpassungen vornehmen:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Damit das auch greift, muss abschließend die Konfiguration für den Grub-Bootmanager neu erstellt werden:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Reboot. „vagrant up“ und Tada … Spannung Trommelwirbel => Tusch ! Die VM erhält eine IP und startet wie man es schon von Anfang an erwartete.
Ich hoffe ich konnte damit den ein oder anderen vor dem Verlust von allzuviel Lebenszeit bewahren.
Ein sonniges WE wünscht
0 Kommentare