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

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

ただいまの
回答率

88.92%

仮想環境(VirtualBox上)をチーム間で共有する際のベストプラクティスが知りたいです。

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 586

potato_taro

score 2

前提・実現したいこと

仮想環境を作成し、チーム間で共有する際のベストプラクティスが知りたいです。

発生している問題・エラーメッセージ

現在、素人がチームを組んで小さなアプリ開発をしており、メンバーそれぞれがローカルで環境を構築しているような状態です。
そこで上司の方に仮想環境を作って開発環境を統一しようと言われました。
上司のやり方は、VirtualBoxで環境を作成し、そのvdiファイルを共有する感じでした。

しかしそのやり方だと少なからずメンバーそれぞれがVirtualBoxを起動し、メモリの設定等はいじる必要があると思います。
それよりもVagrantを使ってVagrantFileを共有すればコマンド一発で環境構築できるのでは?と思ったのですが、私の認識に間違いはあるでしょうか?

vdiファイルを共有しなければならない理由は存在するのでしょうか?
ググってはみたもののvdiファイルの共有のようなやり方に該当するものは出てきませんでした。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

可能であるなら、Vagrant 越しに VirtualBox を操作した方が
便利であることに間違いはありません

Vagrantfile の共有のみを行ったときのデメリット

Vagrantfile の共有のみを行う場合、
それぞれの開発者が初回の起動時に構築を行うことになります
構築処理が長い場合は、
環境をリセットしたいときに構築し直しとなるので
長い待ち時間が発生することになります

これを回避するためには、構築済みのイメージを用意しておいて、
Vagrantfile から参照する方法が有効です

イメージ構築自動化の方法

VirtualBox, Vagrant の他に、
以下のツールを組み合わせることでイメージの構築を自動化することができます:

イメージの構築・デプロイの自動化のためのツール
Packer by HashiCorp
Shell Script に比べメンテナンス性に優れる構築自動化ツール
Ansible Documentation — Ansible Documentation
上記 Packer で Vagrant の Box を構築のベースに指定できるようにするプラグイン
themalkolm/packer-builder-vagrant: 📦 Packer builder to use existing vagrant boxes (Packer 1.4.5 以下で使う必要があります)

すべて一度に導入する必要はありません、
できるところから少しずつ導入していくと開発が楽になっていきます

まず、Docker が導入できないか検討

質問のタイトルでは「VirtualBox 上」ということですが、
Docker で問題ないのであれば、
VirtualBox よりも Docker のワークフローの方が効率的で、
この回答で紹介したすべてのツールが習得不要になります
Docker が導入できないかどうかを最初に検討することをおすすめします

参考

少し前まで僕が使っていた VirtualBox の開発環境のコードを紹介します

自動的に開発環境のイメージ構築するのコード
yukihiko-shinoda/ansible-playbook-docker-host: Ansible playbook for Docker host.

構築したイメージを使うための Vagrantfile
yukihiko-shinoda/vagrant-docker-host: Vagrant for Docker host.

(README.md がなくて恐縮です)
このようなコードを準備しておくと、
次のようなコマンドを実行するだけでイメージの構築が完了します:

packer build -var 'cloud_token=xxxxxxxx' packer_template.json

そして、あとは開発用の PC で:

vagrant up && vagrant ssh

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

vdiファイルを共有しなければならない理由は存在するのでしょうか?

推進してる人に聞きましょう。
多分他の方法を知らないとか試したことが無いとかそういう理由だとは思いますが。
少なくとも、イメージで共有するなら、ovaにエクスポートする方が良いでしょうね。
そうすればインポートするだけで再現はされます。

vagrantやdockerを使う方法の場合、学習コストや機能的な制約事項は発生するので、
イメージを直接共有する方法とどちらが優れているかは環境次第になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-2

各個人がローカルマシン上に開発環境を持つのではなく、開発環境が構築されたマシンで各個人が開発をする。そうすれば、各個人は Docker だの VirtalBox などの理解をする必要がない。

よくある事例です。上司は統一したいといっても、けっきょく各個人に負担がいくから、開発効率はあがらない。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る