Windows8にVagrant入れてみた

Infrastructure as code なんて言われてるし、実際どんなものなのか経験してみようと、まずはVagrantから始めてみました。感想としてはVMを手軽にバックグラウンドで動かせて、SSHでほげほげできるのが良い感じです。

構成

  • Windows8 64bit
  • Virtual Box 4.3
  • Vagrant 1.6.3

Vagrantのインストール

VirtualBoxのインストールは省略して、Vagrantのインストールを行います(要再起動)。 と言いつつ特別なことは無いのでインストールは割愛します。ウィザードで変更したことと言えば、インストールディレクトリをちょっと変えたくらいです。

Vagrant Downloads

boxesを利用してVM追加

インストール終わったらまずはboxを追加します。boxはOSイメージファイルとその他、もろもろの設定のパッケージと思ってもらえればOKです。下記のサイトでいろんなboxが公開されています。好みのものを利用します。

Vagrantbox.es

(なお、最初から boxを自作しようと思わない方がいいです。挫けます)

さて、自分好みのboxはありましたか?あったら、その列に記述されているURLをコピーしてください。URLをコピーしたらconsole(コマンドプロンプトでも可)でbox addします。

vagrant box add [vmのラベル(任意)] [boxのURL]

自分の場合はこんな感じ↓。ラベルはOSの名前などではなくて、その設定用途を書く方が適切かもしれません(例:jekyll-server)。

vagrant box add ubuntu13 https://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box

addするとOSのイメージファイルをDLし始めます。時間かかるのでしばらく放置しておきましょう。
イメージファイルの保存先はC:\Users\[UserName]\.vagrant.d\boxesです。

==> box: Adding box 'ubuntu13' (v0) for provider:
    box: Downloading: https://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box
    box: Progress: 100% (Rate: 1477k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'ubuntu13' (v0) for 'virtualbox'!

初期化

imageファイルのダウンロードが済んだら初期化します。
初期化するとVagrantfileが生成されるので、作業ディレクトリを作ってそこで初期化を実行するといいでしょう。

cd [作業ディレクトリ]
vagrant init ubuntu13

ここで指定しているubuntu13は、vagrant box addしたものと一致させます。 自分がどんなboxを手元に持っているか確認するにはvagrant box listで確認してください。

立ち上げ

initが終わったら準備完了です。Vagrant経由でVMを立ち上げます。

vagrant up

立ち上がると以下のようなメッセージが出ると思います。

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu13'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: Console2_default_1402077161744_58634
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version o
f
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you
 see
    default: shared folder errors, please make sure the guest additions within t
he
    default: virtual machine match the version of VirtualBox you have installed
on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.2.10
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => [カレントディレクトリのパス]

初めてvagrant upを行うと、.vagrantができます。このディレクトリの中にはVirtual Boxとつなぐための設定が入っているようです。

またVirtual Boxを立ち上げてみると仮想マシンが追加されているのも確認してください。

そしてログイン

立ち上げたVMにログインしてみましょう。SSHの使えるソフトを使う必要はありません。以下のvagrantコマンドでログインできます(コマンドプロンプトでもいける!!)。

vagrant ssh

余談ですが、このvagrant sshも実行できるのはVagrantfileが置かれているディレクトリのみのようです。そうじゃないところで実行すると

VM must be created before running this command. Run `vagrant up` first.

と怒られます。

VMを落とす

先ほど立ち上げたVMを落とします。これも非常に簡単。

vagrant halt

Virtual Boxで確認してもVMが落ちているのが確認できます。

Vagrant Destroyについて

一回作った環境をもう一回ゼロから作り直したいというときにはvagrant destroyを利用します。

vagrand destroy

これを行うと、最初のvagrant upの時に生成した仮想マシンを破棄します。試しにvagrant destroyするとVirtual Box上から仮想マシンが無くなっているのが確認できます。

VirtualBoxから仮想マシンが無くなっている

もう一回vagrant upすると再び仮想マシンが作成されます。

初期化からやり直すには?

初期化しなおすにはvagrantfileを削除すればOKです。

rm vagrantfile

今回は以上です。次回はsaharaプラグインを使って、環境を作ったり壊したりしてみます。

参考:boxファイルについて

途中「boxを自作しようと思わない方がいいです」と言いましたが、勿論自作できます。Virtual Box上でOSインストールをし、決められた設定を行えば、.boxファイルとして書き出せます。 自作boxについては以下の記事が詳しいので、掲載しておきます。

Vagrant の VirtualBox 用 Base Box ファイルを手動で作ってみる

自分にあったboxがVagrantbox.esになかったら作ることも考えてはいかがでしょうか。