Cloud Foundryに申し込んで使えるようになったので、Spring Roo in Actionの11章を参考にRooのアプリケーションをデプロイしてみました。
まずはroo shellからCloud Foundryを走査するためのAddonをインストールします。インストールの間自動的に認証されるよう、下記コマンドを実行します。
1 roo> pgp automatic trust 2 Automatic PGP key trusting enabled (this is potentially unsafe); disable by typing 'pgp automatic trust' again
そして下記コマンドでAddonをインストールします。
1 roo> addon install bundle --bundleSymbolicName org.spring framework. roo.addon. cloud.foun dry;1.1.5.RELE ASE 2 Target resource(s): 3 ---------- --------- 4 Spring Roo - Addon - Cloud Foundry (1.1.5.RELE ASE) 5 6 Required resource(s): 7 ---------- ---------- - 8 Spring Beans (3.0.5.RELE ASE) 9 jcl-over-s lf4j (1.6.1) 10 slf4j-nop (1.6.1) 11 Spring AOP (3.0.5.RELE ASE) 12 Servlet Specificat ion API (2.5.0) 13 Spring Core (3.0.5.RELE ASE) 14 Jackson JSON processor (1.6.2) 15 Data mapper for Jackson JSON processor (1.6.2) 16 Spring Context (3.0.5.RELE ASE) 17 Spring Roo - Wrapping - aopallianc e (1.0.0.0010 ) 18 Spring Web (3.0.5.RELE ASE) 19 slf4j-api (1.6.1) 20 Spring Roo - Wrapping - Cloud Foundry API (0.0.1.0010 ) 21 22 Optional resource(s): 23 ---------- ---------- - 24 Spring Expression Language (3.0.5.RELE ASE) 25 Spring ASM (3.0.5.RELE ASE) 26 27 Deploying. ..done. 28 29 Successful ly installed add-on: Spring Roo - Addon - Cloud Foundry [version: 1.1.5.RELE ASE] 30 [Hint] Please consider rating this add-on with the following command: 31 [Hint] addon feedback bundle --bundleSy mbolicName org.spring framework. roo.addon. cloud.foun dry --rating ... --comment ".. 32 ."
Roo in Actionの例では "addon install bundle --bundleSy
インストールが終了したら自動認証をOFFに戻します。
1 roo> pgp automatic trust 2 Automatic PGP key trusting disabled (this is the safest option)
Addonをインストールしたことでcloud foundryコマンドが使用できるようになっています。まずはCloud Foundryにログインします。
1 roo> cloud foundry login --email xxxxxxxxxx@xxxxx.xxx --password xxxxxxxxxx 2 Credential s saved. 3 Logged in successful ly with email address 'xxxxxxxxxx @xxxxx.xxx'
Cloud Foundryの環境についての情報を表示するには下記コマンドを実行します。
1 roo> cloud foundry info 2 3 4 VMware's Cloud Application Platform 5 For support visit http://sup port.cloud foundry.co m 6 7 8 Target: http://api .cloudfoun dry.com (0.999) 9 10 11 User: hiroaki.ak anuma@gmail.com 12 Usage: Memory (128MB of 2048MB total) 13 Services (0 of 16 total) 14 Apps (1 of 20 total)
現在デプロイされているアプリケーションのリストは下記コマンドで確認できます。
1 roo> cloud foundry list apps 2 3 ==================== ========== ===== Applicatio ns ========== ========== ========== ===== 4 5 Name Status Instances Services URLs 6 ---- ------ --------- -------- ---- 7 akanumahel lo STARTED 1 akanumahel lo.cloudfo undry.com
上記の出力では akanumahel
また、現在使用可能なサービスのリストは下記コマンドで確認できます。
1 roo> cloud foundry list services 2 3 ==================== === System Services ========== ========== ==== 4 5 Service Version Descriptio n 6 ------- ------- ---------- - 7 mysql 5.1 MySQL database service 8 postgresql 9.0 PostgreSQL database service (vFabric) 9 mongodb 1.8 MongoDB NoSQL store 10 redis 2.2 Redis key-value store service 11 rabbitmq 2.4 RabbitMQ messaging service 12 13 14 There are currently no provisione d services.
ではアプリケーションをデプロイしてみます。cloud foundry deploy コマンドでデプロイすることができます。
1 roo> cloud foundry deploy --appName cftest --path CREATE 2 ~~中略~~ 3 Operation could not be completed:400 Bad Request
上記のように 400 Bad Request となってしまった場合は、--appName で指定したアプリケーション名がすでに使われているということなので、アプリケーション名を変更して再度デプロイします。
1 roo> cloud foundry deploy --appName cftestaka --path CREATE 2 ~~中略~~ 3 The application 'cftestaka' was successful ly pushed
上記のように successful
1 roo> cloud foundry list apps 2 3 ==================== ========== ===== Applicatio ns ========== ========== ========== ===== 4 5 Name Status Instances Services URLs 6 ---- ------ --------- -------- ---- 7 akanumahel lo STARTED 1 akanumahel lo.cloudfo undry.com 8 cftestaka STOPPED 1 cftestaka. cloudfound ry.com
cftestakaというアプリケーションが一覧に追加されています。StatusがSTOPPEDになっていてまだ起動はしていないので、下記コマンドでアプリケーションを起動します。
1 roo> cloud foundry start app --appName cftestaka 2 The application 'cftestaka' was successful ly started 3 roo> cloud foundry list apps 4 5 ========== ========== ========== ===== Applicatio ns ========== ========== ========== ===== 6 7 Name Status Instances Services URLs 8 ---- ------ --------- -------- ---- 9 akanumahel lo STARTED 1 akanumahel lo.cloudfo undry.com 10 cftestaka STARTED 1 cftestaka. cloudfound ry.com
Status が STARTED に変わり、アプリケーションが起動されました。http://cft
稼働中のアプリケーションの統計情報については下記コマンドで確認できます。
1 roo> cloud foundry view app stats --appName cftestaka 2 3 ==================== ========== App. Stats ========== ========== ========== 4 5 Instance CPU (Cores) Memory (limit) Disk (limit) Uptime 6 -------- ---------- - ---------- ---- ---------- -- ------ 7 0 8.0 (4) 239.09M (256M) 28.0M (2048M) 0d:
さて、アプリケーションは起動しましたが、まだDBが使えるようになっていないので、Entityを操作するための画面に遷移しようとするとエラーになってしまいます。
まずはDBをサービスとして作成します。
1 roo> cloud foundry create service --serviceName cftesakadb --serviceT ype postgresql 2 The service 'cftesakadb ' was successful ly created
サービスの一覧を確認すると、= Provisione
1 roo> cloud foundry list services 2 3 ==================== === System Services ========== ========== ==== 4 5 Service Version Descriptio n 6 ------- ------- ---------- - 7 mysql 5.1 MySQL database service 8 postgresql 9.0 PostgreSQL database service (vFabric) 9 mongodb 1.8 MongoDB NoSQL store 10 redis 2.2 Redis key-value store service 11 rabbitmq 2.4 RabbitMQ messaging service 12 13 14 15 = Provisione d Services = 16 17 Name Service 18 ---- ------- 19 cftesakadb postgresql
次に、作成したサービスをアプリケーションに紐付けます。
1 roo> cloud foundry bind service --serviceName cftesakadb --appName cftestaka 2 The service 'cftesakadb ' was successful ly bound to the applicatio n 'cftestaka' 3 roo>
そしてアプリケーションを再起動します。
1 roo> cloud foundry restart app --appName cftestaka 2 The application 'cftestaka' was successful ly restarted
これでアプリケーションがDBを使えるようになり、EntityのCRUD画面も動作するようになります。
アプリケーションのログを確認するには下記コマンドを実行します。
1 roo> cloud foundry view logs --appName cftestaka --instance0
長いので出力は省略しますが、stderr.log
それと現在のメモリの割当量は下記コマンドで確認できます。
1 roo> cloud foundry view app memory --appName cftestaka 2 3 = Application Memory = 4 5 Name Memory 6 ---- ------ 7 cftestaka 256MB
現在は256MBのメモリが割り当てられています。この割当量を変更するには下記のようにコマンドを実行します。
1 roo> cloud foundry update app memory --appName cftestaka --memSize 512MB 2 3 = Application Memory = 4 5 Name Memory 6 ---- ------ 7 cftestaka 512MB
メモリ量が512MBに変更されました。
RooとCloud Foundryの組み合わせなら簡単なCRUDアプリの公開はとてもスピーディーに行うことができそうです。まだCloud Foundryはベータ版なので、正式版になったときに料金体系などがどうなるかは気になりますが、Roo + Cloud Foundryで何か公開できるようなサービスでも作れないかなぁと思っています。