vagrant-libvirtを使うときのファイル共有はvagrant-sshfsを使うのがいい

nogajun
nogajun

_ VirtualBoxからvirt-manager(kvm)に移行したのでVagrantもvagrant-libvirtに移行しました。 以前、良いと言っていたvagrant-lxdですが、機能自体は軽くて素晴らしいのですがboxがなくて面倒になったので普通のVirtualBoxのVagrantに戻ってました…。

vagrant-libvirtは、libvirtが使える環境なら(使えない場合は上の「移行した」のリンク先を参考に環境を整えてから)、READMEに書いてある必要なパッケージをインストールして(おそらくほとんど入っているけど念のため)

 $ sudo apt-get build-dep vagrant ruby-libvirt
 $ sudo apt-get install qemu libvirt-daemon-system libvirt-clients ebtables dnsmasq-base
 $ sudo apt-get install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev
 $ sudo apt-get install libguestfs-tools

vagrantからプラグインをインストールすれば使えます。

 $ vagrant plugin install vagrant-libvirt

デフォルトでlibvirtを使うなら環境変数も設定しておきます。

 export VAGRANT_DEFAULT_PROVIDER=libvirt

これでlibvirtのboxで以下のようにすれば起動する…

 $ vagrant init debian/bullseye64
 $ vagrant up --provider libvirt

 Bringing machine 'default' up with 'libvirt' provider...
 It appears your machine doesn't support NFS, or there is not an
 adapter to enable NFS on this machine for Vagrant. Please verify
 that `nfsd` is installed on your machine, and try again. If you're
 on Windows, NFS isn't supported. If the problem persists, please
 contact Vagrant support.

起動しない。確かにnfsdは入れてないけどなぜ?と思って「vagrant-libvirt nfs」で検索すると、vagrant-libvirtのsynced folderにNFSを使っているからという理由が判明。

理由はわかったし解決方法も一緒に書いているけど(そもそもドキュメントにも書いてた)、NFSを入れるのもイヤだし9pも微妙だなと思ってたときに、vagrant-sshfsがあったことを思い出した。

ということで早速試してみた。プラグインをインストールして

 $ vagrant plugin install vagrant-sshfs

Vagrantfileに設定を追加。

 config.vm.synced_folder "./", "/vagrant", type: "sshfs"

これはなかなかいいんじゃないかな。