Edited at

vagrant において、明示的に VirtualBox の機能(vboxsf)を使いフォルダを同期するには、`config.vm.synced_folder ".", "/vagrant", type: "virtualbox"` のように Vagrantfile に設定するとよい

More than 3 years have passed since last update.


問題



  • 元々の要件: 気軽に立ち上げて、設定を共有できる debian の仮想マシンがほしい



    • debian での出力ファイル、ログ等を、ホストの Windows で受け取りたい




  • vagrant にて debian/jessie64 の box 利用する


    • 当box は vboxsf ではなく rsync での同期が標準である


      • Windows 環境では rsync が簡単に導入できない



        • choco install rsync で導入できる rsync (cwRsync free版?)は cygwin 版であり、追加の設定が必要。

        • 一緒に ssh.exe が導入されてしまうのも気持ち悪い



      • × rsync での同期は 、「ホスト → ゲスト方向のみ」

      • × smb での同期は、管理者権限が必要なので避けたい


      • vboxsf で同期できればいい




    • vagrant up すれば即環境が用意できるという要件を満たせない




解決策

Vagrantfile にて、明示的に synced_folder に対し type: "virtualbox" 指定するとよい。


具体的な手順と確認方法



  1. vboxsf を使えるようにするため、以下のように vagrant-vbguest プラグインを導入する。

    ホストOSにて:

    # インストール
    
    > vagrant plugin install vagrant-vbguest

    # 確認
    > vagrant plugin list
    :
    vagrant-vbguest (0.11.0)
    :

    ※ 次回の vagrant up 時に自動で vboxsf が使えるようになるはず。




  2. Vagrantfile にて、明示的に synced_folder に対し type: "virtualbox" 指定をする。

    例: ゲストの /vagrant を同期させる場合(デフォルト設定の上書き)

    diff --git a/Vagrantfile b/Vagrantfile
    
    index xxxxxx..xxxxxx 100644
    --- a/Vagrantfile
    +++ b/Vagrantfile
    @@ -38,6 +38,7 @@ Vagrant.configure(2) do |config|
    # the path on the guest to mount the folder. And the optional third
    # argument is a set of non-required options.
    # config.vm.synced_folder "../data", "/vagrant_data"
    + config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

    # Provider-specific configuration so you can fine-tune various
    # backing providers for Vagrant. These expose provider-specific options.


  3. 仮想マシンを起動するために、 vagrant up ( 又は vagrant reload) する



  4. ゲストOS から同期用ディレクトリにファイルを作成し、同期できているか確認する

    ゲストOSにて:

    $ mount | grep vagrant
    
    none on /vagrant type vboxsf (rw,nodev,relatime)
    $ echo "foo\nbar" >> /vagrant/test.txt

    ホストOSにて:

    > cat test.txt
    
    foo
    bar


以上。



(以下メモ書き)

関連ソース


標準で vagrant init して生成される Vagrantfile が、単純な文字列リテラルに、ダブルクオーテーション(")を利用していて、キモい

vagrant のソースも同様でキモい


メモ書きを前にして、「正しい日本語」はなんら権力を持たない。