なぜVirtualBoxだけではなくVagrantを使うべきなのか?

vagrant virtualbox

私は長年VirtualBoxを使って開発環境を作ってきました

同僚の多くがVagrantの話をしていて、多くの人がとても興奮しているように見えますが、私にはその利点がよくわかりません

VirtualBoxを使えば、環境を完璧にインストールして設定し、それをOVAなどとしてパッケージ化して、他のオフィスユーザーと共有することができます。何かあった時にはVirtualBoxでスナップショットを取ることができます

パペットとシェフはVagrantの一部ではなく、彼ら自身のものなんだよね?

VagrantはVirtualBoxに比べて具体的にどのようなメリットがあるのでしょうか?

  241  John Hunt  2013-04-17


ベストアンサー

これは大きな問題なので、3つに分けて説明します

Vagrant

Vagrantを使用して、1つ以上の仮想マシンをセットアップします

  • 既製の画像(「箱」と呼ばれる)をインポートします
  • VM固有の設定(IPアドレス、ホスト名、ポート転送、メモリなど)を設定します
  • PuppetやChefのようなプロビジョニングソフトの実行

VM をロードして VirtualBox の設定を行うだけでは、ソフトウェアのインストールやマシンのセットアップは行われないことに注意してください。VirtualBox のスクリプトエンジンと考えてください

VirtualBoxだけではなく、Vagrantを使う理由をいくつか挙げてみました

1.マルチVMネットワークを簡単に設定します

私が読んだVagrantのパワーユーザー向けのコンテンツのほとんどは、複数のVMを同時にセットアップすることについてでした。Vagrantではこれらを設定するためのコンフィグファイルが1つ用意されており、1つのコマンドで全てのVMを起動できるようになっています

3台のVMが192.168.1.*サブネット上の静的IPを使用してネットワークを構築しているとします。そのサブネットを使ってIPアドレスを配布している場所で、VMが競合していることに気付いたとします。VagrantではVagrantfileを編集してVMをリロードするだけですが、VirtualBoxではVMごとに設定を開く必要があります

2.ソース制御

設定をテキストファイルに入れることで、設定をソース管理下に置くことができるようになります。先週変更を加えた後、誤ってイメージを壊してしまったということはありませんか?変更を元に戻して VM をリロードするだけです。VirtualBoxのスナップショットを使えば可能ですが、ただのVagrantfileよりもはるかに多くのスペースを必要とします

3.様々なプラットフォーム

http://vagrantbox.esなどのサイトには、数多くのボックスが用意されている。これにより、様々なOSやディストリビューションを試すことができ、同じプロビジョニングを適用して似たような環境を設定することができます。これは新しいプラットフォームのテストやサポートの追加に役立ちますが、VirtualBoxだけでは時間がかかります

プロビジョニングソフトウェアを使用することについても、イメージスナップショットを使用することと同様に、多くの議論があります。追加の議論については、Stephen Nelson-Smith の優れた記事 How to Build 100 Web Servers in a Day を参照してください

161  Adam Lukens  2013-04-27


Adamさんの素晴らしい回答に加えて、Vagrantは全てを結びつけてくれます。ChefとPuppet(とSaltとシェルスクリプトと他のどんなプロビジョナーを使いたいのか)は別物ですが、Vagrantはすべてを結びつけてvagrant upだけで動作するようにしています

その1つの命令がそうさせます

  1. それだけで済むならVMを起動すればいいだけですが、それもそうです
  2. は、指定したベースボックスからボックスを作成しますが、もしあなたのマシンにベースボックスがない場合は、まずベースボックスを作成します
  3. そのURLからそれを取得し、あなたのマシンにダウンロードします

そんなことは考えなくてもいい。例えば、同僚が始めたプロジェクトを別のプロジェクトに切り替えるとしましょう。 ISO をダウンロードしたり、何かをインストールしたり、特定のクライアントにどのディストロのどのバージョンを使う必要があるのか、必要なものがすべて入っている VM のコピーがあるのか、などと気にすることなく、レポからコードをチェックアウトして vagrant up を実行するだけです

彼らがChefやPuppetを使って設定したのか、シェルスクリプトだけで設定したのかを気にする必要もありません。(そうすると、bundle installをする必要があるかもしれませんし、そうでなければすべてのインストールが完了していることを確認する必要があるかもしれませんが、それでも大したことではありません)

