vagrantのshare_folderが使えない

このエントリーをはてなブックマークに追加

vagrant Up and Running

を読んでると、初めてのconfigにこんな設定をしてくださいって書いてあります。

Vagrant::Config.run do |config| 
  config.vm.box = "precise64"
  config.vm.share_folder "v-root", "/vagrant", "."
  config.vm.provision "shell" do |s|
    s.path = "script.sh"
  end 
end

これをそのまま設定してvagrant upすると下のように怒られます。

There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The following settings shouldn't exist: share_folder

誤入力したのかと思いましたがダブルチェックしても確かに合っています。「vagrant share_folder」で調べるといくつかそれっぽいエントリを発見。まず、本家のドキュメントがトップにヒットしますがとりあえずタイトルが「synced folders」でおしいんですよね。私が知りたいのは「share_folder」であって「sync folder」ではないのです。続いて下記stackoverflowにてビンゴな質問発見。

config.vm.share_folder setting not found

まさしく同じ症状。fgrehmさんの答えによるとvagrant 1.1以降は「share_folder」じゃなくて「synced_folder」ですよ、と。なるほど、それで本家の「Synced Folders」のページがトップにヒットするんですね。どこかにshare_folderはdeprecatedですよ、みたいなこと書いてないのでしょうか。。。ついでに下の質問もチェック。

Vagrant shared and synced folders

要約すると。下の設定にしたのになんで/vagrantがshare folderになってるの?

Vagrant::Config.run do |config|

  config.vm.define :foo do |cfg|
    cfg.vm.box     = 'foo'
    cfg.vm.host_name = "foo.localdomain.local"
    cfg.vm.network :hostonly, "192.168.123.10"
  end

  Vagrant.configure("2") do |cfg|
    cfg.vm.customize [ "modifyvm", :id , "--name", "foo" , "--memory", "2048", "--cpus", "1"]
    cfg.vm.synced_folder "/tmp/", "/tmp/src/"
  end

end

というもの。回答を要約すると、デフォルトでプロジェクトディレクトリ(Vagrantfileがあるディレクトリ)は共有ディレクトリとして組み込まれるようです。ドキュメントにもしっかり明記されています。ちなみにこの挙動をやめさせる為には以下をVagrantfileに書いておけばOK。

cfg.vm.synced_folder ".", "/vagrant", disabled: true

/tmp/がなんでマウントされなかったかについては特にリアクションがなかったのですが、デバッグモードでvagrant upやvagrant reloadを行えば詳細が表示されるようですね。この後に特にリプライも無いので、きっと権限の問題だったのでしょう。きっと。

vagrant up --debug
vagrant reload --debug

メモメモ。

ちなみに旧ドキュメントにはshare_folderの記述がもちろん残っています。このドキュメントをみると怪しげなアラートがページの上にあるのですが、何故か英語ではない。

A versão 1.1 do Vagrant foi lançada. A documentação que você está lendo é para o Vagrant 1.0.x. Leia mais sobre o Vagrant 1.1 no anúncio de lançamento. Acesse agora a documentação da versão 1.1.

とりあえずバージョンのことを何か言ってそうな雰囲気。Google翻訳さんにお願いしたらポルトガル語でそれっぽい英訳が出てきました。

Version 1.1 was released Vagrant. The documentation you are reading is for Vagrant 1.0.x. Read more about Vagrant 1.1 in the release announcement. Now access the documentation for version 1.1.

Google翻訳さまさま。「あなたが読んでいるドキュメントはVagrant 1.0.xのものだから、1.1以降のドキュメント読んでね」ってことですね。

すっきりしました。

Written on May 29, 2014
このエントリーをはてなブックマークに追加