vagrantの基礎を学ぶ。チュートリアルの内容を適当に訳してかいつまんだメモ。
[Project Setup]から[Up and SSH]まで

概要

ドキュメンテーション

vagrantとは「仮想マシンライフサイクルを管理するコマンドラインツール」だ。これからvagrantをはじめるなら「getting started guide」ページをやってからこのページに戻ってくることを強く薦める。(とのことなのでそれに従う。)

さあはじめよう

まずは最初のvagrantプロジェクトを通してやってみよう。その中でVagrantが提供する主要な機能の基礎を知ろう。vagrantのメリットを知りたいなら「Why vagrant?」ページへ。(とりあえずスルーして進む。)

まずはvirtualboxとvagrantをインストールしておく。vagrantは多くのプロバイダ上で動作するけれども、チュートリアルではvirtualboxを使う。無料で、いろんなプラットフォームの上で動くから。

もしあなたが読書家なら、これを読むといい。開発者が書いた本だよ。

立ち上げて動かしてみる

>mkdir vagrant-tutorial
>cd vagrant-tutorial
>vagrant init hashicorp/precise64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

>vagrant up

これでUbunt12.04LTS64-bit環境が立ち上がる。vagrant sshでログインできる。仮想マシンがいらなくなったらvagrant destroyを実行する。プロジェクトを動かす、プロジェクトに必要な依存関係をインストールする、ネットワークや共有フォルダの設定をするにはvagrant upするだけでオッケー。

つづいて、より完全なプロジェクトとしてのセッティングと、他のvagrantの機能を見ていく。

プロジェクトのセットアップ

Vagrantプロジェクトセッティングの最初のステップは、Vagrantfileを作成すること。vagrantfileを作成する目的は2つ。
・プロジェクトのルートディレクトリを設定する
・仮想マシンに必要なもの(リソース、ソフトウェア等々)を記述する

vagrant initコマンドでディレクトリを初期化できる。

>mkdir vagrant_getting_started
>cd vagrant_getting_started
>vagrant init

すでに存在するプロジェクトに対してもvagrant initは実行可能。vagrantを再設定したいときとか。

次へ

ボックス

仮想マシンをスクラッチで開発するような時間のかかる退屈な作業の代わりに、vagrantは”boxes”と呼ばれるベースイメージを使用して仮想マシンのクローンをすぐに作成できる。

ボックスのインストール

ボックスの追加はvagrant add boxコマンドで。

>vagrant box add hashicorp/precise64

この場合はHashiCorp’s Atlas box catalogから”hashicorp/precise64″という名前のボックスをダウンロードする。どのプロジェクトもクローンするための初期イメージとしてボックスを使用する。実際のベースイメージは編集しない。決して。例えば、同じボックスを使用しているプロジェクトが複数あった場合に、他の仮想マシンに影響をおよぼすことがないように。

ボックスの名前(ネームスペース)は「ユーザネーム」と「ボックスネーム」からできている。さっきの例ではユーザネームは”hashicorp”、ボックスネームは”precise64″

ボックスのネームスペースはボックスの内容を保証するものではない。ネームスペースに”ubuntu”と書いてあるからと言って、そのボックスがubuntuの標準的なベースイメージであるとは限らない。そういう勘違いをしないように。AtlasのネームスペースはGithubのネームスペースと非常によく似ていて、Githubサポートチームが誰かがリポジトリにあげるのを手助けしないように、hashiCorpのサポートチームもサードパーティー製のボックスに対して支援はしない。

ボックスを使う

ベースのセッティングをvagrantfileに記述する。ファイルを開いて以下のように。

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
end

vm.box名は追加したボックス名と一致させること。これでどのボックスを使うかをvagrantが認識してくれる。事前にボックスを追加していなくても、自動的にダウンロードと追加をしてくれる。

ボックスのバージョンを指定するときは、以下のようにconfig.vm.box_versionに明示的に記載する。

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.box_version = "1.1.0"
end

ボックスの在り処はURLで指定することも可能。config.vm.box_urlで。

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end

他のボックスを探す

ほしいボックスを探すならHashiCorp’s Atlas box catalogがよい。自社のプライベートなボックスを作るつもりじゃなければ、公開してくれると嬉しいな。

立ち上げてSSHしてみる

起動させてみよう

>vagrant up

数分立てば、Ubuntuが起動する。けども、UIがないからよくわからないね。SSHで繋いで存在を確認しよう。

>vagrant ssh

これで仮想マシンとのSSHセッションが張られる。したいことをすればいい。そそられるけどrm -rf /はしないように。Vagrantは、vagrantfileがあるディレクトリを/vagrantと共有していて、さっきのコマンドでそこにあるものを全部消すことができてしまうから。

設定を一行追加してコマンド一つ叩いただけで、何か起きたわーと思う間に仮想マシンが出来上がる。クール。仮想マシンがいらなくなったら、vagrant destroyすれば、仮想マシンが使っているリソースが解放される。

vagrant destroyコマンドは、ダウンロードしたボックスを削除するようなことはしない。ボックスまできれいに消したければ、vagrant box removeコマンドを使うこと。

次、共有フォルダについて