全てのものを結びつけ、統一されたインターフェースを提供することで、最もシンプルなユースケース以外の全てをはるかに簡単にすることができます。最初は既にやっていることを新しい方法で学び直すだけのように感じるかもしれませんが、一度Vagrantの使い方を深く理解してしまえば、より少ない労力でより多くのことができることに気づくでしょう。初期投資をする価値は十分にあるでしょう

29  iconoclast  2014-01-09


ChefやpuppetをVMプロビジョニングと統合する能力が鍵となります。ほとんどのVagrantユーザーは、’vagrant up’や’vagrant destroy’よりも’vagrant provision’や時々’vagrant reload’を頻繁に実行していると言うでしょう。これらのタスクは、本当の仕事はVMのスピンアップ/ダウンではなく、実際にVMを「管理」することだということを示しています

より良い質問をするならば(熟練したChefユーザーが投げかけている)、適切なプラグインを使ってなぜナイフではなくVagrantを使うのかということになるかもしれません(すぐにvirtualboxプラグインに行きます)。例えば、データバッグに保存された引数の値をナイフプラグインに渡すのは、巨大なVagrantfileをジャグリングするよりも(ずっと)インテリジェントで、柔軟性があり、管理しやすいです。私は通常、CPUの数、メモリの量、デプロイするOS、ホスト名、IP、ルートなどのような私の’ダイナミックな’リソースをchefのデータバッグで定義します。 Chefのウェブインタフェースを介してデータバッグを編集することは、私が最も若いオペレータに与えることができる本当に簡単なデータ入力作業です。Vagrantfileでは、あなたの永遠のコードを修正し、それを信じるか信じないかは別として、コードが壊れることはありません

knifeはまだvirtualbox用のプラグインを持っていないという事実はさておき(私はあまり遠くない将来に1つのプラグインを想定していますが)、ほとんどの’エンタープライズ’仮想化製品のためのプラグインが既に存在しています。つまり、vagrantが提供しているものよりもナイフの方がはるかに優れているということです。今のところ、Chefのコミュニティはvirtualboxのユーザーがvagrantを使っている間は、virtualboxのapisをknifeプラグインに統合しないことで満足しているように見えます。knife-vagrantプラグインは、引数を渡すためのデータバッグの使用を許可しています。しかし、それはまだ vagrant ソフトウェアとそれが機能するためのモノリシックな Vagrantfile を必要とします

だから、私は思い切ってVagrantはナイフを持ったChefよりも間違いなく’良い’とは言えません; しかし、もしあなたがバーチャルボックスにこだわるのであれば(今のところは)必要不可欠です

9  Andrew  2014-03-21


vagrantが(”プレーン “VirtualBoxよりも)単純化する開発者向けのユースケースをさらに2つ紹介します。これらのユースケースは以前の回答では特に言及されていませんでした

  1. Vagrantは開発プラットフォームと本番環境を可能な限り近づけておくことを目的としています。理想的な世界では、Vagrant VMのプロビジョニングに使われたTHE SAMEスクリプトで本番環境をプロビジョニングし、デプロイ時のサプライズを最小限に抑えることができます

  2. インテグレーションテストと継続的インテグレーション。Vagrantはテストからの制御が簡単なので、テスト実行時にJenkinsなどのツールからマルチマシンスタック全体を簡単に制御することができます

そう、ここでも “プレーン “なVirtualBoxを使用することができますが、vagrantが使用している規約により、これらのシナリオを設定するのがより簡単になります

8  Ben XO  2014-06-20


Vagrantは仮想マシンを抽象化しているので、仮想マシンの実装を簡単に切り替えることができます。Virtual BoxからAWSやDigital Oceanに切り替えることができます。データベースに特化したクエリ言語ではなく、SQLを使うような感じです

Vagrantを使うことで、開発者はたった一つのコマンドで素早く環境を整えることができ、他の開発者と全く同じ環境を構築することができます。これは開発者が頻繁に出入りする大企業では重要です。セットアップにかかる時間を3日から1時間に短縮することができます

+ アダムが言ったこと

(シェフやパペットの使い道はまだ見つかっていませんが・・・)

1  Chloe  2018-03-29


タイトルとURLをコピーしました