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:~$
サンプルアプリケーションの動作が確認できました。