2013年7月8日月曜日

Vagrantでお手軽にVMを作っては壊し作っては壊す

Mac OS上にVirtual Machineを作成して
楽しむ方法を以前 (VitrualBoxでMacにいつでも壊せるVMをサクサク作る) 書きました。

が、Vagrantというツールを使うと、
Virtual Machineと連携してもっと簡単にVMを作成出来ます!

詳しくはこちら↓↓
http://www.vagrantup.com/
http://docs.vagrantup.com/v2/installation/index.html

Vagrantのインストール

http://downloads.vagrantup.com/
からdmgをダウンロードする。

※ Gemでインストールすると、
    古いVersionのVagrantをインストールしてしまうそうなので、要注意。

Boxのダウンロード

Boxはなんていうか・・・Vagrantで使うOSイメージみたいなもんらしいです。
ISO的やつです。

ということでOSをインストールするために、まずはBoxをダウンロードします。
今回はubuntuをダウンロードします。

 $ vagrant box add ubuntu http://files.vagrantup.com/precise64.box

ダウンロードできるBoxの一覧はこちら。
http://www.vagrantbox.es/

VMの設計書を作る

次にVagrantfileを作成します。

Vagrantfileとは何かといいますとVMの設計書みたいなものを作ります。
つまり、
* 今から作成するサーバの名前はほにゃららで、
* IPアドレスはほにゃららで
* メモリはふにゃららGB使います
的なことを記述しているファイルです。

  $ vagrant init ubuntu
(ubuntuを指定することでさっきbox addしたOSをインストールしますよ、
って指定してます)
このコマンドを実行すると、Vagrantfileができます。
これがVMの設計書となります。

初期設定する

ホスト名の設定


config.vm.hostname = "HOSTNAME"

をVagrantfileに追加します。
そうするとホスト名が設定されます。

ネットワークの設定


1. NAT的設定
  config.vm.network :forwarded_port, guest: 80, host: 8080

  とVagrantfileに書くことでホストマシンの8080へのアクセスは、
  ゲストVMの80ポートへ転送されます。

2. Bridge的設定
  config.vm.network :public_network

  とVagrantfileに書くことでローカルネットワークからゲストVMを見ることができます。

3. NAT + Host Only Adapter的設定
  config.vm.network :private_network, ip: "192.168.33.10"

  とVagrantfileに書くことで、ホストマシンからのみアクセスを許可する。

メモリサイズの設定


デフォルトだとOSが推奨する最小限のメモリになるような気がします。(たぶん)
なので、ちょっと多めに割り当てたいときは、

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
  end

のようにVagrantfileに記述します。
この場合、メモリを1024MBに設定してます。

VMを作る

設計書ができたので、以下のコマンドで実際にVMを作成してみます。

  $ vagrant up

しばらく待ったらVMができてます。

VMにログインする

以下のコマンドをVagrantfileを置いたディレクトリで実行すると
さっき作成したVMにsshでログインします。

  $ vagrant ssh

デフォルトではvagrantユーザーで~/.vagrant.d/insecure_private_keyを使った
鍵認証でログインします。

VMを壊す

  $ vagrant destroy
をホストマシンで実行するだけで完全にVMを消し去ります。

もう一回同じ設定で作りなおすときは、
  $ vagrant up
でOK。

単にshutdownしたいだけなら、
  $ vagrant halt
で終了。

で?

まーここまでだとあんまり良さを実感できないですよね。
単にOSのインストールでいろいろ選ばなきゃダメなところを勝手にやってくれるだけ?
って感じですね。

VagrantはChefやPuppetと連携することでもっと威力を発揮します。
次回Chef Soloとの連携を書くと思います。

0 件のコメント:

コメントを投稿