Posted at

仮想環境についてのまとめ(VirtualBox, Vagrant)

More than 3 years have passed since last update.


仮想環境とは

WEBエンジニアにとってはもはや常識とも言える仮想環境での開発。

普段の開発では仮想環境上での作業を行っており、ひととおり基本的には使えるようになったので一度知識を整理しようと思い、まとめを書きました。


仮想環境の必要性

仮想環境を導入していないプライベートな開発環境で書いて動作したコードは、その他のマシンでも正常に動作するかどうかは、実際にその環境に置いてみないとわからない。

仮想環境上で開発を進めることにより、デプロイされた状態、要するに本番環境のサーバーマシンに置かれた状態をおおよそ再現しながら開発を進めることができる。


VirtualBox

仮想環境の構築には、まず仮想マシンが必要です。

仮想マシンは、まるでそこにLinuxサーバーマシンがあるかのように振る舞います。

その環境を提供するのがVirtualBoxです。

仮想環境上で動作しているOSを、ゲストOSといいます。それに対して、通常時使用しているOSをホストOSと言います。


Vagrant

VirtualBox内での仮想マシンをどのような環境で動かすかを定義し、実際にその定義に従って仮想マシンの構築をしてくれるのがVagrantです。(そろそろ後継がOttoになるようですが今回その話は置いておきましょう

Vagrantの後継ツールとして、開発環境だけでなく実際の動作環境も構築できる「Otto」がリリース


Vagrantの設定について

下記はvagrant upで実際にVirtualBoxに仮想マシンを構築する際の設定ファイルであるVagrantfileの一部です。


vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.box = "centos65"
config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box"
config.vm.network :forwarded_port, host: 3000, guest: 3000 # rails
config.vm.network :forwarded_port, host: 3333, guest: 3306 # mysqld
config.vm.synced_folder "../your-application-root", "/home/vagrant/hoge", nfs: true
end


config.vm.guest - 仮想マシンで実行しているゲストOSを示します。 デフォルト値は:linuxです。Vagrantは適切なディストリビューションを自動判別します。

config.vm.box_url - boxを取得可能なURLを設定します。 boxがインストールされていないシステムでvagrant upした時に、そのURLからboxを取得してきます。


上記のコードで使用したいOSを指定します。


config.vm.synced_folder - 仮想マシン上の同期フォルダを設定します。 これにより、ホストマシン上のフォルダが仮想マシンと同期させることができます。 どのように動作するか等の詳細な情報は、同期フォルダのページを参照してください。


これで仮想環境内で使用したいディレクトリが指定する必要があります。


Vagrantコマンド



  • vagrant up 環境構築を実行


  • vagrant ssh ssh通信で仮想マシンにログイン


  • vagrant ssh-configssh通信に使用するパラメータを表示


    • ちなみにIdentityFileの欄にssh通信で使用する秘密鍵の場所が表示されます・




  • vagrant status 仮想マシンの起動状態を確認


参考