読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Vagrant入門。簡単にローカル環境に仮想マシン(VM)を作る

インフラ

f:id:nipe880324:20150719044527p:plain

Vagrantを使うことで本当に簡単に仮想マシン(VM)をローカル環境に作成できます。

主な利用用途としては、開発用マシンをVagrantで作成できるようにしておくことで、同じ構成(OS、ミドルウェア、バージョンなど)の開発マシンを開発メンバーに配布することができます。そのため、環境構築の手間が省け、バージョンが違うなどといった問題も起こりません。

デメリットとしては、VM上で動かすので動作が遅くなりがちや、ホスト(PC)との連携に工夫が必要といったわずらわしさもあります。

しかし、仮想マシンなのでサーバー環境を作成、削除が簡単にできるので、ローカル環境では行いづらいマシンの環境系のテストが簡単に行えるのも魅力ですのでVagrantは必須の知識だと思います。



動作確認

  • MacOS 10
  • Vagrant 1.7.2
  • VirtualBox 4.2.38


1. VagrantとVirtualBoxのインストール

以下のサイトからダウンロードか、brewコマンドでインストールします。

サイトからダウンロードしてくる場合

brewコマンドの場合(brewがインストールされている必要がある)

$ brew tap caskroom/cask
$ brew install brew-cask
$ brew cask install virtualbox
$ brew cask install vagrant

VitualBoxは仮想マシンを管理できるソフトです。



2. Vagrantfileを作成

Vagrantを使っていくホームディレクトリ(project)を作成し、Vagrantの設定ファイル(Vagrantfile)を作成します。

$ mkdir project && cd project
$ vagrant init

Vagrantfileはデフォルトで多くの設定がコメントアウトされています。



3. Vagrantにボックスを追加

CentOS 6.6 x64 のボックスを追加します。

$ vagrant box add chef/centos-6.6

# 次のような質問がでてくるので、virtualboxの1を選びます
1) virtualbox
3) vmware_desktop

Enter your choice: 1

Vagrantでは簡単にOSを作成できるようにOSのベースイメージ(ボックスと呼ばれる)が用意されています。
Discover Vagrant Boxes | Atlas by HashiCorpに様々なボックスが公開されています。
chef/centos-6.6もここから探したもので、CentOS 6.6 x64 のボックスです。



4. ボックス一覧の確認

ボックスが追加されているか確認します。

$ vagrant box list
chef/centos-6.6 (virtualbox, 1.0.0)

ちなみに、vagrant box list [ボックス名(chef/centos-6.6 など)]でボックスを削除できます。



5. Vagrantfileの設定

インストールしたボックスを使うように設定します。また、超基本的な設定をします。

# Vagrantfile
Vagrant.configure("2") do |config|
  # ボックス名を設定。設定したボックスのOSがインストールされる
  config.vm.box = "chef/centos-6.6"

  # ホスト(PC)からVMにアクセスできるプライベートIPを設定
  # VM上でアプリを作ったときに、PCのブラウザからこのIPアドレス(192.168.33.10)を使ってアクセスできる
  config.vm.network "private_network", ip: "192.168.33.10"

  # 共有フォルダの設定(PCとVMでファイルを共有できる)
  # ホストのsync_folderとVMの/home/vagrant/sync_folderをNFSで共有する
  config.vm.synced_folder "./sync_folder", "/home/vagrant/sync_folder", type: "nfs"
end

もし設定を変更した場合、vagrant reloadを行うことで反映できます。
設定は他にもでき、詳細はVagrant公式ドキュメントを見てください



6. ホストとVMの共有フォルダ作成

vm.synced_folderで設定したsync_folderをホスト(PC)側に作成しておきます。

$ mkdir sync_folder

7. 仮想マシンの起動

仮想マシンの作成、起動、ボックス(OS)のインストールを行います。

$ vagrant up

Vagrantfileの設定内容が読み込まれて、VirtualBoxに仮想マシンが作成され、その上にボックスのOS(CentOS 6.4)がインストールされます。
ちなみに、vagrant destroyで作成したVMを削除することができます。



8. 仮想マシンにログイン

作成したOS(CentOS 6.4)にログインします。

$ vagrant ssh

[vagrant@localhost ~]$ ls
sync_folder  # 共有フォルダが表示されている
[vagrant@localhost ~]$ exit
logout

ユーザーはVagrantでログインし、ホームフォルダは/home/vagrantです。


9. sshでログインする

vagrant ssh-configコマンドによりsshでVagrantで作成した仮想マシンにログインできるようになります。sshでログインしたいときのために設定しておきます。

$ touch ~/.ssh/config
$ vagrant ssh-config --host web >> ~/.ssh/config

# ssh webでログインできるようになる
$ ssh web
[vagrant@localhost ~]$ 

10. 仮想マシンの停止

最後にVagrantのVMを使わないときはCPUやメモリの消費を抑えるために留めておきます。

vagrant halt

11. Vagrantコマンド一覧(よく使うやつ)

  • vagrant up ... VMの作成/起動
  • vagrant suspend ... VMの一時停止
  • vagrant halt ... VMの電源OFF
  • vagrant ssh ... VMにログイン
  • vagrant reload ... VMの設定変更(Vagrantfileを変更したときに呼ぶ)
  • vagrant destroy ... VMの削除
  • vagrant list-commands ... コマンド一覧を表示

以上です。

参考文献