Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした