Vagrantの使い方

Vagrantの使い方

前回の記事「今すぐVagrantを始めよう」では、Vagrantをインストールして、仮想マシンの生成から破棄までを体験してみた。このとき、天下りにVagrantfileを与えて、使ったコマンドは vagrant up、vagrant ssh、vagrant halt、vagrant destroy の4つだった。今回は、少し現実的な使い方に話を進めよう。

Vagrantを使って、Linuxのコマンドや設定について学習する、そんな目的を設定したとしよう。

関連記事:

作業用フォルダーの準備

Vagrantでは、プログジェクトごとにディレクトリ(フォルダー)を作って、そのフォルダー内にVagrantfileを置くスタイルが推奨されている。ここでは、~/leaning/ という名のフォルダー内で作業をすることにする。ちなみに、記号「~」は自分のホームを表す。Windowsなら通常 C:Users<ユーザー名> がホームだ。Git Bash(「今すぐVagrantを始めよう」を参照)などのLinux風シェルでは、「」の代わりに「/」が使われる点にも注意しよう。

Git Bashやターミナル(あるいはお好みのシェル・ソフトウェア)から、次のようにして作業用フォルダー ~/leaning/ の準備をする。ドルマーク(Bashプロンプト記号)の後がキーボードから入力する部分だ。

hiyama@HIYAMA ~/tmp
$ cd

hiyama@HIYAMA ~
$ mkdir learning

hiyama@HIYAMA ~
$ cd learning/

hiyama@HIYAMA ~/learning
$

OSと対応するボックスファイルを選ぶ

さて、「今すぐVagrantを始めよう」で使ったVagrantfileは以下のものだった。

Vagrant.configure("2") do |config|  
  config.vm.box = "precise32"  
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"  
  config.vm.provider "virtualbox" do |vb|  
    vb.gui = true  
  end  
end

このまま使ってもいいのだが、サーバー用途でよく使われるLinux系OSの仲間の特定種であるCentOSを使ってみることにする。

さまざまなOSのモトとなるボックスファイル(拡張子は .box)は、http://www.vagrantbox.es/ に列挙されている。このなかから、例えば次を選ぶ。(他のお好みのボックスファイルを選んでもかまわない。)

名前 プロバイダー URL
CentOS 6.4 x86_64 VirtualBox https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box

このボックスファイルは、64ビットOSのものなので、ホストマシン(あなたのコンピュータ)も64ビットでないとゲストマシン(仮想マシン)を動作させることができない。ホストマシンが64ビットのときでも、BIOSの設定で(32ビット仮想マシンが動いても)64ビット仮想マシンが実行できないことがあるので、うまくいかなかったらBIOS設定を確認・変更して欲しい。

先のVagrantfileのconfig.vm.boxとconfig.vm.box_urlを書き換えれば:

Vagrant.configure("2") do |config|  
  config.vm.box = "centos-6.4-x86_64"
  config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box"
  config.vm.provider "virtualbox" do |vb|  
    vb.gui = true  
  end  
end

これを vagrant up で実行するとボックスファイルがダウンロードされる。そしたら前回と同じようにSSHログインしてみる。

hiyama@HIYAMA ~/learning
$ vagrant ssh
[vagrant@vagrant-centos64 ~]$ cat /etc/redhat-release
CentOS release 6.4 (Final)
[vagrant@vagrant-centos64 ~]$ cat /proc/version
Linux version 2.6.32-358.23.2.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Oct 16 18:37:12 UTC 2013
[vagrant@vagrant-centos64 ~]$ exit
logout
Connection to 127.0.0.1 closed.

hiyama@HIYAMA ~/learning
$

確かに、OSが CentOS relase 6.4 であることが確認できた(使ったコマンドとかは今は気にしなくてよい)。

ボックスファイルの管理

一度ダウンロードされたボックスファイルは名前(この場合は centos-6.4-x86_64)で参照できるようになり、ダウンロードは繰り返されない。現在、どのようなボックスが利用可能かは、vagrant box list として表示できる。

hiyama@HIYAMA ~/learning
$ vagrant box list
centos-6.4-x86_64 (virtualbox)
digital_ocean     (digital_ocean)
precise32         (virtualbox)
ubuntu-raring     (virtualbox)

hiyama@HIYAMA ~/learning
$

ボックスファイルのダウンロードと登録だけをしたいときは次のようにする。https://dl.dropbox.com/u/2289657/squeeze32-vanilla.box というボックスファイルを、squeeze32 という名前で追加登録する。

hiyama@HIYAMA ~/learning
$ vagrant box add squeeze32 https://dl.dropbox.com/u/2289657/squeeze32-vanilla.box
Downloading box from URL: https://dl.dropbox.com/u/2289657/squeeze32-vanilla.box

Progress: 17% (Rate: 1533k/s, Estimated time remaining: 0:02:51)

...(ダウンロード中)...


...(ダウンロード終了)...

Extracting box...ate: 4030k/s, Estimated time remaining: --:--:--)
Successfully added box 'squeeze32' with provider 'virtualbox'!

ダウンロードが終了すれば、squeeze32というボックスが登録されている。

hiyama@HIYAMA ~/learning
$ vagrant box list
centos-6.4-x86_64 (virtualbox)
digital_ocean     (digital_ocean)
precise32         (virtualbox)
squeeze32         (virtualbox)
ubuntu-raring     (virtualbox)

hiyama@HIYAMA ~/learning
$

ダウンロードして登録されたボックスは名前だけで参照できる。つまり、今後はボックスファイルのURLは書かなくても大丈夫。次のようなVagrantfileでも問題ない。

Vagrant.configure("2") do |config|  
  config.vm.box = "centos-6.4-x86_64"
  config.vm.provider "virtualbox" do |vb|  
    vb.gui = true  
  end  
end

仮想マシンのウィンドウが不要なら、config.vm.provider の部分も不要だ。次のような短いVagrantfileになる。

Vagrant.configure("2") do |config|  
  config.vm.box = "centos-6.4-x86_64"
end

Vagrantの多様な機能を活用するなら、Vagrantfileもそれなりに複雑になるが、単に仮想的なサーバーマシンを定義するだけなら、config.vm.box = “centos-6.4-x86_64” だけでいいのだ。

自由に使える環境が手に入った

OSがCentOS 6.4であるこの仮想サーバーマシンには、Apache Webサーバーも入ってないし、日本語化もされてない。ApacheのインストールやOSの日本語化は、通常は管理者の仕事だろう。実際に稼働しているサーバーマシンだと、自分では作業ができず管理者にお願いするしかないかもしれない。しかし、今、目の前にある仮想サーバーマシンなら、何をしてもよいのだ。

この記事に続きがあるかどうか分からないが、続きの作業は進めることはできるだろう。ヘマをしても、仮想マシンを破棄して最初からやり直せばよい。思う存分に試してみることができる。さあ、やってみよう。

関連記事:

Page Top