2015/06/10

Mac OS X YosemiteでのVagrant環境構築と基本的な使い方

はじめに

Vagrantとは、仮想マシンの作成や環境構築、仮想マシンの破棄までを自動化するツールです。Vagrant用の構成情報を記述した設定ファイルを用意して、vagrant用の様々なコマンドを実行するだけで仮想ディスクイメージのダウンロードや仮想マシンの作成および起動、停止、ssh接続等が実行できます。

Vagrantを利用することで、同一構成の複数の仮想マシンを簡単に作成できます。テスト用の仮想環境が必要な場合に利用されることが多いようです。 作成した仮想マシンはコマンドで簡単に破棄できるため、実運用環境をVagrantで作成することは推奨されていません。

Vagrant自体には仮想化に関する機能は搭載されていないため、別途仮想化ソフトウェアが必要です。現在公開されている最新版であるVagrant 1.7系ではVirtualBoxがデフォルトで利用可能な仮想化ソフトウェアとなっておりますが、DockerやHyper-Vもサポートされているようです。また、別途プラグインを導入することでVMwareやXen、KVM、AWSも利用可能になります。

Vagrant環境構築

Vagrantのダウンロードとインストール

公式サイトから、 Vagrantのdmgをダウンロードしてインストールします。

インストールするとインストール実行ユーザのホームディレクトリに.vagrant.dフォルダが作成されます。 これがVagrantのホームディレクトリとなっております。 Vagrantのホームディレクトリを変更するには環境変数VAGRANT_HOMEにディレクトリを設定します。

※.vagrant.d以下のディレクトリ
.vagrant.d
        boxes
        data 
        gems
        insecure_private_key
        rgloader
        setup_version
        tmp
VitualBoxのダウンロードとインストール

VirtualBoxを公式サイトからダウンロードしてインストールします。

Box(Vagrantで利用するイメージファイル)の追加

Vagrantで利用する仮想マシンイメージファイルをBoxといいます。

boxはvagrant box addコマンドによってVagrantに追加されます。このコマンドは、複数のVagrantにてboxを再利用するために、特定の名前でboxを保存します。

boxは下記の公式サイトから取得します。

以下は、CentOS 6.5のboxファイルをcentos65という名前でVagrant上に保存します。取得したファイルは~/.vagrant.d/boxes/へ保存されます。

$ 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

vagrant box listコマンドで登録されているboxファイルの一覧を確認できます。

$ vagrant box list
centos65                         (virtualbox, 0)
Vagrant環境作成

Vagrantでは、Vagrantfileというファイルに、作成する仮想マシンの設定情報を記述します。 vagrant initコマンドを実行することで、Vagrantfileが生成されます。これによってカレントディレクトリをVagrant環境にするために初期化されます。

以下にCentOS6.5のVirtualBox仮想マシン用のVagrant環境作成用ディレクトリを作成します。

$ mkdir -p ~/Work/vagrant/CentOS65
$ cd ~/Work/vagrant/CentOS65

使用するboxファイルを指定してvagrant initコマンドを実行します。これによって使用するboxファイルに合ったVagrantfileが作成されます。

$ vagrant init centos65
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.
仮想マシンの起動

Vagrantfileを作成したディレクトリ内でvagrant upを実行して仮想マシンを作成して起動できます。

$ 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_1443274625036_48248
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /Users/shimizu/WORK/vagrant

起動するとVirtualBoxのディレクトリ($HOME/VirtualBox\ VMs/)配下にファイルやvmdkファイルなどが作成されます。

仮想マシンへのSSH接続

vagrant sshコマンドで仮想マシン環境へssh接続できます。

$ vagrant ssh
[vagrant@vagrant-centos65 ~]$
[vagrant@vagrant-centos65 ~]$ exit
logout
Connection to 127.0.0.1 closed.
仮想マシンの停止

vagrant haltコマンドで仮想マシンを停止できます。

shimizu@MacBook-Air-Mid-2011.local ~/WORK/vagrant/centos65:$ vagrant halt
==> default: Attempting graceful shutdown of VM...

おわりに

以上、Vagrantの基本的な使い方です。

0 Comments:

コメントを投稿