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

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

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

Cloud Foundryを使うには

 繰り返しますが、サービスを利用する一番簡単な方法は、GoPivotal社が提供しているサービス「cloudfoundry.com」を利用することです。「Hosted Developer Edition Pricing | Cloud Foundry」によると、「60 days free with 2 GB of app memory」ということで2カ月間は試用として無料で使えます。試用期間を過ぎると有料になります。

 ちなみに、筆者はv1からのアカウントがあったので、すぐにv2は使えましたが、新規申し込みの場合は使えるようになるまで時間がかかることもあります。その場合は、後で説明するローカルの環境で動かすところからやってみてもいいでしょう。

 なお、Webアプリを動かせるようになるまでには、次のステップが必要です。ハードウェアなどを用意したり実行環境の構築が不要なのでPaaSは便利ですね。

  1. Cloud Foundry Hosted Developer Editionにユーザー登録
  2. ローカルマシンにRubyと専用コマンドツールをインストール
  3. Webアプリを用意
  4. Cloud Foundry Hosted Developer Editionの環境へWebアプリをデプロイ

 cloudfoundry.comを利用しなくても、自前でCloud Foundryの環境を構築する方法もあります。オープンソースで公開されていますから、自分でいろいろと調べて環境を構築してもいいでしょう。v1のころはMicro Cloud Foundryや「vcap/dev_setup at dev_setup · cloudfoundry/vcap」で公開されている「dev_setup」を使うのが手軽でした。

 Micro Cloud Foundryが手軽だったのですが、そちらの開発は終わったようで、現在は代わりに「Vagrant」や「BOSH」を利用して構築することが推奨されています。

 Vagrantを使う場合は「Altoros/cf-vagrant-installer」にある内容に従ってVirtualBox上の仮想マシン1台に簡単に環境構築ができます。

Vagrant

 BOSHを使う場合は「cloudfoundry/bosh」にある内容に従ってAWSやOpenStack上に環境構築ができるようです。Vagrantを使う方法が手軽なので、後ほど紹介します。

cloudfoundry.comの利用

 まずは、Cloud Foundry Hosted Developer Editionへユーザー登録をするため、「Cloud Foundry [BETA]」から申請します。登録に当たってはメールアドレスが必要です。サイトは英語ですがユーザー登録は簡単なので悩むことはないでしょう。ユーザー登録ができたら、「Cloud Foundry console」を開いて、メニューの[ORG-SETTINGS]をクリックして表示される画面でOrganization Nameを登録しておきます。ここでは、「user001-org」で登録したとします。

Rubyと専用コマンドツールをインストール

 次にローカルマシンにRubyと専用コマンドツールをインストールします。Cloud Foundryでは作成したWebアプリをデプロイしたりするために、「cf」という専用のコマンドラインツールが提供されています。Cloud Foundry v1では「VMC」というコマンドラインツールを使っていましたが、v2からは「cf」に置き換わっています。Rubyで実装されているツールなので、まずはRubyが必要です。

 ここではWindows 7 64bitへRuby 1.9.3をインストールする手順を説明をします。

 Windows7 64bitへRubyをインストールするには「RubyInstaller for Windows」を使います。ダウンロードページからインストーラの「rubyinstaller-1.9.3-p448.exe」と開発キット用インストーラ「DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe」を入手します。

 rubyinstaller-1.9.3-p448.exeを実行すると、インストーラのウィザード画面が表示されるので、指示に従ってインストールをします。ここでは、「C:\applications\Ruby193」へインストールしました。インストールができたら、次の手順で環境変数「PATH」に「C:\applications\Ruby193\bin」を指定します。

  1. Windowsメニューから[コンピューター]を右クリックし[プロパティ]を指定
  2. [システムの情報]が表示されるので、左メニューの一覧から[システムの詳細設定]をクリック
  3. 「システムのプロパティ]ダイアログが表示されるので[詳細設定]タブを表示
  4. 画面内にある[環境変数]をクリックして「環境変数]ダイアログを表示
  5. ユーザー環境変数に「PATH」がある場合はその行を選んで[編集]をクリック、ない場合は[新規]をクリック
  6. 変数名へ「PATH」を、変数値へ「%PATH%;C:\applications\Ruby193\bin」を指定して[OK]をクリック

 次に、開発キットをインストールします。「DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe」を実行すると自己解凍するので、「C:\applications\Ruby193」へ展開します。展開すると、「C:\applications\Ruby193」の配下は次のようになります。「devkitvars.bat」「msys.bat」といったファイルがあることを確認しましょう。

    Ruby193/
        ├── bin/
        ├── doc/
        ├── etc/
        ├── include/
        ├── lib/
        ├── mingw/
        ├── postinstall/
        ├── sbin/
        ├── share/
        ├── config.yml
        ├── devkitvars.bat
        ├── devkitvars.ps1
        ├── dk.rb
        ├── m.ico
        ├── msys.bat
        ├── msys.ico
        ├── unins000.dat
        ├── unins000.exe
        └── unins000.msg

 次にコマンドプロンプトを起動します。RubyInstaller Development Kit(DevKit)の初期化とインストールするために、次のようにコマンドを実行しましょう。

    > cd C:\applications\Ruby193
    > ruby dk.rb init
    > ruby dk.rb install

 RubyとDevKitのインストールができたら、gemをアップデートしてからcfコマンドラインツールをインストールします。コマンドプロンプトで次のようにします。

    > gem update
    > gem install cf

 コマンドプロンプト画面で「Successfully installed」というメッセージが表示されたらインストールは成功です。

