2012年01月19日

dotcloudがとても便利

dotCloudは、さまざまな言語の実行環境を提供するPaaSである。

Google AppEngineと比べると、遥かに多様な言語、データベース、フレームワークが提供されている。 その多様性が最大の優位点であるが、さらに以下の特徴がある。

  • IaaSとPaaSの中間的な機能
  • 操作がシンプル

1つ目の特徴は、このサービス自体がAmazonEC2のIaaS上で動作していることからきている。
GAEでもherokuでも、実行マシンはサービスに隠蔽されており、自分で作ったプログラムが動作しているOSのについて意識する必要がなかった。
それが、PaaS本来の目的でもあるからだ。
dotCloudでは、アプリケーションをdeployすると、EC2でインスタンスが作られ、その上でアプリが実行される。そして、そのインスタンスへのsshが許可されている。
そのため、ログの確認や、実行環境が自分の想定通りであるかなどを確認することができる。

もう一つの特徴が、dotCloudサービスの操作の簡単さである。 dotCloudを扱うコマンドは、基本的にただひとつ。dotcloudコマンドである。

インストールから、静的コンテンツのhello worldは、以下のとおり。

dotcloudコマンドのインストール

$ sudo apt-get install python-setuptools
$ sudo easy_install pip && sudo pip install dotcloud
Searching for pip
Reading http://pypi.python.org/simple/pip/
Reading http://pip.openplans.org
Reading http://www.pip-installer.org
Best match: pip 1.0.2
Downloading http://pypi.python.org/packages/source/p/pip/pip-1.0.2.tar.gz#md5=47ec6ff3f6d962696fe08d4c8264ad49
Processing pip-1.0.2.tar.gz
Running pip-1.0.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XTv7r8/pip-1.0.2/egg-dist-tmp-aqFwSr
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.0.2 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip-2.7 script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/pip-1.0.2-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
Downloading/unpacking dotcloud
  Downloading dotcloud-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud
    
Downloading/unpacking dotcloud.cli==0.4.3 (from dotcloud)
  Downloading dotcloud.cli-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud.cli
    
Installing collected packages: dotcloud, dotcloud.cli
  Running setup.py install for dotcloud
  Running setup.py install for dotcloud.cli
    changing mode of build/scripts-2.7/dotcloud from 644 to 755
    changing mode of build/scripts-2.7/__dotcloud_git_ssh from 644 to 755
    
    changing mode of /usr/local/bin/dotcloud to 755
    changing mode of /usr/local/bin/__dotcloud_git_ssh to 755
Successfully installed dotcloud dotcloud.cli
Cleaning up...

APIキーを設定する

dotcloudコマンドを実行すると、APIキーが設定されていない場合に尋ねられる。
dotcloudのAPIキーは、wwwページにログインし、settingのページで表示される。
dotcloudコマンドでsetupサブコマンドを指定すると、再設定もできる。

$ dotcloud
Warning: /home/USERID/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/accounts/settings): XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

アプリケーション定義ファイルdotcloud.ymlを作る

$ cat dotcloud.yml 
www:
  type: static

同じディレクトリにHTMLファイルを作る

$ cat index.html 
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    Hello World!
  </body>
</html> 

dotCloud内にアプリケーションを作る

$ dotcloud create helloworldapp
Warning: /HOME/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/accounts/settings): ABC123.......................789XYZ <--API keyは、wwwでログインし、dashboardのsettingで表示される

Created application "helloworldapp"

HTMLをインスタンスへpushする

$ dotcloud push helloworldapp
# upload /DIRECTORY/dotcloud/maarui ssh://dotcloud@uploader.dotcloud.com:443/helloworldapp
# rsync
building file list ... done
./
dotcloud.yml
hw.html

sent 262 bytes  received 53 bytes  48.46 bytes/sec
total size is 122  speedup is 0.39
09:21:11 ---> Deploy of "helloworldapp" scheduled for revision rsync-1326532870687 at 2012-01-14 09:21:11
09:21:11 ---> Initializing new services... (This may take a few minutes)
09:21:11 [www.0] Initializing...
09:21:15 [www.0] Service initialized
09:21:17 ---> All services have been initialized. Deploying code...
09:21:17 [www.0] The build started
09:21:18 [www.0] Fetched code revision rsync-1326532870687
09:21:22 [www.0] Reloading nginx configuration: nginx.
09:21:22 [www.0] The build finished successfully
09:21:22 ---> Deploy finished

Deployment finished. Your application is available at the following URLs
www: http://helloworldapp-ID.dotcloud.com/

これで、表示されるURLにアクセスすると、ちゃんとHTMLが表示される。

その他の操作

アプリケーションの詳細情報は、以下のように取れる。
例は、wwwサービスだが、DBサービスをcreateすると、そのDBへの接続情報などもここで出るそうだ。

$ dotcloud info helloworldapp.www
aliases:
- helloworldapp-ID.dotcloud.com
build_revision: rsync-123456
config:
    path: /
created_at: 1326532871.811918
datacenter: Amazon-us-east-1b
image_version: exxxxxxxxxx8 (latest)
ports:
-   name: ssh
    url: ssh://dotcloud@helloworldapp-ID.dotcloud.com:6908
-   name: http
    url: http://helloworldapp-ID.dotcloud.com/
state: running
type: static

アプリケーションの動作状況

$ dotcloud status helloworldapp.www
#  sudo /etc/init.d/nginx status 
 * nginx is running

sshすると、こんなふうになる

$ dotcloud ssh helloworldapp.www
# $SHELL
dotcloud@helloworldapp-default-www-0:~$ 
dotcloud@helloworldapp-default-www-0:~$ ls
code  current  environment.json  environment.yml  rsync-1326533061883  static
dotcloud@helloworldapp-default-www-0:~$ cd current
dotcloud@helloworldapp-default-www-0:~/current$ ls
dotcloud.yml  index.html
dotcloud@helloworldapp-default-www-0:~/current$ exit

アプリケーションの削除

$ dotcloud destroy helloworldapp
Please confirm destruction [yn]: y
Destroy for "helloworldapp" triggered.

消えたことを確認

$ dotcloud status helloworldapp.www
error: "helloworldapp" not found.

この操作のシンプルさは気に入った。 herokuがいまいちだったので、しばらく、これで遊んでみようと思う。



sylphide_ffr31mr at 00:18コメント(0)トラックバック(0)技術  

トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
プロフィール

やすき

月別アーカイブ
  • ライブドアブログ