回答編集履歴
1
全体的に改修
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
|
-
|
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
|
-
|
14
|
+
「Vagrantなんてものは不要だぜ!」という考えになるかもしれません。
|
14
15
|
|
15
|
-
Vagrantにはプロビジョニングという側面もあります。
|
16
|
-
その
|
16
|
+
その場合でも、Vagrantの一番の強みはサーバーの構成情報がVagrantfileに全て書いてあることです。
|
17
|
-
|
17
|
+
環境構築に必要な手順はしっかりVagrantfileに書きましょう。
|
18
18
|
|
19
|
+
[Infrastructure as Code](https://ja.wikipedia.org/wiki/Infrastructure_as_Code)とか呼ばれている奴です。
|
20
|
+
もう環境構築手順書とかいうすぐ古くなって使えなくなるドキュメントを作る必要はありません。
|
19
|
-
|
21
|
+
もし新しくメンバーがジョインしたとしても、「Vagrantfileでも見とけ」と言えばその日の内に環境構築が終わり開発に参加出来ます。
|
20
|
-
AnsibleのPlaybook等が入っていてそれを実行するだけのシンプルな作りになっているはずですが…
|
21
22
|
|
22
|
-
|
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
|
-
|
41
|
+
> Vagrantfile内の「config.vm.synced_folder "../data", "/vagrant_data"」がどのように機能しているかがわかりません…
|
28
|
-
なのでファイルの共有がし辛いわけですね。
|
29
42
|
|
43
|
+
VagrantはデフォルトではあVirtualBoxのプラグインを持っており、
|
30
|
-
VirtualBox
|
44
|
+
VirtualBoxの共有フォルダ機能を間借りしてディレクトリの共有を行います。
|
31
|
-
Vagrantfileに記述することでラッピングして使う事が出来るわけですが、
|
32
|
-
|
45
|
+
なので`vagrant up`で立ち上げた仮想マシンをVirtualBoxの設定画面で確認すれば、「共有フォルダ」機能の箇所にVagrantfileで指定したディレクトリの共有設定が反映されているはずです。
|
33
46
|
|
47
|
+
> しかし実際は、ホストのVagrantfileがあるフォルダとゲストのvagrantフォルダが同期しており記述どおりじゃなくても動く理由がわかりません。
|
48
|
+
|
49
|
+
Vagrantにはプロビジョニングという側面もあります。
|
34
|
-
VirtualBoxの
|
50
|
+
しかしVirtualBoxのような仮想マシンは専用のHDDファイルをマウントする思想で作られている為、
|
51
|
+
ホストマシンとゲストマシンのファイルの受け渡しは出来ません。
|
52
|
+
|
53
|
+
どうやってプロビジョニング用のファイルを持ち込めばいいんだ…
|
54
|
+
このためにvagrant_dataに関しては設定しなくても勝手に共有される仕組みになっています。
|