「仮想環境とローカルでファイルを共有(mounting)ができない」
久しぶりすぎます。。
人材サービスを始めるために、半年ぶりにRailsでウェブサイトを立ち上げるために、ローカル環境の構築で相当苦労したので書きます。
問題は、
「仮想環境とローカルでファイルを共有(mounting)ができない」
以前まではFTPツール(Cyberduck)を使っていたが、容量を使うため作業効率はものすごく悪くなるため、どうしてもローカルと同期したかった。
Ⅰ. 基本的なアプローチを踏み、課題を解決。
①dotinstallでvagrantの仕組みを再理解
以前プログラマーの方が、「自分で理解していない物は使うな」とご指摘くださり、その原則に従い徹底的に基本を理解した。
②問題を言語化し、Webで検索
言語化!!これ重要です。初心者は問題と逸脱したことを調べている場合があります。(全ての物事において自分の課題です。「脳で整理してから物事を始める」、ということです。)
こちらのサイトにお世話になりました。
Ⅱ. 解決法
VagrantとVirtualboxのバージョンをウェブの記事で紹介されてあるバージョンに再インストールし直し、ゲスト側のカーネルをアップデート(上のサイトの手順3)
- バージョン
OS: Windows10
Vagrant: 1.9.1
Virtualbox: 5.1.14
ゲスト側OS: CentOS 7.3
Ⅲ. 今回学んだこと
1.Vagrantの仕組み
・Vagrantは仮想環境の構築とホストシステムとの共有を簡単にするツール。仮想環境はVirtualboxやEC2などがある。
・重要なのはVagrantはあくまで箱、空間でしかないこと。ここにBox(OS)をインストールし、そのOSが仮想環境を決定する。
・「ホスト」はローカル、「ゲスト」は仮想環境内のことを指す。vbguestというプラグインがゲストとホストのVirtualboxのバージョンを同じにする。なぜこの問題が起きてしまうかというと、Boxが作られたVirtualboxとホストのバージョンが違うため。(Boxのtutorialとかにどのvirtualboxを使ったのかとかかいてあるのかな?)
・コマンド:vagrant box add <bento/centos7.3>でboxを追加。vagrant init <boxを指定>で環境構築、vagrantfileが作成される。vagrant upで仮想環境内接続。
・ホスト:/<folder with vagrantfile> ゲスト: /home/vagrantでファイルが共有される。
2. メソッド
・バージョンの違いはどうにもならないことだから、ネットで成功したバージョンを探してそれに従う。
・問題を言語化してから取り組む!