IBM SmartCloud Enterprise についてのヒント: Rapid Deployment Service を使用して製品をデプロイする

プラットフォームに依存しない IBM のスクリプト言語である SPiN (Simple Product Installation) をベースにした RDS (Rapid Deployment Service) を使用すると、製品を迅速にデプロイすることができ、複雑な製品のインストールに専門家を必要とすることも少なくなり、インストールの際に発生するヒューマン・エラーの数も減らすことができます。この記事では、IBM SmartCloud Enterprise に RDS アセットをセットアップする方法を学びましょう。

Dominique Vernier, IT Architect, IBM

Dominique Vernier photoここ数年、Dominique Vernier は Java 技術とクラウド・アーキテクチャーを中心とした業務を行っています。また彼は非常に長く情報技術に従事しており、メッセージング、データベース、SOA、EAI、クライアント/サーバー、C/C++、既存フレームワークなどに関して幅広い知識を得ています。また彼は、通信、CRM、ロジスティクス、保険などの業界にも幅広い知識を持っています。彼はステート・エンジンとリソース管理に関する 4 件の特許と共同特許を持っています。現在は South-West Europe Cloud Center of Excellence で、プライベートおよびパブリック・ソリューションのための Smart Business Development and Test Cloud に従事しています。


developerWorks 貢献著者レベル

2011年 6月 03日

RDS (Rapid Deployment Service) は、製品が仮想化されているか否かにかかわらず、その製品をユーザーがクラウド・プラットフォームにデプロイできるようにするサービスです。このサービスには、プラットフォームに依存しない IBM のスクリプト言語、SPiN (Simple Product Installation) が使われています。RDS を使用すれば、カスタマイズ可能な要素の非常に多い複雑なアセットを迅速にデプロイすることができ、ほとんど専門家の手を煩わせません。また RDS の自動化機能により、インストールの際に発生しがちなヒューマン・エラーの数を減らすことができます。

この記事では、IBM SmartCloud Enterprise 上でイメージをカスタマイズする方法として、RDS を使用して IBM HTTP Server をオンザフライでインストールする方法を説明します。使用するポート番号はインスタンス作成時に指定され、イメージにハードコーディングされているわけではありません。他のイメージを作成する場合にも、同様の方法で RDS を使用してインストールを行うことができます。

IBM SmartCloud Enterprise 上のイメージをカスタマイズし、イメージによってスクリプトを起動する方法 (そして、この記事で使用できるようにインスタンスをセットアップする方法) については、「カスタム・インスタンスのクラウド・イメージをオンザフライでパラメーター化する」を読んでください。

RDS ファイルを取得する」では、必要なファイルと、それらのファイルの入手方法について説明します。また、IBM SmartCloud Enterprise にアクセスし、この記事で説明する機能をテストする必要もあります。

背景にある考え方

IBM SmartCloud Enterprise 上にイメージを作成する場合、そのイメージはユーザーのアカウントに追加された新しいアセットとして Rational asset catalog に保存されます。このアセットはユーザーのプライベート・コミュニティーの中、つまりプライベート・カタログの中にあります。プライベート・カタログの中にあるアセットは、自社コミュニティーのアセットとして自社のカタログから入手できるようにすることが可能です。

このアセットは Rational asset catalog の中にあり、Rational アセット・カタログは Rational Asset Manager をベースにしているため、Rational Asset Manager で操作する場合と同じように、このアセットにファイルをアップロードしたり、あるいはこのアセットの既存ファイルを上書きしたりすることができます。

標準的な IBM SmartCloud Enterprise イメージのアセットには、重要なファイルが 2 つあります。

  1. parameters.xml: このファイルには、インスタンスを要求する際にリクエスト・ウィンドウに表示されるパラメーターの説明が含まれており、インスタンス作成時のパネルを構築するために使われます。parameters.xml ファイルは実際の値と共にサーバーの /etc/cloud ディレクトリーにコピーされます。
  2. scripts.txt: このファイルはデフォルトではアセットに含まれていませんが、アセットの activation-scripts ディレクトリーの下に追加することで、activation-scripts ディレクトリー配下の各ファイルをインスタンスのどこにアップロードするかをこのファイルに記述することができます。scripts.txt を使用することで、インスタンス・ブート時の早い段階でインスタンス内の複数のファイルやスクリプトをアップロードすることができるため、非常に便利です。

この意味で非常に便利なもう 1 つのファイルが、cloud-startupx.sh ファイルです (ファイル名に含まれる x は、インスタンスのラン・レベルに応じて 3 または 5 に置き換えられます。

  • cloud-startup3.sh
  • cloud-startup5.sh

どちらのラン・レベルを選択した場合でも、このファイルにはインスタンスのブート時に起動されるコマンドが含まれています。従って、RDS を起動するためにこのファイルがフックされるようにすることも可能です。

parameters.xml ファイル、scripts.txt ファイル、cloud-startupx.sh ファイルが用意できると、ブート時のインストール/セットアップ・プロセスとして、RDS を使用してインストールを行うプロセスを構築する上で必要なすべてのファイルが揃ったことになります。

cloud-startupx.sh を用意できたら、このファイルに parameters.xml.done ファイルを検索するセクションを追加します (RDS による最初のインストールが完了した後で、parameters.xml.done ファイルを追加する必要があります)。parameters.xml.done ファイルにより、ブートのたびに RDS によるインストール・プロセスが実行されるのを防ぐことができます。

この記事で紹介する RDS の例では、あるプラットフォームに IBM HTTP Server をインストールし、このサーバーがリッスンするポート番号をカスタマイズします。この場合はプラットフォームとして SuSE Linux 11 SP1 を使用します。

バリアント・タスクとインバリアント・タスク

バリアント・タスクはパラメーターを必要とするタスクであるため、パラメーター化による処理が最適です。この記事でのバリアント・タスクの例としては、VNC パスワードのセットアップやユーザーの作成があります。

インバリアント・タスクはパラメーターを必要としないタスクです (オペレーティング・システムのインスタンスを要求するなど)。インバリアント・タスクは静的な方法によって容易に処理することができます。

カスタム・インスタンスのクラウド・イメージをオンザフライでパラメーター化する」を読むと、イメージのセットアップに多様な方法があることを理解できるはずです。それらの方法の違いは主に、どのタスクをバリアント・タスクとみなし、どのタスクをインバリアント・タスクとみなすかによるものです。

可能な限り多くのファイルを最初のインスタンスにプリロードし、そのインスタンスのイメージをベース・イメージとして、その後のインスタンス作成リクエストに使用することができます。そうすることでインスタンス作成時にアップロードするデータの量を減らせますが、欠点として柔軟性がなくなります。プリロードされたファイルを 1 つでも変更しようとするたびに、新しいベース・イメージを作成する必要があり、開発が悪夢のような作業になります。

適切なバランスはその中間にありますが、この記事では概念を検証するだけなので、ファイルを 1 つ含むインスタンス・ファイルを Rational asset catalog にアップロードしました。皆さんがイメージをセットアップする場合には、イメージに含めたい複数のファイルを自由にイメージにプリロードして構いません。ただし一般的なルールとして、スクリプトをプリロードしてはなりません。そんなことをすると、イメージを作成するための作業が大幅に増えてしまいます。

では、作業を始めましょう。


ベース・イメージを作成する

  1. SuSE イメージはラン・レベル 3 で起動し、yast を使用して Java 1.6.0 をインストールする必要があるため (yast はネットワークを使用してインストール・パッケージをアップロードします)、ブート時にベース・イメージを作成することはできません。単純な SuSE プラットフォームからインスタンスを作成し、ssh を使用してそのインスタンスに接続します。
  2. 接続できたら、sudo bash コマンドを実行してルートにアクセスし、以下のコマンドを実行して Java をインストールします。
    yast2 -install java-1_6_0-ibm

    RDS を実行するためには Java が必要であり、Java は唯一の前提条件です。
  3. このインスタンスからイメージを作成します。ベース・イメージは「My dashboard (マイ・ダッシュボード)」の下にある Rational Asset Manager に保存されます。
    図 1. インスタンスからイメージを作成する
    インスタンスからイメージを作成する

IBM Cloud ポータルから Rational Asset Manager にアクセスするために、「Control panel (コントロール・パネル)」タブで「View asset catalog (アセット・カタログを表示)」をクリックします。

図 2. Rational Asset Manager にアクセスする
Rational Asset Manager にアクセスする

アセットをダウンロードする

イメージを作成したら、Rational asset catalog からアセットを選択し、それをローカル・ディスクにダウンロードします。

図 3. アセットをダウンロードする
アセットをダウンロードする

parameters.xml を構成する

サーバーがリッスンするポート番号を parameters.xml ファイルで定義します。parameters.xml ファイルを変更して field タグを追加します。ポート・フィールドを追加した後の parameters.xml ファイルは以下のようになります。

リスト 1. parameters.xml ファイル
<?xml version="1.0" encoding="UTF-8"?>
<parameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:noNamespaceSchemaLocation=
 "platform:/resource/com.ibm.ccl.devcloud.client/schema/parameters.xsd">
	<firewall>
		<rule>
			<source>0.0.0.0/0</source>
			<minport>1</minport>
			<maxport>65535</maxport>
		</rule>
	</firewall>
	<field name="webserver-ihs-http-port" label="IHS HTTP Port" type="number">
		<values>
			<value>80</value>
		</values>
	</field>
</parameters>

このファイルの field タグで、名前として webserver-ihs-http-port が使われていることに注意してください。RDS プロパティー・ファイルでは、この変数名を使用してポートの値を定義します。同じ名前を使用することで、RDS プロパティー・ファイルを自動的にカスタマイズするのが容易になります。


cloud-startupx.sh ファイルを作成する

  1. インスタンスのラン・レベルに応じて、cloud-startup3.sh ファイルまたは cloud-startup5.sh ファイルを作成します。ラン・レベルを調べるためには、そのインスタンスのコマンド・プロンプトで runlevel コマンドを発行します。ラン・レベルがわかったら、そのラン・レベルに対応する cloud-startupx.sh をローカル・ディスクにコピーします。これらのファイルは /etc/init.d ディレクトリーにあります。
  2. このファイルを変更して以下のようにします。
    リスト 2. 変更された cloud-startupx.sh ファイル
    # Required-Stop:
    # Should-Stop:
    # Default-Start:     3
    # Default-Stop:
    # Short-Description: Cloud startup
    # Description:       Extract and set user password
    ### END INIT INFO
    
    case "$1" in
        start)
            echo "== Cloud Starting"
            if [ ! -e /etc/cloud/idcuser_pw_randomized ]; then
                echo "Randomizing idcuser password"
                echo idcuser:`< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c16` 
                                                                 | /usr/sbin/chpasswd
                touch /etc/cloud/idcuser_pw_randomized
            fi
            if [ ! -e /etc/cloud/parameters.xml.done ]; then
                . /etc/cloud/launchRDS.sh /etc/cloud build-IHS.sh
                cp /etc/cloud/parameters.xml /etc/cloud/parameters.xml.done
            fi
            ;;
        stop)
            echo "== Cloud Stopping"
           ;;
        *)
            echo "Usage: $0 {start|stop}"
            exit 1
            ;;
    esac
    
    #Attach Dynamic disk
    modprobe acpiphp

    追加されたコードは以下のとおりです。

            if [ ! -e /etc/cloud/parameters.xml.done ]; then
                . /etc/cloud/launchRDS.sh /etc/cloud build-IHS.sh
                cp /etc/cloud/parameters.xml /etc/cloud/parameters.xml.done
            fi

    この追加されたコードにより、parameters.xml.done ファイルが存在していないかどうかをチェックします。このファイルが既に存在している場合には、RDS によるインストールは既に済んでおり、再度行う必要はないからです。parameters.xml.done ファイルが存在していない場合には、launchRDS.sh ファイルを使用して RDS によるインストールを行い、続いて parameters.xml.done ファイルを作成します。


