2013年6月28日金曜日

Vagrant で CentOS 6.4 を利用する

発作的にまっさらな CentOS が欲しくて、でもはなからインストールするのはめんどくさい。
ということで Vagrant を試してみました。ちなみに、「ゔぇいぐらんと」と読むみたいですね。スクウェアにそんな感じのゲームがありましたね。

利用手順

VirtualBox のインストール


2013/06/27 現在、VirtualBox 4.2.14 だと動作しません。4.2.12 をご利用ください。

バックエンドの仮想化環境として、VirtualBox をインストールします。
なお、バックエンド環境は VirtualBox でなくてもよいようです。

Vagrant のインストール


http://downloads.vagrantup.com/ から最新版を選択し、各 OS に合った形式でインストール。

CentOS 6.4 32bit 版のゲストOSを作成する


今回はお試しなので、サイズの小さい 32bit 版にしました(といっても 600 MB くらいしか違わないようですが)。なお、公式から配布されているイメージは以下から確認できます。


上記でお望みのイメージが見つからない場合は自作するか、有志で公開しているものを利用させてもらうといった手があります。

Box の追加


適当な作業用ディレクトリで行います。以下、このディレクトリをプロジェクトディレクトリと呼びます。
$ mkdir -p ~/vagrant/centos64_32 && cd ~/vagrant/centos64_32
centos64_32 という名前で Box (仮想サーバ、ゲストOS)を追加します。第4引数の URL は、http://www.vagrantbox.es/ で確認した URL です。
$ vagrant box add centos64_32 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20130427.box

Box のセットアップ

$ vagrant init centos64_32
VagrantFile という設定ファイルが作成されます。

Box の起動

$ vagrant up
Virtual Box 側にもゲストOSが追加されたことが確認できます。

Box の利用

$ vagrant ssh
[vagrant@localhost ~]$
vagrant ユーザとしてログインできました。

基本的な操作

root になるには sudo -s または su - で


sudo -s であればノンパスで、su - であればパスワード vagrant で root ユーザになれます。

/vagrant は共有ディレクトリ


/vagrant で作られたファイルはプロジェクトディレクトリと共有されます。
$ ls
Vagrantfile
$ vagrant ssh
[vagrant@localhost ~]$ touch /vagrant/foo
[vagrant@localhost ~]$ ls /vagrant
Vagrantfile  foo
[vagrant@localhost ~]$ exit
$ ls
Vagrantfile foo

ssh の設定


現状ですと vagrant ssh を利用してログインする場合、カレントディレクトリはVagrantFile が存在するディレクトリである必要があります。これでは不便という事で、~/.ssh/config にホスト情報を追記して、どのディレクトリにいてもログインできるようにしておきます。
$ vagrant ssh-config --host centos >> ~/.ssh/config
$ cd /path/to # 適当なところへ移動
$ ssh centos
[vagrant@localhost ~]$

ネットワーク


VagrantFile を編集する事で、Box に任意の IP アドレスを設定する事ができます。以下の設定では 192.168.33.10 でホスト OS からアクセスすることができます。
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network :private_network, ip: "192.168.33.10" # コメントアウトを外す

プロビジョニング


Box を起動(vagrant up)する際に、
  1. yum upgrade  して
  2. epel レポジトリを追加して
  3. Apache httpd と nkf をインストール
するようにしてみたいと思います。サーバ環境構築の自動化の第一歩ですね。
以下のようなスクリプトを用意します。ファイル名は bootstrap.sh としておきます。
#!/usr/bin/env bash
yum upgrade -y
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install -y httpd
yum install -y nkf

次に Vagrantfile に Box 起動時にこのシェルを実行するように記述します。
# Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "centos64_32"
  config.vm.provision :shell, :path => "bootstrap.sh"

Box を起動します。
$ vagrant destroy // すでにBoxを作成している場合
$ vagrant up

Box の起動とともに、bootstrap.sh に記述した内容が実行されていきます。
完了後、ログインします。
$ vagrant ssh
[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   May 13 2013 22:08:57
[vagrant@localhost ~]$ nkf --version
Network Kanji Filter Version 2.0.8 (2007-07-20)
[vagrant@localhost ~]$ sudo -s
[root@localhost vagrant]# yum upgrade
...
No Packages marked for Update
うまくいってるみたいですね。すごい。

参考

0 件のコメント:

コメントを投稿