cfによるログイン

 cloudfoundry.comで提供されるサービスを利用するには、次のように「api.run.pivotal.io」をCloud Foundryのターゲットとして設定してログインをします。

 ここでは例として「user001@example.jp」としていますが、実際にcloudfoundry.comへ登録したメールアドレスとパスワードを指定してください。認証が成功したら、使用するSpaceを指定するためのプロンプトが表示されます。ここでは1のdevelopmentを指定しています。

    > cf target api.run.pivotal.io
    Setting target to https://api.run.pivotal.io... OK
    
    > cf login
    target: https://api.run.pivotal.io
    
    Email> user001@example.jp
    
    Password> ********
    
    Authenticating... OK
    1: development
    2: production
    3: staging
    Space> 1
    
    Switching to space development... OK

 Cloud Foundry v2では、デフォルトで「development」「production」「staging」という3つの「Space」を利用できます。Spaceとは、Cloud Foundryで実行するWebアプリケーションとそれに関係するプロセス専用のコンテナのことです。

 cfコマンドでログインをしていれば、「passwd」コマンドを使ったパスワードの変更や、「push」コマンドを使ったアプリのデプロイができます。次の例ではパスワード変更をしています。

    > cf passwd
    Current Password> *********
    
    New Password> *********
    
    Verify Password> *********
    
    Your password strength is: good
    Changing password... OK

 他にもいろいろなコマンドがあります。cfコマンドについてヘルプを見たい場合は、「help」コマンドを実行します。より多くのヘルプを見たい場合は「cf Command Line Interface」を参照しましょう。

    > cf help

 説明を先に進める前に、終了方法を説明しておきます。ログイン状態を終了するには、logoutコマンドを実行してログアウトをします。

    > cf logout

