Help us understand the problem. What is going on with this article?

Vagrant 事始め 05 - 共有フォルダを設定する

More than 1 year has passed since last update.

ローカルマシンと仮想マシン間でファイルを便利にやりとりするために、共有フォルダの設定をします。

プラグインの確認をする

まずは共有フォルダを利用するのに必要なプラグインが、Vagrant に設定されているかを確認します。

> vagrant plugin list
vagrant-vbguest (0.15.1)

上記の vagrant-vbguest がない場合は、

> vagrant plugin install vagrant-vbguest

Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching: micromachine-2.0.0.gem (100%)
Fetching: vagrant-vbguest-0.15.1.gem (100%)
Installed the plugin 'vagrant-vbguest (0.15.1)'!

とコマンドを実行して、vagrant-vbguest をインストールします。インストールが完了したら、ふたたび vagrant plugin list を実行して、プラグインがあることを確認します。

そして、vbguest の状態を確認します。

> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
> vagrant vbguest --status
[default] GuestAdditions 5.2.6 running --- OK.

もし、vagrant vbguest --status コマンドの結果が

> vagrant vbguest --status
[default] No installation found.

と表示された場合、vbguest を利用するのに必要なパッケージをインストールします。

> vagrant vbguest

必要なパッケージのインストールが始まるので、しばし待ちます。

共有フォルダの設定

共有フォルダの設定は Vagrantfile に記述します。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.33.10"
  # ローカルマシンの Vagrantfile があるディレクトリ内の data フォルダと
  # 仮想マシン内の /vagrant_data ディレクトリを共有する
  # config.vm.synced_folder {host_path}, {guest_path}, option...
  config.vm.synced_folder "./data", "/vagrant_data"
end
オプション名 説明
create booleam true/false 初期値は false
true が指定されると、指定されたディレクトリが存在しない場合にディレクトリを作成する
disabled boolean true/false true を指定するとディレクトリの共有を停止する
group string - ディレクトリの所有グループを指定する
初期値は SSH ユーザーが所属するグループ
mount_options array - 初期値は空配列
mount コマンドのオプションを指定
owner string - 初期値は SSH ユーザー
ディレクトリの所有者を指定
type string 指定なし(virtualbox)/nfs/rsync/smb 初期値はvirtualbox
nfs などローカルマシンの OS によっては利用できない
id string - mount ポイントの名称を指定
デフォルトはディレクトリパスのスラッシュをアンダーバーに変換した名称

ファイルの読み書きが頻繁に発生しない、ファイルの変更の反映速度をシビアに求めない、巨大なサイズのファイルを共有する場合は、共有する type は virtualbox で指定するのが無難です。
(巨大なファイルを rsync で共有する場合、起動に時間がかかるようになります)

Windows で NFS の共有をする

Windows の場合、共有フォルダのタイプで NFS が指定できません……が、vagrant-winnfsd というプラグインを追加することで対応できます。

> vagrant plugin install vagrant-winnfsd
Installing the 'vagrant-winnfsd' plugin. This can take a few minutes...
Fetching: vagrant-winnfsd-1.4.0.gem (100%)
Installed the plugin 'vagrant-winnfsd (1.4.0)'!
Vagrantfile
  # 共有フォルダのタイプを nfs にする場合、owner と group は指定できないので注意
  # 次のようにエラーが出る
  # * Shared folders that have NFS enabled do not support owner/group
  config.vm.synced_folder "./data/mysql", "/var/lib/mysql", type: "nfs", nfs_export: true, nfs_version: 3

共有フォルダの設定例

virtualbox

Vagrantfile
  # Windows で絶対パスで指定するときバックスラッシュはエスケープする必要がある
  config.vm.synced_folder "C:\\Vagrant\\centos7\\public_html", "/vagrant_data", owner: "vagrant", group: "www", type: "virtualbox"

nfs

Vagrantfile
  config.vm.synced_folder "./data", "/vagrant_data", type: "nfs", nfs_export: true, nfs_version: 3

rsync

Vagrantfile
  config.vm.synced_folder "./data", "/vagrant_data", type: "rsync", rsync__exclude: [".git/"]

smb

Vagrantfile
  # Windows で利用する場合は PowerShell v3 以上が必須
  config.vm.synced_folder "./data", "/vagrant_data", type: "smb", smb_host: "192.168.0.15", smb_password: hogehoge, smb_username: "fugafuga"
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした