Cloud Foundryを試しました。

VMware の CloudFoundry は Rails が動くということで、英語をがんばって読んで、アカウント登録をしました。
登録できたので、Getting Started With VMware Cloud Foundry を読みつつ、試してみました。

デプロイツール

コマンドラインで対話する vmc というツールがあるみたいです。

C:\>gem install vmc --no-ri --no-rdoc
Fetching: json_pure-1.5.3.gem (100%)
Fetching: rubyzip2-2.0.1.gem (100%)
Fetching: highline-1.6.2.gem (100%)
Fetching: mime-types-1.16.gem (100%)
Fetching: rest-client-1.6.3.gem (100%)
Fetching: terminal-table-1.4.2.gem (100%)
Fetching: vmc-0.3.12.gem (100%)
Successfully installed json_pure-1.5.3
Successfully installed rubyzip2-2.0.1
Successfully installed highline-1.6.2
Successfully installed mime-types-1.16
Successfully installed rest-client-1.6.3
Successfully installed terminal-table-1.4.2
Successfully installed vmc-0.3.12
7 gems installed
という具合に簡単にインストールすることが出来ました。

サンプルアプリ

とりあえず、チュートリアル通りに HelloWorld を作ってみます。


C:\>vmc target api.cloudfoundry.com
Succesfully targeted to http://api.cloudfoundry.com

APIのターゲット指定をするのですが、これ全員同じ設定するならデフォルトで設定しておいてくれても良い様な気がしましたが、書かれている通りに実行しました。


C:\>vmc login
Email: changesworlds@gmail.com
Password: ********
Successfully logged into http://api.cloudfoundry.com

上記で入れたパスワードはメールで普通に送られて来たものなので、以下のコマンドを実行して変えておきました。


C:\>vmc passwd
Changing password for 'changesworlds@gmail.com'
New Password: *******
Verify Password: *******

実際のアプリの作成はここからです。


C:\>cd /
C:\>mkdir hello
C:\>cd hello
(この間で以下のファイルを作成)
hello.rb

require 'sinatra'
get '/' do
"Hello from Cloud Foundry"
end

アプリが出来たら vmc push でアプリの登録&デプロイをします。
途中で聞かれる Application NameはURLやその他操作で使われるアプリ名になるみたいです。
途中でインスタンスが使用するメモリ容量を聞いてくるのですが、サンプルアプリなので最小の選択肢の64MBにしました。


C:\hello>vmc push
Would you like to deploy from the current directory? [Yn]: y
Application Name: changeworld-hello
Application Deployed URL: 'changeworld-hello.cloudfoundry.com'? y
Detected a Sinatra Application, is this correct? [Yn]: y
Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G) 64M
Creating Application: OK
Would you like to bind any services to 'changeworld-hello'? [yN]: n
Uploading Application:
Checking for available resources: OK
Packing application: OK
Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

勝手に sinatra アプリとファイルを見て判別してくれていますね。
起動ファイルも勝手に探してよきに計らってくれるみたいです。
では早速URLにアクセスしてみましょう。

http://changeworld-hello.cloudfoundry.com/

動いていますね、*1すごい!!


C:\hello>vmc runtimes

                                                                      • +
Name Description Version
                                                                      • +
java Java 6 1.6
node Node.js 0.4.5
ruby18 Ruby 1.8 1.8.7
ruby19 Ruby 1.9 1.9.2p180
                                                                      • +

C:\hello>vmc frameworks

                    • +
Name
                    • +
rails3
node
lift
sinatra
grails
spring
                    • +

C:\hello>vmc services

============== System Services ==============

                                                                                                          • +
Service Version Description
                                                                                                          • +
mongodb 1.8 MongoDB NoSQL store
mysql 5.1 MySQL database service
rabbitmq 2.4 RabbitMQ messaging service
redis 2.2 Redis key-value store service
                                                                                                          • +

=========== Provisioned Services ============

しかし、環境を調べたら上記の結果に!!

手元にちょっと作った Ruby on Rails のアプリを早速公開しようと思ったんですが、これ rails2 の sqlite3 を使っているんですよね…。あはははははは(乾いた笑い)。

さて…作り直しますか…。


C:\hello>vmc logout
Successfully logged out of http://api.cloudfoundry.com

最後にログアウトして終了です。次回接続時は vmc target api.cloudfoundry.com は不要で、ログインから実行すれば良い様です。

*1:Cloud Foundryは