本格派エンジニアの工具箱

第25回Red HatによるPaaS型クラウドサービス「OpenShift」

OpenShiftについて

OpenShiftは、米Red Hat社が運営しているPaaS型のクラウドサービスです。Java、PHP、Ruby、Python、Perlに対応しており、それぞれの開発フレームワークを利用したアプリケーションを展開することができます。現在はまだプレビュー段階ですが、SLA無しなどといった条件のもとで利用することができるのが特徴です。

OpenShiftには、無償で利用できる「Express」と、有償の「Flex」の2種類のサービスがあります。ExpressではWebコンソールやコマンドラインツールを用いたWebアプリケーションの作成や公開、カスタマイズ、gitを用いたデプロイやリポジトリ管理などを行え、アプリケーションは共有のサーバインスタンスに展開されます。

一方Flexでは、自前のサーバインスタンスやクラウドオブジェクトを作成・展開することが可能で、その上にアプリケーションをデプロイできます。サーバインスタンスなどはAmazon EC2上に展開されます。

ExpressとFlexのそれぞれにおいて提供される機能、サポートされる言語やフレームワーク、データベースは下表のようになっています。Javaに関してはJava EE 6のフル機能がサポートされており、このバックグラウンドにはRed Hat社が提供しているJBoss Application Serverが使われているとのこと。すなわち、JBoss AS上で動作するJavaアプリケーション(当然、Java EE 6仕様に準拠したものを含む)であれば、そのままOpenShift上で実行できるということになります。

表1 ExpressとFlexの機能比較
機能ExpressFlex
コマンドラインインターフェース×
GUIインターフェース×
クラウドオブジェクトの作成×
クラウドオブジェクトの管理×
クラスタの作成×
クラスタの管理×
サーバの作成×
サーバの管理×
アプリケーションの作成
アプリケーションの管理
アプリケーションのインポート×
アプリケーションのカスタマイズ
アプリケーションのデプロイ
クラウドのパフォーマンスの閲覧×

出典:https://docs.redhat.com/docs/en-US/OpenShift_Express/1.0/html/User_Guide/chap-OpenShift_Overview.html

表2 サポートされる言語やフレームワークなど
言語などExpressFlex
RubyRails, SinatraRails, Sinatra
PythonPylons, Turbogears, DjangoPylons, Turbogears, Django
PerlPerlDancer-
PHPZend, Cake, Symfony, CodeIgniterZend, Cake, Symfony, CodeIgniter
JavaJavaEE6, CDI/Weld, Spring, SeamJavaEE6, CDI/Weld, Spring, Seam
データベースMySQL, SQLiteMySQL, MongoDB, Membase
メッセージング(サポート予定)MRG

出典:https://openshift.redhat.com/app/features

本稿では、Expressの方を使ってWebアプリケーションを展開する方法を紹介します。

アプリケーションを作成する

前述のように、Expressはアカウント登録をすれば無償で利用することができます。サインインすると図1のように「Open control panel」のリンクが表示されます。

図1 OpenShiftのトップページ。サインインするとコントロールパネルが利用できる
図1 OpenShiftのトップページ。サインインするとコントロールパネルが利用できる

コントロールパネルは、クラウド上のアプリケーションを管理するためのWebコンソールです。この画面でアプリケーションの作成や削除などを行うことができます。OpenShiftではそれ以外にコマンドラインベースの管理ツールも提供されており、PCのコマンドラインからアプリケーションを管理することもできますが、まずはコントロールパネルの使用方法を紹介しましょう。

アプリケーションを作成するためにはユーザごとにユニークなドメイン名を登録する必要があります。⁠NAMESPACE」の項目で任意のドメイン名を入力して[Save]をクリックします図2⁠。他のユーザが同じドメイン名を使っていなければ図3のようにドメイン名が登録できます。

図2 ドメイン名の登録
図2 ドメイン名の登録
図3 登録したドメイン名はアプリケーションの公開URLの一部になる
図3 登録したドメイン名はアプリケーションの公開URLの一部になる

このドメイン名はアプリケーションの公開URLに含まれることになります。たとえばドメイン名が「takaaki」であれば、アプリケーションの公開URLは「http://アプリケーション名-takaaki.rhcloud.com」のようになります。

続いて、SSH用の公開鍵を登録する。OpenShiftでは、アプリケーションのデプロイはgitリポジトリを通じて行います。このgitリポジトリにはsshを介してアクセスする必要があるため、利用するためにはあらかじめクライアントPCの公開鍵をコントロールパネルに登録しておかなければなりません。公開鍵の作成は、OpenSSHなどのSSHクライアントツールを利用して行います。Windows環境の場合は、CygwinOpenSSH for Windowsを使うことで、sshや後述するssh-keygenなどのコマンドを利用できるようになります。

公開鍵および秘密鍵の生成はssh-keygenコマンドを利用して行います。Cygwinを使って~/.sshディレクトリ以下に鍵ファイルを生成したい場合には次のようになります(⁠⁠openshift_id_rsa」の部分は任意のファイル名でよい⁠⁠。

# cd ~/.ssh/
# ssh-keygen -f openshift_id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): ←任意のパスフレーズを入力
Enter same passphrase again: ←パスフレーズを再度入力
Your identification has been saved in openshift_id_rsa.
Your public key has been saved in openshift_id_rsa.pub.
(以下省略)

これで~/.ssh以下に「openshift_id_rsa」「openshift_id_rsa.pub」の2つのファイルが生成されます。前者が秘密鍵で後者が公開鍵です。このうち、公開鍵である「openshift_id_rsa.pub」の中身を、図4のコントロールパネルに登録します。

図4 クライアントPCの公開鍵の登録
図4 クライアントPCの公開鍵の登録

ドメイン名と公開鍵を登録できたら、いよいよアプリケーションを作成してみましょう。図5のように「Apps」の項目で任意のアプリケーション名を記入し、アプリケーションのタイプを選んで[Add]をクリックします。タイプは使用するプログラミング言語基盤別に「perl」⁠jbossas(Java)」⁠wsgi(Python)」⁠rack(ruby)」⁠php」のいずれかが選択できます。本稿の例ではjbossasを選んで作成しました。

図5 任意の名前でアプリケーションを作成。使用する言語に応じてタイプを選択する
図5 任意の名前でアプリケーションを作成。使用する言語に応じてタイプを選択する

アプリケーションが作成されると、図6のようにその公開URLと、gitリポジトリのURLが表示されます。

図6 アプリケーションが作成されると、公開URLとgitリポジトリのURLが表示される
図6 アプリケーションが作成されると、公開URLとgitリポジトリのURLが表示される

作成されたアプリケーションは、最初はあらかじめ用意された雛形の状態です。公開URLにアクセスすると図7のようなページが表示されるはずです。

図7 初期状態のアプリケーションのトップページ
図7 初期状態のアプリケーションのトップページ

次回はこのアプリケーションのカスタマイズの仕方や、コマンドラインツールの利用方法などについて解説します。

おすすめ記事

記事・ニュース一覧