質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

3590閲覧

Vagrantの共有フォルダ機能が使えない

aiueo078

総合スコア11

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2019/06/16 18:47

環境

ホストOS:MacOS Mojave
ゲストOS:Ubuntu18.04
Vagrant 2.2.4
VirtualBox 6.0.8 r130520 (Qt5.6.3)

発生している問題

ホストOSのほうでダウンロードしたファイルをゲストOSのほうで使いたいのですが、うまくフォルダが共有されません。
https://wemo.tech/1590
上記のサイトを参考にさせていただきました。(ゲストはCentOSですが)
そのサイト内の動作確認のところの

[vagrant@localhost ~]$ touch /vagrant/data/test

は試して、正常にホストOSのフォルダに反映されていました。
しかし、
・testはdataフォルダ内に生成されていない(ホストOSにだけ反映される)←これが謎!
・ホストOS上に新しくファイルを作ってもゲストOS上には反映されない
・ゲストOS上で新しくファイルを作ってもホストOS上には反映されない
です。なにが原因なのでしょうか、なにか分かる方、よろしくお願いします。

該当のソースコード

以下が、Vagrantfileの中身です。

Ruby

1 2# -*- mode: ruby -*- 3# vi: set ft=ruby : 4 5# All Vagrant configuration is done below. The "2" in Vagrant.configure 6# configures the configuration version (we support older styles for 7# backwards compatibility). Please don't change it unless you know what 8# you're doing. 9Vagrant.configure("2") do |config| 10 # The most common configuration options are documented and commented below. 11 # For a complete reference, please see the online documentation at 12 # https://docs.vagrantup.com. 13 14 # Every Vagrant development environment requires a box. You can search for 15 # boxes at https://vagrantcloud.com/search. 16 config.vm.box = "bento/ubuntu-18.04" 17 18 # Disable automatic box update checking. If you disable this, then 19 # boxes will only be checked for updates when the user runs 20 # `vagrant box outdated`. This is not recommended. 21 # config.vm.box_check_update = false 22 23 # Create a forwarded port mapping which allows access to a specific port 24 # within the machine from a port on the host machine. In the example below, 25 # accessing "localhost:8080" will access port 80 on the guest machine. 26 # NOTE: This will enable public access to the opened port 27 # config.vm.network "forwarded_port", guest: 80, host: 8080 28 29 # Create a forwarded port mapping which allows access to a specific port 30 # within the machine from a port on the host machine and only allow access 31 # via 127.0.0.1 to disable public access 32 # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 33 34 # Create a private network, which allows host-only access to the machine 35 # using a specific IP. 36 config.vm.network "private_network", ip: "192.168.33.10" 37 38 # Create a public network, which generally matched to bridged network. 39 # Bridged networks make the machine appear as another physical device on 40 # your network. 41 # config.vm.network "public_network" 42 43 # Share an additional folder to the guest VM. The first argument is 44 # the path on the host to the actual folder. The second argument is 45 # the path on the guest to mount the folder. And the optional third 46 # argument is a set of non-required options. 47 config.vm.synced_folder "./data", "/vagrant/data" 48 49 # Provider-specific configuration so you can fine-tune various 50 # backing providers for Vagrant. These expose provider-specific options. 51 # Example for VirtualBox: 52 # 53 # config.vm.provider "virtualbox" do |vb| 54 # # Display the VirtualBox GUI when booting the machine 55 # vb.gui = true 56 # 57 # # Customize the amount of memory on the VM: 58 # vb.memory = "1024" 59 # end

試したこと

Macの再起動
vagrantの再起動

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。
VagrantはデフォルトでホストOSのVagrantfileのあるディレクトリと、ゲストOS側の /vagrant ディレクトリを同期するようになっています。

config.vm.synced_folder "./data", "/vagrant/data” と明示しなくても、dataフォルダがVagrantfileのあるディレクトリ直下なら、/vagrant/data に割当たるはずです。

一度この行をコメントアウトして、vagrant reloadしてからゲストOSの中に入って、/vagrant ディレクトリに移動して、ファイル作成などを試してみてはいかがでしょう。

vagrant init した直後の設定例だと、
config.vm.synced_folder "../data", "/vagrant_data”
だったかなと思います。(デフォルトの場所とは違うところに割り当て)

追記:ディレクトリの同期

そのままだと、起動時には Vagrantfileの直下を/vagrant に持ってきてくれますが、変更はされない(コピーとして持っていく)になってしまうので、synced_folderで、同期のオプション (type) を設定すると良いです。

いくつか方法があるのですが、Macなので一旦、

config.vm.synced_folder "./data", "/vagrant/data”, type: 'nfs'

としてみては如何でしょうか。 ほかにも、rsyncやvirtualboxという指定があります。

VirtualBoxなので、以下の記事のようにVirtualBoxの機能を使う方式が良いかもと思います。

https://qiita.com/reflet/items/98fd548a6ef341f685bb

すこし補足

type: 'nfs'だと、Mac側で、 Vagarntfileのあるディレクトリの直下にある data ディレクトリを、Mac側からエクスポート可能(他のサーバなどに利用可能な状態にできる)設定が追加されます。

うまくいくと、Mac側の /etc/exports というファイルに、以下のような設定が追加されます。

"/Users/xxxx/Vagrantfileのあるフォルダ/data" 192.168.xx.xx -alldirs -mapall=501:20

こちらを利用して、起動した仮想マシン側が、Mac 側のディレクトリを自分の /vagrant/data に割り当てるという形になります。

type:virtualboxは、VirtualBoxのGestAdditionが必要なので、Qiitaの参考に挙げた記事の通り、プラグインを入れた上で対応になります。

公式情報

https://www.vagrantup.com/docs/synced-folders/

投稿2019/06/16 21:16

編集2019/06/17 04:12
suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueo078

2019/06/17 02:01

ご丁寧な回答ありがとうございます。 言われた通りやったのですが、どうもうまくいきません。Vagrantfileの中身は変更し、 vagrant reload vagrant up vagrant ssh という手順でもう一度ゲストOSに入り直しました。 しかしゲストOSの/vagrant(ログインしてまず最初にいるところ)でファイルを作っても、ホストOSのvagrantfileがあるディレクトリ直下のdataディレクトリに反映されません...
suama

2019/06/17 03:49

こんにちは!お試しありがとうございました。 書き込みができないということですね、失礼しました。 そのままだと、起動時には Vagrantfileの直下を/vagrant にもってきてくれますが、変更はされない(コピーとして持っていく)になってしまうので、sync のオプションを設定すると良いです。 いくつか方法があるのですが、Macなので一旦、 config.vm.synced_folder "./data", "/vagrant/data”, type: 'nfs' としてみていただけますか?(回答にも追記します) https://www.vagrantup.com/docs/synced-folders/nfs.html
aiueo078

2019/06/17 05:22

無事フォルダ共有されました! ...というか見るところを間違っていて、/home/vagrant/dataをずっと見ていたんですが、/vagrant/dataでした。なので元からおかしくなかったんだと思います。しかしsuamaさんのおかげで色々な原因を探れたのがあって解決できたことは間違いないので、ベストアンサーにさせて頂きます。ありがとうございました。
suama

2019/06/17 05:25

よかったです!(ちょっと気になってました!) わたしもよく忘れるので見直しできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問