RDS によるインストールを開始する

  1. SPiN を起動する前に、いくつか他のコマンドを起動する必要がありますが、ここではそれらのコマンドと SPiN の呼び出しを同じスクリプトに記述することにします (launchRDS.txt)。
    リスト 3. SPiN の呼び出しと、他に必要なコマンド
    #Prepare SpiN package
    tar --directory=$1 -xvf $1/ihs.tar
    cp $1/7.0.0.7-WS-UPDI-LinuxIA32.tar $1/spinPackage2/software/was/v7/maint
    cp $1/7.0.0-WS-IHS-LinuxX32-FP0000007.pak $1/spinPackage2/software/was/v7/maint
    cp $1/7.0.0-WS-PLG-LinuxX32-FP0000007.pak $1/spinPackage2/software/was/v7/maint
    cp $1/7.0.0-WS-WASSDK-LinuxX32-FP0000007.pak $1/spinPackage2/software/was/v7/maint
    cp $1/C1G32ML.tar $1/spinPackage2/software/was/v7/nd
    cp $1/C1G33ML.tar $1/spinPackage2/software/was/v7/nd
    
    #Create wasadm group
    groupadd wasadm
    
    #Add directory
    mkdir -p $1/spinPackage2/software/WebSphere/Plugins
    touch $1/spinPackage2/software/WebSphere/Plugins/empty.txt
    
    #Adapt the Spin property file.
    echo "Adapt props"
    perl $1/replaceProperty.pl 
         $1/spinPackage2/custom-spin/RDSDemo-WebSphere-V7-ND-ihsOnly.props
           webserver-ihs-http-port
    
    #Start installation
    echo "Start install"
    cd $1/spinPackage2
    ./$2
    
    #Setup firewall
    cp /etc/sysconfig/SuSEfirewall2 /etc/sysconfig/SuSEfirewall2.bak
    /sbin/SuSEfirewall2 stop
    perl $1/replace.pl $1/SuSEfirewall2 webserver-ihs-http-port
    cp $1/SuSEfirewall2 /etc/sysconfig/SuSEfirewall2
    /sbin/SuSEfirewall2 start
  2. 最初のフェーズでは、SPiN スクリプトを含む ihs.tar を解凍し、次にすべてのインストール・パッケージを SPiN 専用のディレクトリーにコピーします。
  3. Perl スクリプトを呼び出します。このスクリプトの役割は、parameters.xml ファイルの中に指定された値を使って webserver-ihs-http-port 変数を設定することです。
    リスト 4. replaceProperty.txt
    #!/user/bin/perl 
    use strict; 
    use warnings; 
    my $cmd=""; 
    if(-e $ARGV[0]) 
    { 
        $cmd = "cp $ARGV[0] $ARGV[0].bak"; 
        `$cmd`; 
    } 
    else 
    { 
        print "File does not exist.\n"; 
        exit; 
    } 
    
    my @result =`perl /usr/bin/extract-parameters.pl $ARGV[1]
     /etc/cloud/parameters.xml`; 
    chomp(@result); 
    open(INPUT,"$ARGV[0].bak") or die "Cannot open file: $!\n"; 
    open(OUTPUT,">$ARGV[0]"); 
    
    while(<INPUT>){ 
        $_ =~ s/^$ARGV[1]=.*/$ARGV[1]=@result/g; 
        print $_; 
        print OUTPUT $_; 
    } 
    
    close INPUT; 
    close OUTPUT;
  4. これを終えたら、SPiN によるインストールを呼び出し、いよいよファイアウォールのポートを開きます。

