Vagrantではvagrant-sshfsとういプラグインを使用することで、ホストOSとゲストOSのファイル同期にsshfsを使用することができます。
インストール
vagrant-sshfsのインストールは、vagrant plugin install
コマンドを使用します
$ vagrant plugin install vagrant-sshfs
Installing the 'vagrant-sshfs' plugin. This can take a few minutes...
Fetching: win32-process-0.8.3.gem (100%)
Fetching: vagrant-sshfs-1.3.1.gem (100%)
Installed the plugin 'vagrant-sshfs (1.3.1)'!
Vagrantfileの編集
フォルダの同期にvagrant-sshfsを使いたい場合、以下のような形でsynced_folderの定義にtype: "sshfs"
を追加します.
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.synced_folder ".", "/vagrant_data", type: "virtualbox", type:"sshfs"end
上記の例では、ホストOSのカレントディレクトリ.
を、ゲストOSの/vagrant_data
にマウントして同期をとります。
vagrantの起動
設定後vagrant up
を行い、以下のようにSSHFS clientのインストールと起動が行われることを確認します
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'centos/7' is up to date...
...
==> default: Installing SSHFS client...
==> default: Mounting SSHFS shared folder...
==> default: Mounting folder via SSHFS: /Users/xxx/vm/centos7 => /vagrant_data
==> default: Checking Mount..
==> default: Folder Successfully Mounted!
起動後に、同期フォルダにゲストOS/ホストOS側からそれぞれファイルを作成し、ファイル動機が取れていることを確認してみてください。
エラー:"slave SSHFS mount failed"が出た時
vagrant upすると、以下のように"slave SSHFS mount failed"が出ることがあります。
これは、マウントされるゲストOS側のディレクトリが空でないときに発生するエラーです。
$ vagrant up
...
Mounting SSHFS shared folder via slave SSHFS mount failed. Please
look at the below STDERR output from the processes that were run.
SSH command:
Warning: Permanently added '[127.0.0.1]:2222' (ECDSA) to the list of known hosts.
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
SFTP command:
このエラーが出たt場合は、ゲストOS側の該当ディレクトリをあらかじめ空にしておくか、別のディレクトリにマウントするよう場所を変更してください。
空にできない特別な事情がある場合は、上記の他に"noempty"オプションを使う方法もあります。
こちらもおススメ