Hashicorp Vagrant
Siehe auch
GNOME Boxes
- Links:
Vagrant Boxes Repository: https://app.vagrantup.com/boxes/search?provider=libvirt
Installation auf Fedora
Mit libvirt/KVM als Hypervisor (Fedora 36+), aus dem Hashicorp Hersteller-Repo - liefert aber unter Umständen nicht immer die neueste Vagrant-Version für das laufende Fedora:
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
sudo dnf -y install vagrant libvirt-devel
sudo vagrant plugin install vagrant-libvirt
Alternativ aktuellste Vagrant-Version ohne Repo installieren:
sudo dnf -y remove vagrant*
sudo rm -f /etc/yum.repos.d/hashicorp.repo
sudo rm -rf ~/.vagrant.d /opt/vagrant /usr/share/vagrant
VAGRANT_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/vagrant | jq -r -M '.current_version')
sudo dnf -y install https://releases.hashicorp.com/vagrant/$VAGRANT_LATEST_VERSION/vagrant-$VAGRANT_LATEST_VERSION-1.x86_64.rpm
# libvirt
sudo dnf -y install gcc libvirt-daemon-kvm qemu-kvm libvirt-devel make rdesktop
sudo vagrant plugin install vagrant-libvirt
Egal ob aus dem Repo oder von der Homepage installiert - wer Windows-VMs mit Vagrant betreiben möchte, benötigt diese Plugins:
sudo dnf -y install rubygem-archive-tar-minitar
sudo vagrant plugin install winrm --debug
sudo vagrant plugin install winrm-elevated --debug
sudo vagrant plugin install winrm-fs --debug
Probleme mit den Plugins?
sudo vagrant plugin list
sudo vagrant plugin repair
# or
sudo vagrant plugin expunge --reinstall
Tipp
Immer noch Probleme mit den Plugins, z.B. mit WinRM? Kann auch ein Bug in Vagrant sein, was nicht so ungewöhnlich ist. Eventuell eine neuere Development-Version von https://github.com/hashicorp/vagrant/releases/ ausprobieren.
Umgang mit Hashicorp Vagrant
Best Practice: Pro Vagrant-Maschine ein Verzeichnis anlegen.
mkdir ~/vagrant
cd ~/vagrant
Beispiel: Ziel ist es, ein Arch-Linux zu deployen. Dafür ein Vagrantfile anlegen lassen:
mkdir generic-arch
cd generic-arch
vagrant init generic/arch
Optional das Vagrantfile bearbeiten, um die eigenen SSH-Keys zu deployen, Software zu installieren, Anpassungen vorzunehmen usw. Hier am Beispiel eines Rocky 8:
Vagrant.configure("2") do |config|
config.vm.box = "generic/rocky8"
config.vm.hostname = "walle.linuxfabrik.loc"
config.vm.network "private_network", ip: "192.0.2.226"
config.vm.provider "libvirt" do |v|
v.memory = 4096
v.cpus = 2
end
config.vm.provision "shell" do |s|
ssh_prv_key = ""
ssh_pub_key = ""
if File.file?("/home/user/.ssh/id_rsa")
ssh_prv_key = File.read("/home/user/.ssh/id_rsa")
ssh_pub_key = File.readlines("/home/user/.ssh/id_rsa.pub").first.strip
else
puts "No SSH key found. You will need to remedy this before pushing to the repository."
end
s.inline = <<-SHELL
if grep -sq "
echo "SSH keys already provisioned."
exit 0;
fi
echo "SSH key provisioning."
mkdir -p /home/vagrant/.ssh/
touch /home/vagrant/.ssh/authorized_keys
chmod 644 /home/vagrant/.ssh/id_rsa.pub
chmod 600 /home/vagrant/.ssh/id_rsa
chown -R vagrant:vagrant /home/vagrant
systemctl disable --now firewalld
dnf -y install nano
exit 0
SHELL
end
end
Tipp
Windows? VM braucht ewig zum Starten, und vagrant up
bricht irgendwann ab? Vagrantfile um folgende Zeilen ergänzen:
config.winrm.max_tries = 300 # default is 20 seconds
config.winrm.retry_delay = 2 #seconds. This is the defaul value and just here for documentation.
Mehr CPU und Memory vergeben:
config.vm.provider "libvirt" do |v|
v.memory = 4096
v.cpus = 2
end
Fixe IP-Adresse:
config.vm.network "private_network", ip: "192.0.2.226"
Maschine hochfahren:
sudo vagrant up
# after changing the Vagrantfile for an already-running Vagrant box:
sudo vagrant reload
Tipp
There was an error talking to Libvirt. The error message is shown below:
Call to virDomainCreateWithFlags failed: internal error: /usr/libexec/qemu-bridge-helper --use-vnet --br=virbr0 --fd=27: failed to communicate with bridge helper: Transport endpoint is not connected
stderr=failed to get mtu of bridge `virbr0': No such device
Vorher den „Virtual Machine Manager“ von Hand starten. Damit werden alle später für Vagrant notwendigen libvirt-Komponenten gestartet.
Stati aller hochgefahrenen Boxes einsehen:
sudo vagrant status
SSH-Konfiguration einsehen:
vagrant ssh-config
SSH-Zugriff mit Benutzer „vagrant“:
# using the vagrant tool:
vagrant ssh
# or doing the same with SSH (run `vagrant ssh-config` before to get the SSH details):
ssh -i ~/vagrant/$BOXNAME/.vagrant/machines/default/libvirt/private_key -o PasswordAuthentication=no -o PubkeyAcceptedKeyTypes=+ssh-rsa -p 22 vagrant@192.0.2.226
# or by using your ssh key deployed above (run `vagrant ssh-config` before to get the SSH details)::
ssh vagrant@192.0.2.226
RDP-Zugriff auf eine Windows-Box:
vagrant rdp
Troubleshooting
- SSH-Zugang zu alten Boxen (Debian 8, CentOS 6 etc.) scheitert mit „sign_and_send_pubkey: no mutual signature supported“
Ist kein Vagrant-Problem, sondern das moderner SSH-Clients - diese haben alte Encryption-Algorithmen abgeschaltet. In dem Fall den SSH-Befehl um
-o PubkeyAcceptedKeyTypes=+ssh-rsa
erweitern.- Can’t vagrant up or destroy „domain about to create is already taken“
virsh list –all
MACHINE=generic-rocky8_default virsh destroy $MACHINE virsh undefine $MACHINE
# are found in ~/.local/share/libvirt/images virsh vol-list default VOLUME=generic-arch_default.img virsh vol-delete –pool default $VOLUME
Built on 2024-11-18