Vagrantとは
ベイグラントと読むらしい(ずっとバーグラントと読んでたのは内緒)
VirtualBoxなどの仮想化ソフトウェアを便利に扱うためのフロントツール
vagrantコマンドを使って、以下のようにCLIから仮想環境を操作できる
# 起動
vagrant up
# プロビジョニング(ChefSoloなど)
vagrant provision
# 接続
vagrant ssh
# 終了
vagrant halt
VirtualBox以外にもこんなのも扱える
- VMWare
- EC2(Amazon Web Service)
Vagrantを使って便利になること
基本的にVagarntでできることはVirtualBoxだけでもできる(はず)
けどVagrantを使うことによって、いろんなことが簡単に便利にできるようになる
例えば
-
VMの設定をファイルで管理できる
- ポートフォワーディング
- ネットワーク
- 共有ディレクトリ
- メモリー
Chef/Pupetで簡単にマシン自動セットアップできる
-
複数のマシン郡を一元管理して、一度に準備できる
- 冗長構成を簡単に試せる
-
仮想環境のスナップショット、ロールバックなどが簡単にできる
- 要プラグイン
利用シーン
- すぐに使える仮想環境を構築したい
- ちょっとしたテストのために壊してもいい環境が欲しい
- チームで同一の環境を簡単に構築したい
とか、いろいろあるけど
とりあえず便利だからVirtualBox使う際には噛ませておいて損は無い
Vagrantのインストール
前提環境
- VirtualBox
ダウンロード
ここからダウンロードしてインストール
http://www.vagrantup.com/downloads
とりあえず試してみる
適当なディレクトリを作成してから、以下を実行
vagrant box add precise64 http://files.vagrantup.com/precise64.box
vagrant init precise64
vagrant up
vagrant ssh
もしくは、こっちでもよい
vagrant init precise64 http://files.vagrantup.com/precise64.box
vagrant up
vagrant ssh
Boxとは
BoxとはVagrant用に調整されたISOファイルみたいなもの
ここからいろんなBoxがダウンロードできる
http://www.vagrantbox.es/
登録されたBoxの一覧を確認するには下記コマンド
vagrant box list
Vagrantfile
vagrant init
するとVagrantfileが作成される
これが仮想環境の設定ファイルであり、使用するBoxや、後述のネットワーク設定などを記述できる
いろいろ設定してみる
Vagrantfileを編集していく
仮想環境への変更の反映は下記コマンド
vagrant reload
プライベートネットワークを設定
config.vm.network :private_network, ip: "192.168.33.10"
ポートフォワーディングを設定
config.vm.network :forwarded_port, guest: 80, host: 8080
Chefで自動構築を試してみる
./cookbooks以下にchefのレシピを用意しておく
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "./cookbooks"
chef.add_recipe “git”
end
vagrant provision
複数ホストを立ててみる
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.define :web1 do |web|
web.vm.network :private_network, ip: "192.168.1.11"
web.vm.network :forwarded_port, host: 8001, guest: 8000
end
config.vm.define :web2 do |web|
web.vm.network :private_network, ip: "192.168.1.12"
web.vm.network :forwarded_port, host: 8002, guest: 8000
end
end
各ホストへの接続は以下のようにVagrantfileで定義した名前をつけてやる
vagrant ssh web1
vagrant ssh web2