これまでにVagrantで立てた仮想環境上のファイルはAtomのRemote-ftpというパッケージを使って編集していたのですが、わざわざ接続しなくてもホストOSとゲストOSでフォルダを共有できる機能があることをお恥ずかしいことについ最近知ったのでまとめておきます。
Synced Folders
Vagrantが共有フォルダを実現する機能としてSynced Foldersというものがあります。
ホストOS(vagrantコマンドを叩く方)とゲストOS(仮想環境側)でファイルを共有するにあたって、デフォルトでは次のような環境が共有されています。
環境 | 共有フォルダ |
---|---|
ホストOS | Vagrantファイルを持つフォルダ |
ゲストOS | /vagrant以下のもの |
これによってホストOS側で作成したデータ、ゲストOS側で作成したデータが共に共有されることになります。
問題点
VagrantではゲストOS側からファイル・フォルダのパーミッションが変更できないようになっています
勝手に変更できたらセキュリティ上問題があるためこのような仕様となっているみたいです。
これはVagrantfileにおける
.
.
.
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder ".", "/vagrant"
.
.
.
の中にあるconfig.vm.synced_folder
の部分で
config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=755']
のようにdmodeでディレクトリ、fmodeでファイルのパーミッションを設定することで解消されます。
また、config.vm.synced_folder "ホストOS側のフォルダ", "ゲストOS側のフォルダ"
という仕組みになっているため、共有フォルダの指定する場所はここで変更することが可能です。