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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Chef

ChefはRuby等で書かれた構成管理ツールです。 システム構築や、運用作業を自動化してくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Puppet

Puppetは、Rubyで作られた UNIX系OSのシステム管理を自動で行うためのツールです。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

3回答

911閲覧

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

potato_taro

総合スコア2

Chef

ChefはRuby等で書かれた構成管理ツールです。 システム構築や、運用作業を自動化してくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Puppet

Puppetは、Rubyで作られた UNIX系OSのシステム管理を自動で行うためのツールです。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

1クリップ

投稿2020/07/03 10:48

前提・実現したいこと

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

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

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

可能であるなら、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 がなくて恐縮です)
このようなコードを準備しておくと、
次のようなコマンドを実行するだけでイメージの構築が完了します:

console

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

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

console

1vagrant up && vagrant ssh

投稿2020/07/03 20:24

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2020/07/03 11:11

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2020/07/09 03:49

Bindi

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問