可能であるなら、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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。