Webアプリ作成

 cfコマンドラインツールの動作確認ができたので、デプロイするWebアプリを作成しましょう。ここでは、簡単に動作確認ができるRubyのSinatraアプリを用意します。コマンドプロンプトを起動して、次のようにbundleとsinatraをインストールします。

    > gem install bundle sinatra

 次に、サンプルアプリを置く「C:\workspace\cloudfoundry-sample-app」フォルダを作成します。さらに、このフォルダ内にsinatra-sampleフォルダを作成します。ここへ「Gemfile」「config.ru」「hello.rb」「manifest.yml」ファイルを作成します。

 なお、ファイル作成に当たって、Windows 7をデフォルトの設定で使っているとGemfileという名前のファイルを作成したつもりが、「Gemfile.txt」というファイル名で作成されてしまったりすることがあります。あらかじめエクスプローラでフォルダオプションを開いて「登録されている拡張子は表示しない」のチェックをはずしておきましょう。また、Windows 7に付属のメモ帳で作成することもできますが改行コードをUNIXのものにできるエディタがあるなら、そちらを使いましょう。

 以下は、「Gemfile」の中身です。利用するgemの情報を記載しています。

    source 'https://rubygems.org'
    ruby '1.9.3'
    gem 'sinatra'

 以下は、「config.ru」の中身です。Rackの設定ファイルで、Sinatraのアプリケーションを実行すると指定しています。

    require './hello'
    run Sinatra::Application

 以下は、「hello.rb」の中身です。実際の処理について記述してあり、「Hello Cloud Foundry」という文字列と実行環境におけるメモリ制限値を表示するようにしています。

    require 'rubygems'
    require 'sinatra'
    get '/' do
      memory_limit= ENV['MEMORY_LIMIT']
      "Hello Cloud Foundry<br />MEMORY_LIMIT:#{memory_limit}"
    end

 以下は、「manifest.yml」の中身です。実行に当たって必要な情報を指定しています。

    ---
    applications:
    - name: a1-user001-org
      memory: 256M
      instances: 1
      host: a1-user001-org
      domain: cfapps.io
      path: .

 「name」にはアプリケーション名、「host」にはURLで使われるホスト名を指定します。ここでは、他のユーザーが使っているものと衝突しないように「user001-org」という文字列を含めています。自分が指定した値を使うようにしてください。「memory」は使用するメモリ量、「instances」は使用するインスタンス数を指定しています。これらは大きい方が性能が上がりますが、有料となったときにその分費用が高くなります。「domain」はデフォルトのcfaapps.ioを指定しています。「path」はプログラムのベースとなるディレクトリを指定しています。

 ファイルが用意できたら、コマンドプロンプトで用意したファイルを含む「sinatra-sample」フォルダをカレントにします。「Gemfile.lock」ファイルを生成するために「bundle」コマンドを実行します。

    > cd C:\workspace\cloudfoundry-sample-app\sinatra-sample
    > bundle

 ローカルで実行するには次のようにします。「WEBrick」が起動して使用しているポート番号を「port=4567」のようにコマンドプロンプトへ出力します。WEBrickが起動したら、「http://localhost:4567/」にWebブラウザでアクセスするとhello.rbの実行結果が表示されます。

    > ruby hello.rb
    [2013-07-26 12:10:48] INFO  WEBrick 1.3.1
    [2013-07-26 12:10:48] INFO  ruby 1.9.3 (2013-06-27) [i386-mingw32]
    == Sinatra/1.4.3 has taken the stage on 4567 for development with backup from WE
    Brick
    [2013-07-26 12:10:48] INFO  WEBrick::HTTPServer#start: pid=5264 port=4567    
図2 sinatraアプリのローカルでの実行結果

 以上で準備は完了です。

Cloud FoundryへWebアプリをデプロイ

 それではCloud FoundryへWebアプリをデプロイしてみましょう。デプロイは簡単で、「cf push」をするだけです。ログインをしていない場合は忘れずに「cf login」をしましょう。pushによるWebアプリのデプロイが成功すると、「Push successful!」というメッセージと一緒に有効になったURLが表示されます。また、appsコマンドを実行すると結果にWebアプリが表示されます。

    > cd C:\workspace\cloudfoundry-sample-app\sinatra-sample
    > cf login
    (略)
    > cf push
    (略)
    Push successful! App 'a1-user001-org' available at http://a1-user001-org.cfapps.io
    > cf apps
    Getting applications in development... OK
    
    name             status    usage      url
    a1-user001-org   running   1 x 256M   a1-user001-org.cfapps.io

 実際にWebブラウザから「http://a1-user001-org.cfapps.io」へアクセスしてみると、作成したプログラムが動作していることが確認できます。

図3 http://a1-user001-org.cfapps.ioの実行結果

 Cloud Foundryがどういうものか分かったところで、次ページからはVagrantを使ってCloud Foundryの環境を自前で構築してみましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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