ローカルマシンと仮想マシン間でファイルを便利にやりとりするために、共有フォルダの設定をします。
プラグインの確認をする
まずは共有フォルダを利用するのに必要なプラグインが、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 に記述します。
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)'!
# 共有フォルダのタイプを 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
# Windows で絶対パスで指定するときバックスラッシュはエスケープする必要がある
config.vm.synced_folder "C:\\Vagrant\\centos7\\public_html", "/vagrant_data", owner: "vagrant", group: "www", type: "virtualbox"
nfs
config.vm.synced_folder "./data", "/vagrant_data", type: "nfs", nfs_export: true, nfs_version: 3
rsync
config.vm.synced_folder "./data", "/vagrant_data", type: "rsync", rsync__exclude: [".git/"]
smb
# Windows で利用する場合は PowerShell v3 以上が必須
config.vm.synced_folder "./data", "/vagrant_data", type: "smb", smb_host: "192.168.0.15", smb_password: hogehoge, smb_username: "fugafuga"