teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

全体的に改修

2019/01/30 09:36

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -1,34 +1,54 @@
1
- 盛大な勘違いがあるでツッコミも含めて解説していきます。
1
+ Vagrant機能や思想に関して解説していきます。
2
2
 
3
3
  まず、Vagrantには仮想マシンに関する機能は「一切ありません」
4
4
  VirtualBoxやVMwareといった仮想マシンはコマンドや機能等がバラバラで統一性がないので、
5
5
  Vagrantが「じゃあ俺がラッパーコマンドになる」という思想で機能を提供しているだけの話です。
6
6
 
7
+ プラグインさえあればどんな仮装マシンでも動きますし、仮想マシンじゃないものも動かせます。
7
- > Vagrantfile内「config.vm.synced_folder "../data", "/vagrant_data"」がどよう機能しかがわかりません…
8
+ 例えばAWSプラグインもあり、AWSアカウント情報を使い`vagraant up`と共クラウド上のAWSのEC2を借り立ち上げ事も可能です。
9
+ (もちろん後日AWSのEC2インスタンスの代金を請求されます)
8
10
 
9
- `vagrant up`の一番最初でVirtualBoxの仮想マシンを生成した際に、
10
- デフォルト状態ではVirtualBoxの共有フォルダ機能を間借りしてディレクトリの共有を行います。
11
- 間借りということを忘れないようにしましょう。
11
+ ---
12
12
 
13
+ もし貴方がVirtualBoxの操作に長けたエキスパートであれば、
13
- > しかし実際は、ホストのVagrantfileがあるフォルダとゲストのvagrantフォルダが同期しており記述どおりじゃても動く理由がわません
14
+ 「Vagrantてものは不要だぜ!」という考えになるもしれません
14
15
 
15
- Vagrantにはプロビジョニングという側面もあります。
16
- その思想上、Vagrnat立ち上げたマシン内でApacheをインストルしてMySQLをインストルし…みたな事はしません
16
+ その場合も、Vagrantの一番の強みはサの構成情報がVagrantfileに全てあることです
17
- 初回の`vagrant up`と同時同梱のプロビジョニングが走り、仮想マシンが使えるようになったタイミングで既ApacheやMySQLがインストール済みになっているべとい思想です
17
+ 環境構築必要手順はしかりVagrantfileましょう。
18
18
 
19
+ [Infrastructure as Code](https://ja.wikipedia.org/wiki/Infrastructure_as_Code)とか呼ばれている奴です。
20
+ もう環境構築手順書とかいうすぐ古くなって使えなくなるドキュメントを作る必要はありません。
19
- まぁこれはVagrantfileと同じディレクトリになんかシェルスクリプトファイルな
21
+ もし新しくメンバーがジョインしたとしてもVagrantfileでも見け」と言えばそ日の内に環境構築が終わ開発に参加出来ます。
20
- AnsibleのPlaybook等が入っていてそれを実行するだけのシンプルな作りになっているはずですが…
21
22
 
22
- そんなわけで、vagrant_dataはVagrantファイルに記述しなくても勝手に共有される事になる裏機能みたいなもんです。
23
+ ---
23
24
 
25
+ Vagrantの理想は`vagrant up`を実行し、
26
+ コーヒーを淹れて戻って来たときには全ての環境構築が完了していることです。
27
+
28
+ 決して`vagrant up`を行った後に`vagrant ssh`で仮想マシン内へアクセスし、
29
+ `yum install PackageName`を打ち込む事ではありません。
30
+ そういったものはVagrantのプロビジョニングでやってください。
31
+
32
+ 仮想マシンの良さはすぐに潰して新しく立ち上げる事が可能な砂場にあります。
33
+ 気軽に`vagrant destroy`からの`vagrant up`で復旧できるよう、
34
+ 常にプロビジョニング用のファイルを最新状態に保つよう努力しましょう。
35
+
36
+ 以上、ここまでがVagrantの思想・基本になります。
37
+ 以下は質問内容に関して抜粋し、一問一答形式でコメントしました。
38
+
24
39
  ---
25
40
 
26
- VirtualBox等の完全な仮想マシンを作る際、
27
- HDDに仮想HDDとかい箱を作っ使う必要ります。
41
+ > Vagrantfileの「config.vm.synced_folder "../data", "/vagrant_data"」がどのよに機能しいるかわかりません…
28
- なのでファイルの共有がし辛いわけですね。
29
42
 
43
+ VagrantはデフォルトではあVirtualBoxのプラグインを持っており、
30
- VirtualBoxではそために共有フォルダという仕組みが有
44
+ VirtualBoxの共有フォルダ機能を間借してディレクトリの共有を行います。
31
- Vagrantfileに記述することでラッピングして使う事が出来るわけですが、
32
- 別にVirtualBoxの共有フォルダ機能を使わなくても、rsync等を利用したり、sambaやNFSを利用してファイル共有を行う設定も存在します。
45
+ なので`vagrant up`で立ち上げた仮想マシンをVirtualBoxの設定画面で確認すれば、「共有フォルダ機能の箇所にVagrantfileで指定したディレクトリの共有設定が反映されているはずです。
33
46
 
47
+ > しかし実際は、ホストのVagrantfileがあるフォルダとゲストのvagrantフォルダが同期しており記述どおりじゃなくても動く理由がわかりません。
48
+
49
+ Vagrantにはプロビジョニングという側面もあります。
34
- VirtualBoxの共有ダ機能に不満が出てきたお試し下さ
50
+ しかしVirtualBoxのような仮想マシンは専用のHDDァイをマウントする思想で作れてる為、
51
+ ホストマシンとゲストマシンのファイルの受け渡しは出来ません。
52
+
53
+ どうやってプロビジョニング用のファイルを持ち込めばいいんだ…
54
+ このためにvagrant_dataに関しては設定しなくても勝手に共有される仕組みになっています。