vagrantで開発環境を整える

vagrantはdockerのようにべき等性のある開発環境を作ることができます。

dockerはコンテナ型の仮想化であるのに対し、vagrantVirtualBoxVMWareHyper-Vを利用しているのでホスト型とハイパーバイザー型の仮想化です。

 

ようは、WindowsMacで簡単にlinux環境を作ったり壊したりできるとても便利なツールです。

 

ではではWindows環境でCentOSFedoraDebianUbuntu環境を作ってみます。

 

インストール

ここから環境にあったものをダウンロードしてインストール

ruby gemもあるがバージョンが古い。

 

あとVirtualBoxもインストールする

VirtualBoxで64bitのOSが入れられなかくなるのでHyper-VはOFFにします。

 

sshクライアントはPuTTY ごった煮版を使いました。

試しにubuntu環境を作る

コマンドプロンプトを起動(windowsキー→cmdと打つ→Enter)し以下のコマンドを実行。

> mkdir test

> cd test

> vagrant init hashicorp/precise32

> vagrant up 

それぞれのコマンドがやっていることはこんなイメージ。

vagrant init hashicorp/precise32

ubuntuの32bit(hashicorp/precise32)のイメージをダウンロードし、Vagrantfileを初期化。

vagrant up

Vagrantfileを読み込みVirtualBoxubuntu環境を作成。

仮想環境にログインする

> vagrant ssh 

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use the PuTTY SSH client with the following
authentication information shown below:
 
Host: 127.0.0.1
Port: 2222
Username: vagrant

 SSHクライアントがないので怒られる。Cygwinなどで起動していればこれでログインできるはず。

今回はPuttyを使ってログインします。必要な情報はこれです。

Host: 127.0.0.1

Port: 2222

Username: vagrant

ホスト名:127.0.0.1

ポート:2222

ユーザ:vagrant

パス:vagrant

でログインできます。

vagrant@precise32:~$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 12.04 LTS

Release:        12.04

Codename:       precise 

 ubutu環境の出来上がりです。

他の環境も作る

vagrantはOSを『box』で管理しています。

ではCentOSFedoraDebianUbuntuのboxをvagrantcloudから取得します。

# ダウンロード
> vagrant box add chef/centos-6.5
vagrant box add chef/ubuntu-13.10
vagrant box add chef/debian-7.4
> vagrant box add chef/fedora-20

# 確認

>vagrant box list
chef/centos-6.5     (virtualbox, 1.0.0)
chef/debian-7.4     (virtualbox, 1.0.0)
chef/fedora-20      (virtualbox, 1.0.0)
chef/ubuntu-13.10   (virtualbox, 1.0.0)
hashicorp/precise32 (virtualbox, 1.0.0)

 Vagrantfileを作る

 

vagrant init
notepad Vagrantfile 

VAGRANTFILE_API_VERSION = "2"
 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :centos do |dev|
    dev.vm.box               = "chef/centos-6.5"
  end
 
  config.vm.define :debian do |dev|
    dev.vm.box               = "chef/debian-7.4"
  end
 
  config.vm.define :fedora do |dev|
    dev.vm.box               = "chef/fedora-20"
  end
 
  config.vm.define :ubuntu do |dev|
    dev.vm.box               = "chef/ubuntu-13.10"
  end
end

dev.vm.boxにbox名を指定します。

VirtuabBoxに環境を作る

> vagrant up

VirtuabBoxに環境ができました。

f:id:katashiyo515:20140420075955j:plain

プロビジョニング

デフォルトではscreenやvimが入っていません。Vagrantfileを修正して入れます。

centosだけvimとscreenをインストールする設定をします。

> notepad Vagrantfile


VAGRANTFILE_API_VERSION = "2"
 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :centos do |dev|
    dev.vm.box               = "chef/centos-6.5"
    dev.vm.provision "shell" do |s|
      s.inline  = ""
      s.inline += "sudo yum install screen -y;"
      s.inline += "sudo yum install vim -y;"
    end
  end
 
  config.vm.define :debian do |dev|
    dev.vm.box               = "chef/debian-7.4"
  end
 
  config.vm.define :fedora do |dev|
    dev.vm.box               = "chef/fedora-20"
  end
 
  config.vm.define :ubuntu do |dev|
    dev.vm.box               = "chef/ubuntu-13.10"
  end
end

起動しているboxの設定を読み込みなおすには『up』コマンドではなく『reload』コマンドを使います。

vagrant reload centos --provision

 centosのみプロビジョニングも含めて再設定するため、『centos --provision』と書いています。

$ screen -v

Screen version 4.00.03 (FAU) 23-Oct-06 

$ vim --version

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)

 無事インストールできました。

そのほかコマンド

vagrantの終了

 vagrant destroy

vagrantの中断

vagrant suspend
vagrantの再開

vagrant resume

boxの作成

vagrant package --base CentOS64
vagrant box add  kashi/centos package.box

※実行前にVirtualBox上でCentOS64という名前の仮想環境を作る必要があります。

boxの削除

vagrant box remove hashicorp/precise32 virtualbox

資料

Vagrant

Vagrant日本語ドキュメント

Vagrant Cloud