(Vagrant)ホストPCと仮想マシン(ゲストPC)で複数の共有ディレクトリを設定する

Vagrantで作った仮想マシンとホストPC側で、複数の共有ディレクトリを作り、動作確認をしていきます。

目的と環境

最終更新日:2021/4/20

Vagrantで仮想マシンを作成・管理して、仮想マシン上で例えばウェブアプリやウェブサイトの開発をすすめていく場合、開発自体はホスト側のディレクトリ上でIDE(統合開発環境)などを使って、コーディングやプログラミングをする方が便利です。
その場合、仮想マシン(ゲストPC)側とホストPC側で共有ディレクトリを作っておく事が必要になります。

ここでは、Vagrantで作った仮想マシンとホストPC側で、複数の共有ディレクトリのを設定して動作確認をしていきます。

◾️環境とバージョン情報です。
ホストPCのOS:macOS Big Sur(バージョン11.1)
Vagrant 2.2.7
VirtualBox 6.1.16

$ vagrant -v
Vagrant 2.2.7

$ VirtualBox -h
Oracle VM VirtualBox VM Selector v6.1.16

VagrantとVirtualBoxをインストールしてある事が前提で説明していきます。

ホストPC側と仮想マシン側で複数の共有ディレクトリを設定してみる

まずは仮想マシンを用意します。自分の環境にある適当なBoxから仮想マシンを作れば良いと思います。
ここではhashicorp/bionic64(Ubuntu18.04のBox)を使用します。

hashicorp/bionic64が自分のVagrant環境にない場合、まずはvagrant box addでBoxのダウンロードをします。
(*途中でどの仮想マシンを使うかを聞かれますが、ここでは"2"のvirtualboxを選択しました。)

$ vagrant box add hashicorp/bionic64
==> box: Loading metadata for box 'hashicorp/bionic64'
    box: URL: https://vagrantcloud.com/hashicorp/bionic64
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'hashicorp/bionic64' (v1.0.282) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/hashicorp/boxes/bionic64/versions/1.0.282/providers/virtualbox.box
    box: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> box: Successfully added box 'hashicorp/bionic64' (v1.0.282) for 'virtualbox'!
ダウンロードして、'hashicorp/bionic64'Boxの追加ができました!
一応確認してみます。
 $ vagrant box list
bento/centos-6.8                  (virtualbox, 2.3.4)
hashicorp/bionic64                (virtualbox, 1.0.282)
precise32                         (virtualbox, 0)
Boxの一覧に、hashicorp/bionic64があります。

それでは適当なディレクトリ上で、vagrant initを実行してVagrantfileを作成し、Vagrant環境を初期化します。

$ vagrant init hashicorp/bionic64
そして、作成されたVagrantfileを以下のように編集します(見やすくするために、コメント文はすべて削除しています)。
$ cat Vagrantfile 
Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"

  config.vm.synced_folder "data/", "/vagrant_data/data1"
  config.vm.synced_folder "data2/", "/vagrant_data/data2"
  config.vm.synced_folder "data3/", "/vagrant_data/data3"
end
共有ディレクトリの設定は、config.vm.synced_folderメソッドを使います。
config.vm.synced_folderの1つ目のパラメータがホストPC側のディレクトリで、2つ目のパラメータがゲスト(仮想マシン)側のディレクトリです。
共有ディレクトリは複数設定できるので、上のVagrantfileでは、試しに3つの共有ディレクトリを設定しています。

Vagrantfileを編集したら、ホストPC側の共有ディレクトリ3つを作り、そこに適当なファイルを作っておきます。
(*共有ディレクトリは、Vagrantfileファイルがあるディレクトリで作ります。)

$ mkdir data
$ mkdir data2
$ mkdir data3

$ echo from hostPC >> data/data.txt
$ echo from hostPC >> data2/data2.txt
$ echo from hostPC >> data3/data3.txt

$ cat data/data.txt 
from hostPC
$ cat data2/data2.txt 
from hostPC
$ cat data3/data3.txt 
from hostPC

Vagrantfileで設定したホストPC側の共有ディレクトリを事前に作っておかないと、仮想マシン起動時(vagrant upコマンド実行時)にエラーが出て起動ができません。

これで準備ができましたので、仮想マシンを作成して起動します。

 $ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'hashicorp/bionic64'...
〜
==> default: Mounting shared folders...
    default: /vagrant => /Users/hogeuser/MyVagrant/tmp
    default: /vagrant_data/data1 => /Users/hogeuser/MyVagrant/tmp/data
    default: /vagrant_data/data2 => /Users/hogeuser/MyVagrant/tmp/data2
    default: /vagrant_data/data3 => /Users/hogeuser/MyVagrant/tmp/data3
起動できました!
また、起動時のログメッセージに"Mounting shared folders"とあり、仮想マシンとホストPCでそれぞれどのディレクトリをマウントするかが表示されています。

それでは、仮想マシンにssh接続して共有ディレクトリの確認をしてみます。

$ vagrant ssh
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64)
〜
vagrant@vagrant:~$ ls /vagrant_data/
data1  data2  data3

vagrant@vagrant:~$ cat /vagrant_data/data1/data.txt 
from hostPC

vagrant@vagrant:~$ cat /vagrant_data/data2/data2.txt 
from hostPC

vagrant@vagrant:~$ cat /vagrant_data/data3/data3.txt 
from hostPC
Vagrantfileのconfig.vm.synced_folderメソッドで指定通りに、共有ディレクトリが3つできていて、ホストPC側で作ったファイルもあります!

以上簡単でしたが、Vagrantfileで共有ディレクトリの設定と動作確認をしてみました。