Vagrantの使い方
- 2014.03.12
- 開発環境/開発ツール Vagrant
- demo
前回の記事「今すぐ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の日本語化は、通常は管理者の仕事だろう。実際に稼働しているサーバーマシンだと、自分では作業ができず管理者にお願いするしかないかもしれない。しかし、今、目の前にある仮想サーバーマシンなら、何をしてもよいのだ。
この記事に続きがあるかどうか分からないが、続きの作業は進めることはできるだろう。ヘマをしても、仮想マシンを破棄して最初からやり直せばよい。思う存分に試してみることができる。さあ、やってみよう。
関連記事: