LoginSignup
25
23

More than 5 years have passed since last update.

Vagrantで簡単仮想間構築 - インストールと簡単な使い方まで

Last updated at Posted at 2014-01-14

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
25
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
23