ということで Vagrant を試してみました。ちなみに、「ゔぇいぐらんと」と読むみたいですね。スクウェアにそんな感じのゲームがありましたね。
利用手順
VirtualBox のインストール
バックエンドの仮想化環境として、VirtualBox をインストールします。
Vagrant のインストール
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)する際に、
- yum upgrade して
- epel レポジトリを追加して
- 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
うまくいってるみたいですね。すごい。
参考
- GETTING STARTED
- 公式ドキュメント中のスタートガイド
- Vagrant入門
- ドットインストールのレッスン
- "Progress object failure: NS_ERROR_CALL_FAILED" when running "vagrant up" in Getting Started Guide
- VirtualBox 4.2.14 で Vagrant が動かないと動揺する民たち
0 件のコメント:
コメントを投稿