ここで説明したのは、基本的なインストールです。すべてのスクリプトは ihs.tar ファイルに用意されていますが、SPiN スクリプトと IBM HTTP Server アセンブリーは別です。(これらのファイルの入手については、「RDS ファイルを取得する」を参照してください。)


Rational asset catalog にスクリプトをアップロードする

アセットにファイルをアップロードする方法については、「カスタム・インスタンスのクラウド・イメージをオンザフライでパラメーター化する」の説明に従ってください。

変更された parameters.xml がアップロードされ、アセットの内容のルート・ディレクトリーに表示されます (下図参照)。

図 4. parameters.xml をアップロードする
parameters.xml をアップロードする

activation_scripts ディレクトリーの中にあるほかのファイル (RDS アセット、スクリプト、アセンブリー・ファイル、fix pack) も表示されています。

図 5. 他のファイルをアップロードする
他のファイルをアップロードする

インスタンスを作成する

以下の手順でインスタンスを作成します。

  1. プライベート・カタログからイメージを選択します。
    図 6. イメージを選択する
    イメージを選択する
  2. 名前とキーを指定します。
    図 7. 名前とキーを指定する
    名前とキーを指定する
  3. ポート番号を入力します。
    図 8. ポート番号を入力する
    ポート番号を入力する
  4. Agree (同意)」と「Submit (送信)」をクリックします。

リクエストの送信には少し時間がかかります。これはプロビジョニング・エンジンが RAM からアセットをアップロードする必要があり、アセットにすべてのアセンブリー・ファイルが含まれているためです。テストするためには、指定された IP アドレスで指定のポートを使って HTTP Server にアクセスします。

以上で必要な作業はすべてです。


RDS ファイルを取得する

RDS については、こちらを参照してください。

RDS の製品ライブラリーには、製品をインストールしたアセットが既にいくつか含まれています。これらのアセットをカスタマイズすることによって顧客の要求を満たすことができます。

必要な IBM HTTP Server eAssembly ファイルと RDS パッケージ・アセットはライセンスを受けている場合にのみ提供されます。eAssembly ファイルは Extreme-leverage and RDS からダウンロードすることができます。

この記事では概念の検証として、RDS を使用して製品をインストールし、イメージ作成プロセスを迅速に行う方法を説明しました。この方法を適用してみたいビジネス事例がある場合には、RDS チームにご連絡ください。RDS チームは自動化されたプロビジョニング環境で RDS を実現する方法を示してくれるはずです。

参考文献

学ぶために

製品や技術を入手するために

  • 「IBM SmartCloud Enterprise」で利用可能な製品イメージを調べてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=664889
ArticleTitle=IBM SmartCloud Enterprise についてのヒント: Rapid Deployment Service を使用して製品をデプロイする
publish-date=06032011