fbpx

Cloud Foundryを使ってみよう[7]

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

オープンソース版Cloud Foundry

Cloud Foundryには、VMware社が運営しているPaaSプラットフォームと、オープンソース版があります。

本項ではInstallation Notesを参考に、オープンソース版Cloud FoundryのインストールをUbuntu server QEMUイメージに行います。

Ubuntu Serverのインストール

Download Ubuntu ServerからUbuntu 10.04.3 server 64bit image (インストーラ ISO イメージ)を取得します。なお、Installation Notesで指定されているDownload Ubuntuはサーバ版ではないので注意してください。

QEMUイメージを作成します。

% qemu-img create -f qcow2 ubuntu-server-10.04.3.img 10G
Formatting 'ubuntu-server-10.04.3.img', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536
%

QEMUイメージとインストーラISOイメージを指定して、KVMを起動します。

% kvm -hda ubuntu-server-10.04.3.img -cdrom ubuntu-10.04.3-server-amd64.iso -boot d -m 1024

詳細な手順は省略します。インストールは30分程度で完了します。

Cloud Foundry (vcap)のインストール

Ubuntu Serverのインストールが完了したら、それを起動してログインします。その後、openssh-server と curl をインストールしておきます。

sudo aptitude openssh-server curl

なお、2012年1月現在、Installation Notesで指定されている以下の方法をそのまま実行してはいけません。

