Vagrant で CentOS

環境

*PC
    *iMac(OSX10.9)
*仮想化ソフト
    *VirtualBox4.3.6
*Vagrant
    *1.4.3

Vagrant のインストール

Download Vagrantからダウンロード。普通のインストーラになっているので、そのままダブルクリックでインストールしました。

Box の取得

Vagrant では仮想マシンを立ち上げるためにテンプレートとなるファイル(Box)が必要となるので、Boxをダウンロードします。

今回は、CentOS6.5のBoxが欲しかったので、探したところVagrantbox.esというサイトにたくさんのBoxが載っていたのでそこから取得しました。

Box を追加するには以下のコマンドを入力します。

#{title}という名前で、{url}にあるBoxを追加する
$ vagrant box add {title} {url}

実際に CentOS6.5 の Box を取得。

vagrant box add centos64 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
Downloading box from URL: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
Extracting box...te: 532k/s, Estimated time remaining: --:--:--)
Successfully added box 'centos64' with provider 'virtualbox'!

追加したBoxを一覧表示します。

$ vagrant box list
centos64 (virtualbox)

仮想マシンの作成

仮想マシンを作成するには専用のディレクトリが必要です。ディレクトリ作成後、そのディレクトリの中で、vagrant init コマンドで初期化後、vagrant up コマンドを使用して仮想マシンを立ち上げます。

[12:42 AM] ~$ mkdir myCentosOSVM
[12:42 AM] ~$ cd myCentosOSVM/
[12:42 AM] ~/myCentosOSVM$ vagrant init centos64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
[12:43 AM] ~/myCentosOSVM$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'centos64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant

作成した仮想マシンssh で接続するには以下のコマンドを入力します。

[12:50 AM] ~/myCentosOSVM$ vagrant ssh
[vagrant@vagrant-centos65 ~]$ 

プロンプトが変わり、仮想マシンに接続したことがわかります。

ホスト OS から仮想マシンにアクセス

仮想マシンhttpd を立ち上げた時などに、ホスト OS から仮想マシンにアクセスする必要があります。

"vagrant ssh"コマンドでssh接続出来るのですが、ブラウザなどで Webページにアクセスする際は Vagrantfileに設定する必要が出てきます。

今回はホスト OS と仮想マシンの間でプライベートネットワークを作り、アクセス出来るようにします。そのために、 Vagrantfile の以下の部分のコメントアウトを外します。

#config.vm.network :private_network, ip: "192.168.33.10" 

Vagrantfileを編集した後は、設定を反映させるために"vagrant reload"コマンドで仮想マシンを再起動します。

再起動後、Virtualboxの方でネットワークの設定を確認すると以下の様に、ホストオンリーアダプターが追加されているのがわかります。

f:id:ryouta768:20140223021404p:plain

f:id:ryouta768:20140223021410p:plain

再起動後、"vagrant ssh"で仮想マシンに接続し、"ifconfig"してみると、NICが追加され"192.168.33.10"というIPアドレスが割り当てられているのがわかります。

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:07:9E:3D
inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe07:9e3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:316 errors:0 dropped:0 overruns:0 frame:0
TX packets:220 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
RX bytes:34568 (33.7 KiB)  TX bytes:28184 (27.5 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:FF:55:6A
inet addr:192.168.33.10  Bcast:192.168.33.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feff:556a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
RX bytes:435 (435.0 b)  TX bytes:1038 (1.0 KiB)

これで"192.168.33.10"というIPアドレスを使用すれば、ホストOSから"vagrant ssh"を使わなくても、仮想マシンに接続出来るようになりました。

下の画像は、仮想マシン上で apache2 を動かし、ホストOSのブラウザからアクセスしている様子です。

f:id:ryouta768:20140223021426p:plain