【vagrant】nfsを使ってホスト、ゲストOSでファイルを共有する

vagrantの標準のsynced_folderではvagrant upしたときでないとホスト側の変更がゲスト側に反映されないためnfsで共有することにした

こちら参考ページ

vagrant fileに以下記述してvagrant upしてみる

config.vm.synced_folder “/Users/ユーザー名/Develop/vagrant_source/sync_folder”, “/vagrant”, type: “nfs”

やってみたが上手くいかない・・・

——————————–

Vagrant.configure(“2”) do |config|

end

——————————–

の記述が2つあったのでその中にある記述が上手く設定されなかったみたい

この部分をコメントアウトして再度実行したら

$ vagrant up

Bringing machine ‘default’ up with ‘virtualbox’ provider…

==> default: Checking if box ‘centos/7’ is up to date…

==> default: A newer version of the box ‘centos/7’ is available! You currently

==> default: have version ‘1708.01’. The latest is version ‘1801.02’. Run

==> default: `vagrant box update` to update.

==> default: Clearing any previously set forwarded ports…

==> default: Clearing any previously set network interfaces…

==> default: Preparing network interfaces based on configuration…

default: Adapter 1: nat

default: Adapter 2: hostonly

==> default: Forwarding ports…

default: 22 (guest) => 2222 (host) (adapter 1)

==> default: Booting VM…

==> default: Waiting for machine to boot. This may take a few minutes…

default: SSH address: 127.0.0.1:2222

default: SSH username: vagrant

default: SSH auth method: private key

==> default: Machine booted and ready!

==> default: Checking for guest additions in VM…

default: No guest additions were detected on the base box for this VM! Guest

default: additions are required for forwarded ports, shared folders, host only

default: networking, and more. If SSH fails on this machine, please install

default: the guest additions and repackage the box to continue.

default:

default: This is not an error message; everything may continue to work properly,

default: in which case you may ignore this message.

==> default: Configuring and enabling network interfaces…

default: SSH address: 127.0.0.1:2222

default: SSH username: vagrant

default: SSH auth method: private key

==> default: Exporting NFS shared folders…

==> default: Preparing to edit /etc/exports. Administrator privileges will be required…

Password:

Sorry, try again.

Password:

Sorry, try again.

Password:

==> default: Mounting NFS shared folders…

==> default: Machine already provisioned. Run `vagrant provision` or use the `–provision`

==> default: flag to force provisioning. Provisioners marked to run always will still run.

nfsが起動した記述もちゃんとありますね

ゲストOSに接続して確認

$ ssh 192.168.33.10

Last login: Fri Feb 16 15:36:50 2018 from 10.0.2.2

[vagrant@localhost ~]$ df -h

ファイルシス                                                          サイズ  使用  残り 使用% マウント位置

/dev/mapper/VolGroup00-LogVol00                                          38G  2.6G   35G    7% /

devtmpfs                                                                237M     0  237M    0% /dev

tmpfs                                                                   245M     0  245M    0% /dev/shm

tmpfs                                                                   245M  4.4M  240M    2% /run

tmpfs                                                                   245M     0  245M    0% /sys/fs/cgroup

/dev/sda2                                                              1014M   88M  927M    9% /boot

192.168.33.1:/Users/ユーザー名/Develop/vagrant_source/sync_folder   112G  104G  8.6G   93% /vagrant

tmpfs                                                                    49M     0   49M    0% /run/user/1000

[vagrant@localhost ~]$ cat /etc/exports

[vagrant@localhost ~]$

実際にファイルが共有されているか確認

ゲスト側

—————————————–

[vagrant@localhost ~]$ cd /vagrant/

[vagrant@localhost vagrant]$ ls

git_my_shared  git_my_shared のコピー  test  test3  test4

[vagrant@localhost vagrant]$ mkdir test2

[vagrant@localhost vagrant]$ ls

git_my_shared  git_my_shared のコピー  test  test2  test3  test4

[vagrant@localhost vagrant]$

—————————————–

ホスト側

$ ls

git_my_shared test3

git_my_shared のコピー test4

test

$ ls

git_my_shared test2

git_my_shared のコピー test3

test test4

test2というフォルダがホスト側にも共有されているのが確認できました

vagrant upするたびにパスワード入力するのがめんどうなのでこちらのページを参考に設定

ホスト側で

$ sudo ./install_vagrant_sudoers.sh

Password:

/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/vagrant_sudoers.tDwryace: parsed OK

Adding vagrant commands to sudoers

これでvagrant reloadをしてパスワードを聞かれなければおk

–2018/7/25追記–

新しいMac(macOS High Sierra10.13.6)を買って試したところ上記のやり方だとうまくいかなかったので別の方法も追記します

こちらのページ参照

ホスト側のターミナルで以下実行する

$ sudo visudo

すると編集画面となるので以下を一番下に追記

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

これでおk

シェアする

  • このエントリーをはてなブックマークに追加

フォローする