Vagrant und Libvirt

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Vagrant ist ein beliebtes Tool für das Management virtueller Maschinen, das von Haus aus auf VirtualBox setzt. Es lässt sich aber auch für Libvirt mit KVM einsetzen.

Vagrant ist vor allem in Entwicklerkreisen beliebt, weil es mit wenig Aufwand virtuelle Maschinen startet. Deshalb setzt es von Haus aus auf eine Virtualisierungslösung, die auf Desktops gerne verwendet wird: VirtualBox. Allerdings ist Vagrant so modular aufgebaut, dass es auch mit anderen VM-Providern arbeitet, zum Beispiel mit Hyper-V, VMware, Docker oder Libvirt und KVM. Die Verwendung von Libvirt setzt das Vagrant-Plugin voraus, das Sie so installieren, wenn es fehlt (siehe "vagrant plugin list"):

vagrant plugin install vagrant-libvirt

Boxes heißen die von Vagrant angebotenen Images, die lokal installiert werden und dann als Basis für neue VMs dienen. Eine neue Box installieren Sie so:

$ vagrant box add ubuntu/trusty64
==> box: Loading metadata for box 'ubuntu/trusty64'
    box: URL: https://atlas.hashicorp.com/ubuntu/trusty64
==> box: Adding box 'ubuntu/trusty64' (v20160323.1.0) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20160323.1.0/providers/virtualbox.box
==> box: Successfully added box 'ubuntu/trusty64' (v20160323.1.0) for 'virtualbox'!

In der letzten Zeile ist auch gleich das Problem zu erkennen: Diese Box wurde für den Betrieb mit VirtualBox konfiguriert. Mit einem Vagrant-Plugin namens "mutate" können Sie die Images von einem VM-Provider zum anderen konvertieren. Das Plugin installieren Sie folgendermaßen:

vagrant plugin install vagrant-mutate

Nun konvertieren Sie das vorher heruntergeladene Image ins Libvirt-Format:

vagrant mutate ubuntu/trusty64 libvirt

Eine Liste der installieren Boxen zeigt, dass es nun von Ubuntu Trusty zwei Images gibt:

$ vagrant box list
ubuntu/trusty64 (libvirt, 20160323.1.0)
ubuntu/trusty64 (virtualbox, 20160323.1.0)

Um eine der Versionen zu löschen, müssen Sie beim Remove-Befehl noch den Provider angeben:

vagrant box remove --provider virtualbox ubuntu/trusty64

Ein neues "Vagrantfile", das die Konfiguration einer VM bestimmt, legen Sie so an:

vagrant init ubuntu/trusty64 libvirt

Nun können Sie die VM mit "vagrant up" starten:

$ vagrant up
Bringing machine 'default' up with 'libvirt' provider...
==> default: Starting domain.
==> default: Waiting for domain to get an IP address...
==> default: Waiting for SSH to become available...
==> default: Creating shared folders metadata...
==> default: Exporting NFS shared folders...
==> default: Preparing to edit /etc/exports. Administrator privileges will be required...
nfsd running
==> default: Mounting NFS shared folders...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

Mit "vagrant ssh" loggen Sie sich in der neuen VM ein, die auch bei "virsh list" auftauchen sollte. Funktioniert das nicht wie gewünscht, können Sie versuchen, den Default-VM-Provider über eine Umgebungsvariable zu setzen:

VAGRANT_DEFAULT_PROVIDER=libvirt vagrant up

Für mehr Unterstützung bei der Fehlersuche können Sie auch die Umgebungsvariable "VAGRANT_LOG=debug" setzen. Sie stoppen die VM wieder mit "vagrant destroy". 

Shared Folders zwischen VM und Host, die bei VirtualBox automatisch funktionieren, werden bei der Libvirt-Integration durch das Plugin etwas umständlicher gelöst: entweder mit rsync, NFS oder mit dem 9P-Dateisystem (siehe ADMIN-Tipp " Verzeichnis zwischen VM und Host teilen ").

08.04.2016
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023