LoginSignup
90
93

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-04-11

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

プラグインの確認をする

まずは共有フォルダを利用するのに必要なプラグインが、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"
90
93
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
90
93