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がインストールされている
ダウンロード
ここからダウンロードしてインストール
- www.vagrantup.com/downloads.html(注: リンク更新しました)
とりあえず試してみる:Box & Vagrantfile
適当なディレクトリを作成してから、以下を実行
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
heathrow社では
本日、布教を済ませて、開発環境の配布していきます。
Vagrantfileと一緒に、ChefのレシピをGitで管理して、常に全員が同じ開発環境となるようことを目指します。