Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What is going on with this article?
@toby_net

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

More than 5 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 のソースも同様でキモい


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

20
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
toby_net

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
20
Help us understand the problem. What is going on with this article?