vagrantで管理する仮想環境側と、ホストOS側でファイル共有する場合、共有フォルダを使う方法があります。 ここでは、共有に必要なGuest Additionsのインストール方法や共有フォルダの設定方法についての説明します。

Guest Additions

vagrantでvirtaulboxの共有機能をつかって共有フォルダを作成する場合、Guest Addtionsが必要です。 インストールされていないboxの場合、Guest Additionsを手動でインストールする必要があります。 インストールには、vagrantのプラグインのvagrant-vbguestを使用します。

プラグインの確認

インストール済みのvagrantのプラグインを確認するコマンドは以下になります。 これでvagrant-vbguestがインストールされているか確認します。

vagrant plugin list

プラグインのvagrant-disksizeだけインストールされている場合、以下のようになります。

vagrant plugin list
vagrant-disksize (0.1.3, global)

vagrant-vbguestのインストール

vagrant-vbguestをインストールします。

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

Guest Additionsの存在確認

vagrantで起動した仮想マシンに、Guest Additionsがインストールされているかどうか、以下で確認できます。

vagrant vbguest --status
注意 仮想マシンが停止していると確認できません。

インストールされていない場合、以下のようになります。

vagrant vbguest --status
[default] No Virtualbox Guest Additions installation found.

インストールされている場合は、以下のようになります。

vagrant vbguest --status
[default] GuestAdditions 6.0.12 running --- OK.

Guest Additionsのインストール

Guest Additionsのインストールは、以下のコマンドで行います。

vagrant vbguest

実行すると以下のようになります。

vagrant vbguest
[default] No Virtualbox Guest Additions installation found.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
Resolving Dependencies
--> Running transaction check
---> Package centos-release.x86_64 0:7-6.1810.2.el7.centos will be updated
---> Package centos-release.x86_64 0:7-7.1908.0.el7.centos will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch         Version                     Repository  Size
================================================================================
Updating:
 centos-release       x86_64       7-7.1908.0.el7.centos       base        26 k

Transaction Summary
================================================================================
Upgrade  1 Package

・・・
・・・
================================================================================
 Package             Arch        Version                     Repository    Size
================================================================================
Installing:
 gcc                 x86_64      4.8.5-39.el7                base          16 M
Updating:
 binutils            x86_64      2.27-41.base.el7            base         5.9 M
 make                x86_64      1:3.82-24.el7               base         421 k
Installing for dependencies:
 cpp                 x86_64      4.8.5-39.el7                base         5.9 M
 glibc-devel         x86_64      2.17-292.el7                base         1.1 M
 glibc-headers       x86_64      2.17-292.el7                base         687 k
 kernel-headers      x86_64      3.10.0-1062.1.2.el7         updates      8.7 M
 libmpc              x86_64      1.0.1-3.el7                 base          51 k
 mpfr                x86_64      3.1.1-4.el7                 base         203 k
Updating for dependencies:
 glibc               x86_64      2.17-292.el7                base         3.6 M
 glibc-common        x86_64      2.17-292.el7                base          11 M
 libgcc              x86_64      4.8.5-39.el7                base         102 k
 libgomp             x86_64      4.8.5-39.el7                base         158 k

Transaction Summary
================================================================================
Install  1 Package  (+6 Dependent packages)
Upgrade  2 Packages (+4 Dependent packages)

