VirtualBoxとVagrantで仮想マシン作成

本記事のポイント

イメージファイルで開発環境シェアという発想は、ローカルPC上で開発環境を構築して共同開発する場合に、互換性からくるエラーのリスクが減らすということであり、GitのリモートリポジトリのホスティングサービスであるGithubから、WordPress開発環境のboxイメージであるVagrant Chef Centos WordPress(VCCW)リポジトリのパッケージを、仮想化ソフトVirtual Boxの中で展開(GITをクローン)します。

このためにVagrant本体と設定ファイルであるVagrantfileでもって、WindowsのVirtualBox内でCentOS上のWordPress環境を構築します。

仮想環境構築の流れ

話の流れを整理するとこんな感じです。

  1. Windows内でIISとApache⇒切り替えが面倒
  2. Windows内でIIS、仮想化ソフトでLinux&Apache&MySQL環境(仮想マシン)を構築⇒作業が大変
  3. Windows内でIIS、仮想化ソフトでテンプレート使って環境(仮想マシン)構築⇒楽チン

テンプレート(イメージファイル)で開発環境シェアという発想は、ローカルPC上で開発環境をシェアして、互換性からくるエラーのリスクが減らすということであり、仕組みとして必要になるのは以下の4つになります。

  1. 仮想化ソフト(VM)
  2. Vagrant本体
  3. Vagrantファイル
  4. boxテンプレート

仮想化ソフト(プロバイダー)はOracleのVirtualBoxを使う事例が圧倒的に多いようなので、今は使っていないVM WareをアンインストールしてOracleのVirtualBoxをインストールしました。

またVagrant本体と設定ファイルであるVagrantfileでもって、開発環境のテンプレートであるboxを仮想化ソフトに展開し、仮想マシンを作成します。

WordPress開発環境のboxイメージとして有名なVCCW(Vagrant Chef Centos Wordress)のGITをクローンしますが、実行時にPC側のBIOSの仮想化支援機能をEnableにしておかないと、SSH接続時にエラーが出ます。

これだけでWindowsのVirtualBox上でCentOSを動かし、Chefを使ってWordPress環境を自動構築するという管理をVagrantで行なうことができます。

Cygwin64 Terminal

ローカルWindows環境から一歩インターネットの世界に出ると、サーバーのほとんどがUNIXであるため、Windowsで使える端末エミュレータ(ターミナル+シェル)と言えば、必然的にUNIX(カーネル)に繋いでCUIターミナル上で操作するもの、ということになります。

emulateは「真似る」という意味であり、一般的にエミュレーションとはWindows上のターミナルから打ち込んだシェルコマンドでUNIXカーネルを操作することであり、操作対象となるUNIXはインターネット上のサーバーにあったり、ローカルPC内の仮想マシンにあったりしますが、リモートであろうとローカルであろうと、SSH通信接続が主流です。

MacはもともとUNIXベースなのでデフォルトでターミナルというUNIX端末エミュレータが付いていますが、Windows7にはデフォルトの端末エミュレータとしてPowerShellというのがありますが、如何せんコマンドがWindows専用、UNIX互換コマンドライン環境はありません。

自分の場合、VPSサーバー操作のためにPuTTYはインストールしていますが、いかんせんPuTTYはリモートSSH接続するときのターミナルの通信機能だけ切り取ったようなソフトなので、今回の仮想マシン作成のためにCygwin64をインストールしました。

ただし仮想マシン用のboxテンプレートはGITをクローンするので、Cygwin64でgitコマンドが使えるようにGITをインストールしておく必要があります。

仮想マシンの実行プロセス

まずクローンしたboxを確認します。

VCCWのGITをクローンした時点でvagrantfileも同梱されていますので、initで初期化してvagrantfileを作成しようとすると「既に存在します」と怒られます。

vagrantの初回起動時に、GITをクローンしたvccw.devというboxイメージをプロバイダーであるVirtualBoxにaddすることにより、virtualbox上で起動するようになります。

またvagrantfileの設定に基づいて必要なリソースをダウンロードするプロビジョニング(Provisioning)が実行されますので、起動するまで時間がかかります。

プロビジョニングとは本来、ネットワークやコンピューターの設備などのリソースを提供できるよう予測し準備しておくことであり、供給や設備等の意味を表すプロビジョン(provision)という単語がもととなって派生した言葉です。

これで仮想マシンが起動しましたので、ホストPC上からhttp://192.168.33.10/でWordPressが起動し、物理ファイルはboxディレクトリ内の/www/wordpressに存在します。

ちなみに2回目以降のvagrantの起動はあっさり終わります。

一回仮想マシンを削除した後に再度vagrantを起動するとまた少し時間がかかります。

vagrantファイル

ホストPCから仮想マシンのhttpdサーバーにアクセスするためのIPアドレス192.168.33.10というのはvagrantfileから呼び出している設定ファイル/provision/default.yml内に定義されています。

仮想マシンへの接続

仮想マシンとしてCentOSのApacheサーバー上でのWordPress環境が起動し、ホストPCからアクセスできるようになりましたが、仮想マシンへの接続は、vagrantの専用コマンドvagrant sshがあります。

これはVirtualBoxで起動しているウィンドウ内のCentOSからユーザーID:vagrant, パスワード:vagrantでログインしているのと同じです。
centos

ステータスの確認

仮想マシン起動前

仮想マシン起動後
仮想マシン削除後