18
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

開発環境全般Advent Calendar 2015

Day 17

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

Last updated at Posted at 2015-12-16

問題

  • 元々の要件: 気軽に立ち上げて、設定を共有できる 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 のソースも同様でキモい


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

18
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?