【Vagrant】共有フォルダを作成する方法

f:id:hira98:20190707125707p:plain

【追記 2019/07/08】

vagrant-vbguestプラグインを追加しないとファイルを共有できないことに後で気づいたので追記追記します。

【結論】

  • Vagrantファイルに1行記述して、コマンドを数回実行するだけ。

  • 上記作業にハマってしまい、半日も浪費してしまった。

【目次】

はじめに

前回Vagrantを使って仮想環境は構築しました。

しかしこれだけでは、PC環境と仮想環境でデータをやりとりできません。

なので今回は、PC環境と仮想環境でデータをやりとるするための共有フォルダの設定方法についてまとめます。

Vagrantに設定追加

共有フォルダを設定するには、Vagrantファイルにconfig.vm.synced_folderの設定を追加するだけです。

#Vagrantファイル
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  # 以下の設定を追加
  config.vm.synced_folder "./data", "/home/vagrant/share", create:"true"
end

config.vm.synced_folderにPC環境とローカル環境の共有フォルダのパスを指定します。

※末尾のcreate:"true"はフォルダが存在しない場合に自動で追加する設定です。

config.vm.synced_folder "[PC環境のフォルダパス]", "[仮想環境のフォルダパス]"

パスを指定する際には2つの注意点があります。

注意1

PC環境のフォルダパスはVagrantファイルが存在するパスからの指定になります。

よって、"./date"と指定した場合は、以下のようなファイル構成になります。

$ pwd
/Users/hoge/vagrant/centos7
$ tree
.
├── Vagrantfile
└── data

注意2

仮想環境のフォルダパスを指定を/home/vagrantにすると仮想環境の挙動がおかしくなります。

これは、Linuxでは/home/[ログインユーザー名]がログインユーザー専用の作業フォルダとして割り当てられており、 Vagrantファイルのデフォルトだとvagrantユーザーでログインします。

ログインユーザーの作業フォルダを共有フォルダとして設定しているため仮想環境の挙動がおかしくなります。

….因みに、私はこれにハマって半日以上溶かしました😭

仮想環境の再起動

Vagrantファイルは起動時にしか読み込まないため、仮想環境を再起動します。

# 仮想環境のシャットダウン
$ vagrant halt

# 仮想環境の起動
$ vagrant up

再起動時にPC環境の共有フォルダが未作成の場合は、次のようなエラーが出て起動に失敗します。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The host path of the shared folder is missing: ./data

Vagrantファイルのconfig.vm.synced_foldercreate:"true"を追加している場合は上記のエラーは出ません。

vagrant-vbguestプラグインの追加

#プラグインの追加
$ vagrant plugin install vagrant-vbguest

#仮想環境を再起動する。
$ vagrant reload

参考情報

【Vagrant】【Mac×CentOS7】ホストOSとゲストOS間での共有フォルダ設定 - Qiita

さいごに

分かっていれば数分で終わる作業なのに、解決できずにタイムリミットが来た時は絶望しました🤢🤮

…こんな状態の時は、頭がネガティブ感情に支配されてしまい、自分が何をしたのかも分からなくなります。

結果、「自分でかけたダイヤル式ロッカーのパスワードがわからなくなる」というアホみたいなことが起こるので皆さん気をつけましょう。