Total download size: 55 M
Downloading packages:
No Presto metadata available for base
--------------------------------------------------------------------------------
Total                                               28 MB/s |  55 MB  00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : libgcc-4.8.5-39.el7.x86_64                                  1/19
  Updating   : glibc-common-2.17-292.el7.x86_64                            2/19
  Updating   : glibc-2.17-292.el7.x86_64                                   3/19
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
  Installing : mpfr-3.1.1-4.el7.x86_64                                     4/19
  Installing : libmpc-1.0.1-3.el7.x86_64                                   5/19
  Installing : cpp-4.8.5-39.el7.x86_64                                     6/19
  Updating   : binutils-2.27-41.base.el7.x86_64                            7/19
  Updating   : libgomp-4.8.5-39.el7.x86_64                                 8/19
  Installing : kernel-headers-3.10.0-1062.1.2.el7.x86_64                   9/19
  Installing : glibc-headers-2.17-292.el7.x86_64                          10/19
  Installing : glibc-devel-2.17-292.el7.x86_64                            11/19
  Installing : gcc-4.8.5-39.el7.x86_64                                    12/19
  Updating   : 1:make-3.82-24.el7.x86_64                                  13/19
  Cleanup    : 1:make-3.82-23.el7.x86_64                                  14/19
  Cleanup    : libgomp-4.8.5-36.el7_6.2.x86_64                            15/19
  Cleanup    : binutils-2.27-34.base.el7.x86_64                           16/19
  Cleanup    : glibc-common-2.17-260.el7_6.5.x86_64                       17/19
  Cleanup    : glibc-2.17-260.el7_6.5.x86_64                              18/19
  Cleanup    : libgcc-4.8.5-36.el7_6.2.x86_64                             19/19
  Verifying  : glibc-devel-2.17-292.el7.x86_64                             1/19
  Verifying  : glibc-2.17-292.el7.x86_64                                   2/19
  Verifying  : kernel-headers-3.10.0-1062.1.2.el7.x86_64                   3/19
  Verifying  : cpp-4.8.5-39.el7.x86_64                                     4/19
  Verifying  : mpfr-3.1.1-4.el7.x86_64                                     5/19
  Verifying  : binutils-2.27-41.base.el7.x86_64                            6/19
  Verifying  : libmpc-1.0.1-3.el7.x86_64                                   7/19
  Verifying  : libgomp-4.8.5-39.el7.x86_64                                 8/19
  Verifying  : 1:make-3.82-24.el7.x86_64                                   9/19
  Verifying  : gcc-4.8.5-39.el7.x86_64                                    10/19
  Verifying  : glibc-common-2.17-292.el7.x86_64                           11/19
  Verifying  : libgcc-4.8.5-39.el7.x86_64                                 12/19
  Verifying  : glibc-headers-2.17-292.el7.x86_64                          13/19
  Verifying  : libgomp-4.8.5-36.el7_6.2.x86_64                            14/19
  Verifying  : libgcc-4.8.5-36.el7_6.2.x86_64                             15/19
  Verifying  : 1:make-3.82-23.el7.x86_64                                  16/19
  Verifying  : glibc-2.17-260.el7_6.5.x86_64                              17/19
  Verifying  : binutils-2.27-34.base.el7.x86_64                           18/19
  Verifying  : glibc-common-2.17-260.el7_6.5.x86_64                       19/19

Installed:
  gcc.x86_64 0:4.8.5-39.el7

Dependency Installed:
  cpp.x86_64 0:4.8.5-39.el7
  glibc-devel.x86_64 0:2.17-292.el7
  glibc-headers.x86_64 0:2.17-292.el7
  kernel-headers.x86_64 0:3.10.0-1062.1.2.el7
  libmpc.x86_64 0:1.0.1-3.el7
  mpfr.x86_64 0:3.1.1-4.el7

Updated:
  binutils.x86_64 0:2.27-41.base.el7          make.x86_64 1:3.82-24.el7

Dependency Updated:
  glibc.x86_64 0:2.17-292.el7         glibc-common.x86_64 0:2.17-292.el7
  libgcc.x86_64 0:4.8.5-39.el7        libgomp.x86_64 0:4.8.5-39.el7

Complete!
Copy iso file C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Mounting Virtualbox Guest Additions ISO to: /mnt
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 6.0.12 - guest version is unknown
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.0.12 Guest Additions for Linux........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel
3.10.0-957.12.2.el7.x86_64.
Redirecting to /bin/systemctl start vboxadd.service
Redirecting to /bin/systemctl start vboxadd-service.service
Unmounting Virtualbox Guest Additions ISO from: /mnt

共有フォルダの設定

共有フォルダの共有方式は、rsyncや、virtaulboxの共有機能など、いくつかあります。

Virtualboxの共有機能

Virtualboxの共有機能を使用する場合、typeにvirtualboxを指定します。

config.vm.synced_folder ”[ホスト側パス]”, ”[仮想側パス]", type: "virtualbox"

Vagrant.configure("2") do |config|
  ...
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
  ...
end
ホスト側パスは、絶対パスと相対パスのどちらでも使用できます。 相対パスの場合、Vagrantfileがあるディレクトリが基準になります。 上記例の "."は、Vagrantfileがあるディレクトリになります。

仮想側のパスは、"/vagrant" が良く使われます。