
Vagrantを導入して仮想サーバーを作成し、NginxをインストールしてWEBページを表示させてみたのでメモ。
環境
Mac OS X | 10.8.4 |
Vagrant | 1.2.4 |
VirtualBox | 4.2.16 |
1. Vagrantのインストール
Vagrant公式サイトからインストーラーをダウンロードしてVagrantをインストール。インストールが完了したらvagrantのバージョンを確認。
$ vagrant -v
Vagrant version 1.2.4
Vagrant version 1.2.4
2. VirtualBoxのインストール
仮想化ツールはVirtualBoxを使用しました。VirtualBox公式サイトからインストーラーをダウンロードしてVirtualBoxをインストール。
3. Boxを取得
仮想サーバーのテンプレートにあたるBoxを取得します。今回は、A list of base boxes for Vagrant – Vagrantbox.esからCentOS 6.4のBoxを追加しました。
$ vagrant box add centos-6.4 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
追加したBoxの一覧を表示。
$ vagrant box list
centos-6.4 (virtualbox)
centos-6.4 (virtualbox)
追加したBoxを削除する場合。
$ vagrant box remove centos-6.4
4. Vagrantfileの作成
仮想サーバー毎にディレクトリを作成し、仮想サーバーの設定ファイルであるVagrantfileを作成します。$ mkdir -p ~/vm/centos
$ cd ~/vm/centos
$ vagrant init centos-6.4
$ cd ~/vm/centos
$ vagrant init centos-6.4
5. 仮想サーバーを起動
$ vagrant up
6. 仮想サーバーにログイン
$ vagrant ssh
NOTE
Vagrantで起動した仮想サーバーにはユーザーvagrantがデフォルトで作成されています。$ vagrant sshでログインするのはこのユーザーvagrantです。また、ユーザーvagrantはsudoコマンドが実行できるようにも設定されています。
ちなみに、root パスワードは「vagrant」です。
こんな感じで、Vargrantを使うと拍子抜けするほど簡単に仮想サーバーを起ち上げることができてしまいました。
vagrantのコマンドは以下があります。他にも様々な機能がありますので、詳細はVagrant公式サイトを御覧ください。
$ vagrant up | 仮想サーバーを起動 |
$ vagrant status | 仮想サーバーの状態を確認 |
$ vagrant ssh | 仮想サーバーにログイン |
$ vagrant halt | 仮想サーバーのシャットダウン |
$ vagrant reload | 仮想サーバーの再起動 |
$ vagrant suspend | 仮想サーバーの一時停止 |
$ vagrant resume | 仮想サーバーの再開 |
$ vagrant destroy | 仮想サーバーを削除 |
続けて、WEBサーバー(Nginx)をインストールしてWEBページを表示してみます。
7. リポジトリの追加
[vagrant@localhost ~]$ sudo vi /etc/yum.repos.d/nginx.repo
/etc/yum.repos.d/nginx.repo
1 2 3 4 5 | [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 |
8. Nginxのインストール
[vagrant@localhost ~]$ sudo yum -y install nginx
9. Nginxを起動
[vagrant@localhost ~]$ sudo service nginx start
ここで手を抜いてファイアーウォールを切ります。
※外部に公開するサーバーでは適切にファイアーウォールを設定してください。
[vagrant@localhost ~]$ sudo service iptables stop
[vagrant@localhost ~]$ sudo chkconfig iptables off
[vagrant@localhost ~]$ sudo chkconfig iptables off
10. Vagrantfileの編集
IPアドレスを指定して仮想サーバーにアクセスできるようにVagrantfileを編集します。以下の行を見つけて、コメントアウトを解除(先頭の#を外す)。
~/vm/centos/Vagrantfile
1 | # config.vm.network :private_network, ip: "192.168.33.10" |
編集内容を反映させるため、仮想サーバーを再起動します。
$ vagrant reload
ブラウザを起ち上げて、192.168.33.10にアクセスします。
以下のようなWelcome画面が表示されたら成功です。

やったね。
11. Boxを作成
自分でBoxを作成することもできます。$ vagrant package
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Creating temporary directory for export...
[default] Exporting VM...
[default] Compressing package to: /path/to/package.box
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Creating temporary directory for export...
[default] Exporting VM...
[default] Compressing package to: /path/to/package.box
カレントディレクトリにpackage.boxという名前でVMがパッケージ化されました。あとはこのBoxを使用したい環境に登録してあげます。
$ vagrant box add mybox package.box
Downloading or copying the box...
Extracting box...te: 353M/s, Estimated time remaining: --:--:--)
Successfully added box 'mybox' with provider 'virtualbox'!
Downloading or copying the box...
Extracting box...te: 353M/s, Estimated time remaining: --:--:--)
Successfully added box 'mybox' with provider 'virtualbox'!
Boxの一覧を表示。
$ vagrant box list
centos-6.4 (virtualbox)
mybox (virtualbox)
centos-6.4 (virtualbox)
mybox (virtualbox)
追加されてますね。
Vagrantfileの作成、仮想サーバーの起動はこれまでと同様です。
$ mkdir -p ~/vm/mybox
$ cd ~/vm/mybox
$ vagrant init mybox
$ vagrant up
$ vagrant ssh
$ cd ~/vm/mybox
$ vagrant init mybox
$ vagrant up
$ vagrant ssh
NOTE
Boxはvagrant packageを実行するだけで簡単に作成できますが、私の環境ですと、事前に仮想サーバー側のネットワークインターフェースとMACアドレスのマッピング機能を無効にしておかないと、作成したBoxから仮想サーバーを起動した際に以下の様なエラーになってしまいました。
仮想サーバー側でMACアドレスのマッピングを無効にしてからBoxを作成すればエラーにはなりませんでした。
Boxはvagrant packageを実行するだけで簡単に作成できますが、私の環境ですと、事前に仮想サーバー側のネットワークインターフェースとMACアドレスのマッピング機能を無効にしておかないと、作成したBoxから仮想サーバーを起動した際に以下の様なエラーになってしまいました。
[default] Configuring and enabling network interfaces…
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
ARPCHECK=no /sbin/ifup eth1 2> /dev/null
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
ARPCHECK=no /sbin/ifup eth1 2> /dev/null
仮想サーバー側でMACアドレスのマッピングを無効にしてからBoxを作成すればエラーにはなりませんでした。
$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules