連載
» 2013年07月31日 18時00分 公開

Vagrantで手軽に構築してオープンPaaS「Cloud Foundry」を理解するDevOps時代のJavaプログラマのためのオープンクラウド入門(2)(3/4 ページ)

[小山博史,SSS(G)/ガリレオ]

Vagrantによる仮想マシンへのCloud Foundryインストール

 VagrantはMITライセンスのオープンソースソフトウェアです。Vargrantを使うと手軽に開発環境を仮想マシン上に構築できます。

Vagrantのインストール

 まず、「Vagrant」から利用しているOSに応じてVargrantのインストール用ファイルを取得します。ここではWindows用の「Vagrant_1.2.4.msi」をダウンロードしました。このファイルをダブルクリックして実行すると、インストーラが起動するので、ウィザードに従って「C:\applications\HashiCorp\Vagrant\」へインストールします。インストール後にWindows 7の再起動が必要です。

 インストールができたら、「C:\applications\HashiCorp\Vagrant\bin」を環境変数「PATH」に追加します。先ほどRuby 1.9.3をインストールしたときに設定した環境変数PATHに、この値を追加するので、変数値が「%PATH%;C:\applications\Ruby193\bin;C:\applications\HashiCorp\Vagrant\bin」となります。

 環境変数PATHを設定したら、コマンドプロンプトを起動してVargrantの次のプラグインをインストールします。

    > vagrant plugin install vagrant-berkshelf
    > vagrant plugin install vagrant-omnibus

 なお、Vagrantをインストールすると、インストールしたフォルダに「embedded」というフォルダができていて、Ruby、MinGW、Msysといったソフトウェアが同梱されていることが分かります。これらは、vagrantのコマンドを使うときに内部的に利用されます。

VirtualBoxのインストール

 次にVagarantが環境を構築する仮想マシン環境が必要です。「VMware Fusion」「VMware Workstation」を使うこともできますが、ここではデフォルトで対応している「VirtualBox」を使います。

 「Oracle VM VirtualBox」サイトの「Downloads」ページからWindows版をダウンロードします。ここでは記事執筆時点での最新バージョンである「VirtualBox-4.2.16-86992-Win.exe」をダウンロードしました。

 インストールの詳細については省略しますが、インストーラを起動してウィザードに従います。途中警告が表示されますが、VirtualBoxを使うために必要なので基本的に[はい]を選択して進めます。

Git for Windowsのインストール

 Vargrantを利用してCloud Foundryの環境を構築する専用インストーラがGitHubで公開されています。「git」コマンドで取得するのが簡単です。gitが使える環境になっていない場合は用意しましょう。ここでは、「Git for Windows」を使うことにして、ここから「Git-1.8.1.2-preview20130201.exe」をダウンロードしてインストールします。

 インストーラを起動したらウィザードに従います。[Adjusting your PATH environment]ダイアログでは「Run Git from the Windows Command Prompt」を選択します。また、[Configuring the line ending conversions]ダイアログでは「Checkout as-is, commit Unix-style line ending」を選択します。他はデフォルトのままにします。これでGitが使えるようになります。

 コマンドプロンプトを新しく起動してgitコマンドでバージョン表示をしてみましょう。

    > git --version
    git version 1.8.1.msysgit.1

MinGW+OpenSSHのインストール

 ローカルにCloud Foundryの環境を構築したら、「OpenSSH」「Putty」などのSSHクライアントでリモートログインをして利用することになります。「ssh」コマンドが使える環境になっていない場合は用意しましょう。ここでは、OpenSSHを使うことにします。

 OpenSSHを使うためには「MinGW」が必要です。MinGWはVagrantにも含まれますし、Ruby 1.9.3のDevkitにも同梱されていますが、どちらもOpenSSHがありません。そこへ追加インストールして使うこともできなくはありませんが、MinGWを別途インストールした方が簡単に用意できます。ここでは、MinGWをインストールして、そこへmsys-opensshを追加インストールすることにします。

 MinGWは「MinGW | Minimalist GNU for Windows」で公開されています。インストーラのダウンロードはsourceforge.netのサイト「Installer/mingw-get-inst at SourceForge.net」からします。ここでは「mingw-get-inst-20120426.exe」を入手しました。

 インストール先は、ここでは「C:\applications\MinGW」としました。インストールウィザードの途中で「Select Components」という画面で「MSYS Basic System」「MinGW Developer ToolKit」のチェックを追加して、Msysもインストールしました(図4)。

図4 http://hello.vcap.me/の実行結果

 これでWindowsのスタートメニューで「すべてのプログラム」を指定すると一覧に「MinGW」が表れ、その中にある「MinGW Shell」をクリックして簡単にMinGWのシェルを使えるようになります。

 次にMinGW Shellを起動して、「mingw-get」コマンドを使ってパッケージ情報の更新とすでにインストールされているパッケージの更新をします。その後に、「msys-openssh」をインストールします。具体的には次のようにします。

    $ mingw-get update
    $ mingw-get upgrade
    $ mingw-get install msys-openssh

 これでMinGW Shellでsshコマンドが使えるようになります。

cf-vagrant-installerで仮想ゲストマシン作成

 いよいよCloud Foundryが稼働する仮想マシンを用意します。まずは「cf-vagrant-installer」を置くためのフォルダ「C:\workspace\vagrant」を作成しておきましょう。フォルダが用意できたら、コマンドプロンプトを新しく起動して、次のようにしてcf-vagrant-installerを取得してからインストールをします。

    > cd C:\workspace\vagrant
    > git clone https://github.com/Altoros/cf-vagrant-installer.git
    > cd cf-vagrant-installer
    > rake host:bootstrap

 これでVagrantが提供する仮想マシンをVirtualBoxへ追加できる準備が完了しました。次のコマンドでVirtualBoxへcf-vagrant-installerの仮想マシンを追加します。この処理は時間がかかります。

    > vagrant up

 途中、セキュリティの警告が出ますが、Windows 7からVirtualBoxの仮想マシンへのアクセスをできるようにするために、そのまま進める必要があります。インストールが終わると、cf-vagrant-installerの仮想マシンがVirtualBoxのゲストマシンとして登録されます。本稿では、これを「cf-vagrantマシン」と呼ぶことにします。vagrantコマンドで、cf-vagrantマシンを停止したりできます。次のコマンドを覚えておくと良いでしょう。

  • up:起動
  • suspend:状態を保存して一時停止
  • resume:一時停止から復帰
  • halt:停止
  • destroy:仮想マシンの削除

cf-vagrantへのSSHログイン

 cf-vagrantマシンへはSSHを使ってリモートログインをします。VirtualBoxを起動してcf-vagrantマシンが実行中となっていることを確認してから、コマンドプロンプトを起動して、「vagrant ssh」とコマンドを入力してみましょう。

    > vagrant ssh
    `ssh` executable not found in any directories in the %PATH% variable. Is an
    SSH client installed? Try installing Cygwin, MinGW or Git, all of which
    contain an SSH client. Or use the PuTTY SSH client with the following
    authentication information shown below:
    
    Host: 127.0.0.1
    Port: 2222
    Username: vagrant
    Private key: C:/Users/user001/.vagrant.d/insecure_private_key

 VagrantにSSHクライアントが組み込まれていないのでエラーで終了してしまいますが、エラー表示の最後の4行はSSHアクセスするために必要な情報となります。なお、Private keyの値は使っているWindows 7のアカウントによって変わりますから、自分の環境のものを使うようにしてください。

 SSHアクセスするために必要な情報が分かったのでMinGW Shellを起動してSSHリモートログインをします。具体的には下記のようにします。「-i」の後にPrivate keyの値を指定しています。途中でyesかnoか聞かれるので「yes」と入力してEnterしましょう。最後に「vagrant@precise64:~$」となってcf-vagrantマシンのプロンプトが表示されれば成功です。

    $ ssh -p 2222 -l vagrant -i /c/Users/user001/.vagrant.d/insecure_private_key 127.0.0.1
    (略)
    Are you sure you want to continue connecting (yes/no)? yes
    (略)
    vagrant@precise64:~$

 ログインをすると、Cloud Foundryを開始したり停止したりする下記のコマンドが使えます。インストールした直後はCloud Foundryは開始しているので、停止、開始の順で実行してみましょう。

    $ cd /vagrant
    $ ./stop.sh
    $ ./start.sh

 念のため説明をしておくと、SSHリモートログインからログアウトするにはexitとします。ここではログアウトせずに作業を続けます。

    $ exit

 次にspaceの作成、ドメインの設定などを行います。そのためにはcf-vagrantマシンの/vagrantをカレントとして、「rake cf:init_cf_cli」コマンドを実行します。これで、ユーザー「admin」が用意され、「http://127.0.0.1:8181」のURLをターゲットに設定されたcfコマンドラインツールの環境が用意されます。

    $ cd /vagrant
    $ rake cf:init_cf_cli
    ==> Initializing cf CLI
    Setting target to http://127.0.0.1:8181... OK
    target: http://127.0.0.1:8181
    (略)
    Target Information (where will apps be pushed):
      CF instance: http://127.0.0.1:8181 (API version: 2)
      user: admin
      target app space: myspace (org: myorg)

 cf-vagrantマシンは指定したフォルダをWindows 7と共有します。ここではWindows 7の「C:\workspace\vagrant\cf-vagrant-installer」がcf-vagrantマシンの/vagrantに対応しています。

 ここにはsinatraのサンプルWebアプリが含まれているので、これを動かしてみます。内容は先ほど作成したsinatraアプリとほとんど同じなので、コードの説明は省略します。具体的には次のようにコマンドを実行します。

    $ cd /vagrant/test-apps/sinatra-test-app
    $ cf push
    (略)
    Push successful! App 'hello' available at http://hello.vcap.me

 「Push successful!」の行が表示されたら「cf push」コマンドの実行は成功です。Windows 7からアクセスしてみましょう。デプロイしたWebアプリは「http://hello.vcap.me」というURLでアクセスされたときに実行されるようになっているので、「hello.vcap.me」という名前でアクセスできるように設定が必要になります。そのために、「C:\Windows\System32\drivers\etc\hosts」の最終行へ下記を追加します。ファイルを編集するにはメモ帳のアプリケーションを「管理者として実行」すると良いでしょう。

    127.0.0.1    hello.vcap.me

 ここで、cf-vagrantマシンのポート番号80は、Windows 7マシンのポート番号8080とつながっています。ですから、Windows 7のWebブラウザから「http://hello.vcap.me:8080/」へアクセスすると、Vagrantに含まれるsinatraのサンプルWebアプリへアクセスができます。もしくは、SSHポートフォワードを使う方法もあります。MinGW Shellを起動して、次のようにしてから、Windows7 のWebブラウザから「http://hello.vcap.me/」へアクセスします(図5)。

    $ ssh -p 2222 -f -N -L80:localhost:80 -l vagrant -i /c/Users/user001/.vagrant.d/insecure_private_key 127.0.0.1
図5 http://hello.vcap.me/の実行結果

 ここではデフォルトの設定のままインストールをしたので、ドメインが「vcap.me」となっていますが、カスタマイズも可能です。「C:\workspace\vagrant\cf-vagrant-installer\custom_config_files」にカスタム用のファイルがあります。ドメインは、このフォルダの下にある「cloud_controller_ng\cloud_controller.yml」ファイルで指定できるようです。興味がある場合はカスタマイズに挑戦してみるといいでしょう。

 以上、Cloud Foundryを使う方法を説明しました。cloudfoundry.comを使うと簡単にWebアプリをデプロイしてインターネット上でサービスを利用できるようになることが分かったと思います。

 また、Vagrantを使うと簡単にCloud Foundryをローカルで体験できました。Vagrantで構築したCloud FoundryへSSHログインすれば、実際にCloud Foundryではどのようなプロセスが起動して、どのように処理をされているのかを調べることもできます。それぞれの環境をうまく利用して興味を持った点について調べてみるといいでしょう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。