Mac OS X 10.9(Mavericks)にVagrantを導入

公開日: : 最終更新日:2014/09/02 Mac , ,

Vagrantの説明は省略しますw
詳しくはVagrantのサイトを参照してください。

事前準備としてVirtualBoxが必要なので準備しておきます。

Vagrantのインストール

ダウンロードページから目的のMac用イメージをダウンロードします。
この記事の投稿時は、バージョンが1.6.3でした。
画面の赤い四角で囲った部分のリンクをクリックするとダウンロードが開始します。
スクリーンショット 2014-06-16 14.21.13

ダウンロードしたdmgファイルをダブルクリックし、イメージをマウントすると下記の画面が立ち上がります。
スクリーンショット 2014-06-16 14.19.00
立ち上がった画面の右上の「Vagrant.pkg」をダブルクリックし、インストールを開始します。
スクリーンショット 2014-06-16 14.19.20
途中は省略しますが…
基本的にインストーラーに従っていればインストールは成功するはずです。
スクリーンショット 2014-06-16 14.20.10

インストールが完了したら、ターミナルで以下のように入力しバージョン番号が確認できればインストールは完了です。

$ vagrant -v
Vagrant 1.6.3


CentOS仮想マシンのインストール


Vagrantがインストール完了したら、試しにCentOSの仮想マシンを起動してみます。
Vagrantは仮想マシンイメージをBoxという単位で管理します。
Boxは有志が公開しているもの(http://www.vagrantbox.es/)を利用することも出来ますし、自身で作成することも可能です。
ここでは、公開されているBoxを利用しCentOSを立ち上げることにします。


Boxファイルの追加


まずは利用するBoxを追加します。
追加は「vagrant box add」コマンドを指定しますが、引数として以下のようにBoxの名称と公開されているURIを指定してBoxを追加します。
今回はCentOS 6.5のBoxをcentos65という名称で追加しました。

$ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Adding box 'centos65' (v0) for provider:
box: Downloading: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
box: Progress: 28% (Rate: 2059k/s, Estimated time remaining: 0:02:41)
<中略>
==> box: Successfully added box 'centos65' (v0) for 'virtual box’!
$

正常に終了すると、上記のように「Successfully」と表示されます。
Boxの追加を確認してみます。

$ vagrant box list
centos65 (virtualbox, 0)

上記のように指定した名称がリストに表示されました。


Vagrantの設定


まずは、ターミナルからVagrantの設定等々を格納するためのディレクトリを作成し、カレントディレクトリを移動します。

$ mkdir -p ~/Vagrant && cd ~/Vagrant

次に初期化をしますが、初期化の際には先に用意したBoxを指定します。

$ vagrant init centos65
A <code>Vagrantfile</code> has been placed in this directory. You are now
ready to <code>vagrant up</code> your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
<code>vagrantup.com</code> for more information on using Vagrant.
$

これで初期化は完了ですので、仮想マシンを起動してみましょう。


仮想マシンの起動


仮想マシンを起動してみます。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos65'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: Vagrant_default_1402897482481_54855
==> default: Clearing any previously set network interfaces...
<中略>
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /vagrant => /Users/hiro/Vagrant

立ち上がるまでに環境によっては少々時間がかかりますが、ものの数十秒ほどで仮想マシンが上記のように立ち上がると思います。

立ち上がったらステータスを確認してみましょう。

$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run <code>vagrant halt</code> to
shut it down forcefully, or you can run <code>vagrant suspend</code> to simply
suspend the virtual machine. In either case, to restart it again,
simply run <code>vagrant up</code>.

上記のように「running」と表示されました。
起動しているようです。


仮想マシンへのSSHでの接続


立ち上がった仮想マシンにSSHで接続してみます。

$ vagrant ssh
[vagrant@vagrant-centos65 ~]$ 

接続できました。
諸々確認してみましょう。

[vagrant@vagrant-centos65 ~]$ cat /etc/redhat-release
CentOS release 6.5 (Final)
[vagrant@vagrant-centos65 ~]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:4f:e8:36 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fe4f:e836/64 scope link
valid_lft forever preferred_lft forever
[vagrant@vagrant-centos65 ~]$ hostname
vagrant-centos65.vagrantup.com

ネットワークも設定された状態でCentOS 6.5の仮想マシンが「vagrant-centos65.vagrantup.com」というホスト名で立ち上がりました。
もちろんネットワークもNATでホストマシン経由でインターネット接続されています。

[vagrant@vagrant-centos65 ~]$ ping www.google.com
PING www.google.com (173.194.117.145) 56(84) bytes of data.
64 bytes from nrt04s09-in-f17.1e100.net (173.194.117.145): icmp_seq=1 ttl=63 time=37.9 ms
64 bytes from nrt04s09-in-f17.1e100.net (173.194.117.145): icmp_seq=2 ttl=63 time=39.1 ms

PINGも飛びますね。

このまま使い続けても良いのですが、例えばWebサーバ立ち上げて外部から接続したいときにはNat配下の仮想マシンには直接接続できません。
ですので、Vagrantの設定ファイルを変更してIPの設定を変えてみます。


IPアドレスの設定


sshでVagrantの仮想マシンに接続している場合は一旦接続を解除(exit)してください。
先ほどVagrantの初期化をしたディレクトリ配下に「Vagrantfile」という設定ファイルがありますので、これを変更します。

$ vi ~/Vagrant/Vagrantfile

ファイル内に以下のようにコメントアウトされた行が(27行目あたりに)ありますので、このコメントマークを解除してIPアドレスを設定します。

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

変更点はこの1点のみです。
以下は元のファイルを「Vagrantfile.default」として残しておき、その差分を表示しています。

$ diff ./Vagrantfile.default ./Vagrantfile
27c27
<   # config.vm.network "private_network", ip: "192.168.33.10"
---
>   config.vm.network "private_network", ip: "192.168.33.10"

コメントアウトを解除したらVagrant仮想マシンを再起動します。

$ vagrant reload
==&gt; default: Attempting graceful shutdown of VM…
<中略>
==&gt; default: Machine already provisioned. Run <code>vagrant provision</code> or use the <code>--provision</code>
==&gt; default: to force provisioning. Provisioners marked to run always will still run.

再起動が完了したら、先ほどのIPアドレスに接続できるか、PINGコマンドで確かめてみます。

$ ping 192.168.33.10
PING 192.168.33.10 (192.168.33.10): 56 data bytes
64 bytes from 192.168.33.10: icmp_seq=0 ttl=64 time=0.774 ms

反応が帰ってきますね。
Vagrant仮想マシンにSSH接続して、設定されているIPアドレスをみてみます。

$ vagrant ssh
Last login: Mon Jun 16 06:12:26 2014 from 10.0.2.2
[vagrant@vagrant-centos65 ~]$
[vagrant@vagrant-centos65 ~]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 08:00:27:4f:e8:36 brd ff:ff:ff:ff:ff:ff
  inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
  inet6 fe80::a00:27ff:fe4f:e836/64 scope link
  valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 08:00:27:4b:75:e1 brd ff:ff:ff:ff:ff:ff
  inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
  inet6 fe80::a00:27ff:fe4b:75e1/64 scope link
  valid_lft forever preferred_lft forever

eth1として新しいネットワークインターフェースが追加され、Vagrantfileで指定したIPアドレスが設定されています。
一応、ルーティングも確認してみました。

[vagrant@vagrant-centos65 ~]$ ip route show
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.33.0/24 dev eth1  proto kernel  scope link  src 192.168.33.10
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 10.0.2.2 dev eth0


仮想マシンの停止


起動しっぱなしだと、メモリも消費していますし、必要がなければ停止したくなるかと思います。
停止には、現在状態をそのままで停止(スリープ)とシャットダウンして停止の2つがあります。
それぞれコマンドは以下のとおりです。
スリープの場合は

$ vagrant suspend

停止の場合は

$ vagrant halt

ちなみにスリープからの復帰は

$ vagrant resume

で復帰します。

haltで停止した場合は、起動した時と同じように

$ vagrant up

で起動します。

また必要のなくなった仮想マシンは

$ vagrant destroy

というコマンドで削除することが出来ます。


おまけ


vagrant upやvagrant reloadしたときのメッセージで気がついた人もいるかもしれませんが、

default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key

上記のように途中メッセージで表示されている情報があります。
要は、vagrant sshというコマンドではなくともssh接続ができます。
上記の場合はIPが「127.0.0.1」(ループバックアドレス)でポート番号が「2222」。
ユーザが「vagrant」です。
また、認証ではprivate keyでの認証を指定しているので、このファイルを指定すればSSHで接続できます。
private keyは、デフォルトではユーザディレクトリの「.vagrant.d/insecure_private_key」が鍵ファイルになります。
試しに以下のように入力してみます。

$ ssh -i ~/.vagrant.d/insecure_private_key -p 2222 vagrant@127.0.0.1
Last login: Mon Jun 16 06:14:23 2014 from 10.0.2.2
[vagrant@vagrant-centos65 ~]$

SSHで接続できました。


まとめ


このように比較的簡単に非インフラエンジニアでも、インストールという面倒な作業をすることなく簡単に仮想マシンを立ち上げることができます。
初回であっても1時間もあれば、立ち上げられてしまうのではないでしょうか。
このような手軽さから非常に人気のあるVagrantです。
といっても私の場合は、VirtualBoxのイメージファイルを昔から管理し続けているのでVirtualBoxのクローンで新しい仮想マシンを立ち上げてしまいますが、コマンドラインだけで仮想マシンを立ち上げられるので便利なのではないでしょうか。

Adレクタングル[忍者ADMAX]

関連記事

Homebrew

OS X 10.9(Mavericks)にHomebrewを導入

Homebrewのインストールは実に簡単。 ただし、Homebrewインストールの準備として、

記事を読む

OS_X_Mavericks_hero_wave

Mac OS X Mavericksの初期化

日々使っているのは、Mac Book Air。 最初のうちは必要な情報と必要なツールのインストール

記事を読む

virtualbox

OS X 10.9(Mavericks)にVirtualBoxを導入

仕事柄、様々なサーバOSを扱うのですが、いきなり本番環境では試せないし…ということもあり、また手元で

記事を読む

Xcode

OS X 10.9(Mavericks)にXcodeをインストールする

Mavericksの初期化手順を書いたので、各種の環境構築手順をしばらくはメモとして記載していくこと

記事を読む

java_logo

OS X 10.9(Mavericks)にJDK(Java Development Kit)を導入

Mavericksの初期化手順を書いたので、各種の環境構築手順をしばらくはメモとして記載していくこと

記事を読む

コメントを残す

Adレクタングル[忍者ADMAX]

RabbitMQ.sh-600x600
EC2上のRabbitMQをMulti-AZで冗長化

うーん。。。ハマった。 多分、もっとErlangのこと把握できていれ

aws_logo._V400518270_
AWSでRoute 53をPrivate DNSとしてVPC内で使ってみた

Amazon Web Services(AWS)のRoute 53がV

nginx_logo
NginxでのSSL設定(もうちょっと詳しく)

単に、 とするだけではなくて…というエントリ。 ちなみにRHEL系を

→もっと見る

  • Author:
    hiro
    Work:
    インフラエンジニア
    Brief History:
    新卒後、ソフトハウスにて受託開発を中心に開発エンジニアを始める。
    数年前から現在はITインフラが専門。
PAGE TOP ↑