bash < <(curl -s -k -B https://raw.github.com/cloudfoundry/vcap/master/setup/install)

インストールは完了しますが、不完全な状態でCloud Foundry (vcap)は正常に動作しません。具体的には、

Installing rvm

Deprecated command, please use:

    bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Activate rvm
bash: line 72: type: rvm: not found

となり、rvm (Ruby Version Manager)のインストールに失敗しているのに、停止せずにそのまま先に進んでしまいます。メッセージにある通り、rvmのインストール方法が変更になっているためなので、その通りにインストーラを書き換える必要があります。

まず、Cloud Foundry (vcap)のインストーラを取得します。

cf@ubuntu:~$ wget https://raw.github.com/cloudfoundry/vcap/master/setup/install
--2012-01-24 21:05:46--  https://raw.github.com/cloudfoundry/vcap/master/setup/install
raw.github.com をDNSに問いあわせています... 207.97.227.243
raw.github.com|207.97.227.243|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 3993 (3.9K)

 `install' に保存中  100%[========================================>] 3,993       --.-K/s   時間 0s

 2012-01-24 21:05:47 (196 MB/s) - `install' へ保存完了 [3993/3993]

cf@ubuntu:~$

rvmのインスール箇所を書き換えます。

cf@ubuntu:~$ cp -a install install.orig
cf@ubuntu:~$ vi install
cf@ubuntu:~$ diff -u install.orig install
--- install.orig        2012-01-24 21:05:47.427425101 +0900
+++ install     2012-01-24 21:07:21.327423184 +0900
@@ -60,7 +60,7 @@
 fi

 echo "Installing rvm"
-curl -s -k -B https://rvm.beginrescueend.com/install/rvm > /tmp/install_rvm
+curl -s -k -B https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer > /tmp/install_rvm
 bash /tmp/install_rvm
 rm /tmp/install_rvm

cf@ubuntu:~$

これでインストーラを実行します。途中でファイルのダウンロードやコンパイルが行われるため、1時間程度の時間がかかります。また、何度かsudoでパスワードの入力を求められます。

cf@ubuntu:~$ bash < install

-----------------------------------------------------------
(Linux) One Click Installer for VMware's Cloud Application Platform!
-----------------------------------------------------------

Hopefully this will be the last time you type your password
[sudo] password for cf:

	:
	:
	:

bundle install successful for cloud_controller
bundle install successful for dea
bundle install successful for health_manager
bundle install successful for router
bundle install successful for stager
bundle install successful for redis
bundle install successful for mysql
bundle install successful for mongodb
bundle install successful for postgresql
bundle install successful for neo4j
Success!
cf@ubuntu:~$

インストールが完了したら、一旦Ubuntu Serverを再起動します。

Cloud Foundry (vcap)の起動

vcap (VMware's Cloud Application Platform) のディレクトリに移動します。移動すると、rvmのメッセージが表示されますが、そのままyを入力して進みます。

cf@ubuntu:~$ cd cloudfoundry/vcap/
l==============================================================================
= NOTICE                                                                     =
==============================================================================
= RVM has encountered a new or modified .rvmrc file in the current directory =
= This is a shell script and therefore may contain any shell commands.       =
=                                                                            =
= Examine the contents of this file carefully to be sure the contents are    =
= safe before trusting it! ( Choose v[iew] below to view the contents )      =
==============================================================================
Do you wish to trust this .rvmrc file? (/home/cf/cloudfoundry/vcap/.rvmrc)
y[es], n[o], v[iew], c[ancel]>

y

Using /home/cf/.rvm/gems/ruby-1.9.2-p180
cf@ubuntu:~/cloudfoundry/vcap$

vcapを起動します。

cf@ubuntu:~/cloudfoundry/vcap$ ./bin/vcap start
router              :    RUNNING
cloud_controller    :    STOPPED
LOG:
 WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
    at /home/cf/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated.  Please include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method CloudController::Application#task called at /home/cf/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.5/lib/rails/application.rb:214:in `initialize_tasks'
dea                 :    RUNNING
health_manager      :    RUNNING
stager              :    RUNNING
redis_gateway       :    RUNNING
redis_node          :    RUNNING
mysql_gateway       :    RUNNING
mysql_node          :    RUNNING
mongodb_gateway     :    RUNNING
mongodb_node        :    RUNNING
neo4j_gateway       :    RUNNING
neo4j_node          :    RUNNING
cf@ubuntu:~/cloudfoundry/vcap$

cloud_controllerの箇所でWARNINGが大量に表示されSTOPPEDとなりますが、実際には動作しています。この状態で、localhost:80 にアクセスします。

cf@ubuntu:~$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 404 Not Found
Server: nginx/0.7.65
Date: Tue, 24 Jan 2012 05:16:26 GMT
Connection: close

VCAP ROUTER: 404 - DESTINATION NOT FOUND
Connection closed by foreign host.
cf@ubuntu:~$

応答が確認できたら、インストールしたCloud Foundry (vcap)に対してvmcを実行してみます。

cf@ubuntu:~$ vmc target

[http://api.vcap.me]

cf@ubuntu:~$

api.vcap.meとはlocalhostを指しています。

cf@ubuntu:~$ vmc info

VMware's Cloud Application Platform
For support visit http://support.cloudfoundry.com

Target:   http://api.vcap.me (v0.999)
Client:   v0.3.15

cf@ubuntu:~$

このように、インストールしたCloud Foundry (vcap)の応答が得られるので、登録を行います。メールアドレスとパスワードは適当なものを設定してください。

cf@ubuntu:~$ vmc register --email

example@exmaple.jp

 --passwd

example

Creating New User: OK
Attempting login to [http://api.vcap.me]
Successfully logged into [http://api.vcap.me]

cf@ubuntu:~$

登録できたと同時にログインも完了しています。この状態で、サンプルアプリケーションを作成します。

cf@ubuntu:~$ mkdir env
cf@ubuntu:~$ cd env
cf@ubuntu:~/env$ cat > env.rb
require 'rubygems'
require 'sinatra'

get '/' do
  host = ENV['VMC_APP_HOST']
  port = ENV['VMC_APP_PORT']
  "<h1>XXXXX Hello from the Cloud! via: #{host}:#{port}</h1>"
end
cf@ubuntu:~/env$

push します。

cf@ubuntu:~/env$ vmc push env --instances 4 --mem 64M --url env.vcap.me -n
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

cf@ubuntu:~/env$

デプロイされたことを確認します。

cf@ubuntu:~/env$ vmc apps

+-------------+----+---------+-------------+----------+
| Application | #  | Health  | URLS        | Services |
+-------------+----+---------+-------------+----------+
| env         | 4  | RUNNING | env.vcap.me |          |
+-------------+----+---------+-------------+----------+

cf@ubuntu:~/env$

アクセスします。

cf@ubuntu:~$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: env.vcap.me
Connection: close

HTTP/1.1 200 OK
Server: nginx/0.7.65
Date: Tue, 24 Jan 2012 05:30:54 GMT
Content-Type: text/html;charset=utf-8
Connection: close
X-Frame-Options: sameorigin
X-XSS-Protection: 1; mode=block
Content-Length: 57

<h1>XXXXX Hello from the Cloud! via: 127.0.0.1:55677</h1>

Connection closed by foreign host.
cf@ubuntu:~$

サンプルアプリケーションの動作が確認できました。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA