IBM SmarterCloud Enterprise の管理: 第 2 回 ICCT を使ってソフトウェア・バンドルを使用および保守する

ソフトウェア・バンドルとは、ソフトウェアのインストール・ファイル、構成ファイル、およびメタデータをまとめて仮想マシン・インスタンスにデプロイできるようにしたファイル一式です。この全 2 回からなる記事では、IBM Image Construction and Composition Tool (ICCT) を使用してソフトウェア・バンドルを作成し、IBM SmarterCloud Enterprise にそのバンドルを登録して保守する方法について、具体例を用いて説明します。ICCT ではソフトウェアのインストールおよび構成を管理し、ソフトウェア・バンドルの作成、仮想マシン・インスタンスのカスタマイズ、そしてイメージの取り込みを行う上で便利なようにステップ・バイ・ステップのプロセスとグラフィカル・ユーザー・インターフェースを提供しています。第 2 回となるこの記事では、第 1 回で作成したソフトウェア・バンドルを使ってカスタム・イメージを作成する方法を説明します。

Alexei Karve (karve@us.ibm.com), Senior Software Engineer, IBM

Alexei は、SmartCloud Enterprise 設計チームの一員として、クラウド・ビジネス・サポート・システムのソフトウェア・バンドル、ICON、PN/VLAN に取り組んでいます。彼は米国を拠点としています。



Alex Amies (aamies@cn.ibm.com), Senior Software Engineer, IBM

Alex Amies photoAlex Amies は、中国の IBM GTS Development Lab に勤務するシニア・ソフトウェア・エンジニアです。彼は現在、アーキテクトとして IBM Smart Business Development and Test on the IBM Cloud の設計に携わっています。以前は、IBM 内の他のグループでクラウドおよびエキュリティー製品のアーキテクト、開発者として活躍していました。



Scott Peddle, Advisory Software Developer, IBM

Photo of Scott PeddleScott Peddle は、IBM SmartCloud Enterprise の顧問ソフトウェア開発者であり、クラウド環境での Rational Asset Manager の統合を焦点としたプロジェクトを率いています。彼は、WebSphere Business Modeler や WebSphere Integration Developer などの WebSphere BPM ツールを Rational Asset Manager によって統合するプロジェクトのリーダーも経験しました。また、Rational Software Architect および Rational Application Developer などの Rational の設計および構成製品のリリース・エンジニアでもあります。



Hidayatullah Shaikh, Senior Technical Staff Member, IBM

Shaikh は、IBM Master Inventor の肩書きを持つ、Business Support Systems for IBM SmartCloud Enterprise and Enterprise+ オファリングの技術主任で、米国を拠点としています。



Qiangguo Tong, Advisory Software Engineer, IBM

Qiang Guo Tong は 2004年に IBM に入社しました。現在、IBM SmartCloud Enterprise development チーム・リーダーの一人として新機能の作成を担当しています。彼は、SmartCloud のグローバリゼーション・イネーブルメント・ソリューションのアーキテクトでもあり、グローバリゼーション技術と JavaEE 技術を専門としています。JavaEE アーキテクチャーをベースに、Dojo、JSON-RPC などの Web 2.0 技術を重視した Web アプリケーション開発で 8 年間の経験を積んでいます。



Pan Xia Zou, Staff Software Engineer, IBM

Pan Xia Zou は、Staff Software Engineer です。現在、IBM SmartCloud Enterprise のビルドおよびデプロイメント自動化アーキテクトとして働いています。



2012年 8月 23日

この記事では、IBM SmarterCloud Enterprise 上のソフトウェア・バンドルを保守する方法を紹介します。具体的には、例を用いて、プリインストールされたソフトウェア・バンドルが含まれる新しいプライベート・イメージを取り込む手順を説明し、そのソフトウェアを Linux 仮想マシンで使用します。この記事では読者がクラウドの基本概念を理解していることを前提とします。記事で説明する手順を実際に試すには、IBM SmarterCloud Enterprise のユーザー・アカウントが必要です。

第 1 回では、IBM SmarterCloud Enterprise 上で仮想マシンのソフトウェア・バンドルを作成する方法を説明しました。今回は、前回作成したバンドルを使用してカスタム・イメージを作成します。早速、作業に取り掛かりましょう。

カスタム・イメージを作成する

  1. ICCT UI にアクセスし、「Images (イメージ)」 > 「Build Images (イメージのビルド)」の順にクリックします。あるいは、「Welcome (ウェルカム)」ページに戻って「Build and Manage Images (イメージのビルドと管理)」をクリックするのでも構いません。
    図 1. ICCT でイメージをビルドする
    ICCT でイメージをビルドする
  2. Import from Cloud Provider (クラウド・プロバイダーからインポート)」をクリックします。
  3. 左側のパネルから「RedHat Enterprise Linux 6 (64-bit)」を選択した上で「Add (追加)」をクリックし、このイメージを「Images to import (インポートするイメージ)」パネルに追加します。この操作を終えたら、「Import (インポート)」をクリックします。
    図 2. RedHat Enterprise Linux 6 64 ビット版イメージをインポートする
    RedHat Enterprise Linux 6 64 ビット版イメージをインポートする
  4. イメージのメタデータがインポートされて、左ペインに表示されます。イメージを選択すると、右ペインにイメージの詳細が表示されます。
    図 3. RedHat Enterprise Linux 6 64-bit イメージの詳細
    RedHat Enterprise Linux 6 64-bit イメージの詳細
  5. 右ペインの「Extend (拡張)」アイコンをクリックし、情報を入力してから「Create (作成)」をクリックします。この操作により、新しいイメージ設計が左ペインで開始されます。
    図 4. イメージを拡張する
    =
  6. 右ペインで「Start Editing (編集開始)」をクリックします。すると、イメージのステータスを示す「Out of Sync (非同期)」というメッセージが表示されます。「Software Bundles (ソフトウェア・バンドル)」セクションを展開して、第 1 回で作成した Google Chrome ソフトウェア・バンドルを追加します。
    図 5. 「Software Bundles (ソフトウェア・バンドル)」セクションを展開した状態
    「Software Bundles (ソフトウェア・バンドル)」セクションを展開した状態
  7. Add Bundle (バンドルの追加)」をクリックします。すると、このイメージに対応したバンドルを選択するためのダイアログ・ボックスが表示されます。ここに、Google Chrome が選択肢として表示されています。
    図 6. Google Chrome ソフトウェア・バンドルをイメージに追加する
    Google Chrome ソフトウェア・バンドルをイメージに追加する
  8. Google Chrome」を選択して「Add (追加)」をクリックします。
    図 7. イメージ設計に追加された GoogleChrome
    イメージ設計に追加された GoogleChrome
  9. Save (保存)」、「Done Editing (編集完了)」、「Synchronize (同期)」の順にクリックします。すると、使用条件のページが表示されます。ICCT がデフォルトでローカルにイネーブルメント・バンドルを追加することに注意してください。「I agree (同意する)」をクリックした後、「Done (完了)」をクリックします。
    図 8. イメージを同期させる
    イメージを同期させる
  10. ICCT が基本イメージをプロビジョニングするために SmarterCloud API を呼び出します。インスタンスが作成された後に、ICCT がソフトウェア・バンドルをダウンロードしてインストールします。SmarterCloud ポータルにログインして、インスタンスを確認してください。SmarterCloud ポータルでは、一時インスタンス (「RHEL6WithGoogleChrome」というイメージ名の後に一意の ID が付加された名前を持つインスタンス) が要求中のステータスになった後、プロビジョニング中のステータスになることが確認できます。インスタンスがプロビジョニングされた後、そのソフトウェア・バンドルがリストに表示されるようにするには、「Control Panel (コントロール・パネル)」を最新の表示に更新する必要があるかもしれません。
    図 9. 同期後、SmarterCloud 内で「Provisioning (プロビジョニング中)」のステータスになっているインスタンス
    同期後、SmarterCloud 内で「Provisioning (プロビジョニング中)」のステータスになっているインスタンス
  11. 一時インスタンスが作成されると、SmarterCloud ポータルでの一時インスタンスのステータスは「Active (アクティブ)」に変わります。
    図 10. 同期後、SmarterCloud 内でプロビジョニングが完了したインスタンス
    同期後、SmarterCloud 内でプロビジョニングが完了したインスタンス
  12. インスタンスがアクティブになると、ICCT がソフトウェア・バンドルのインストールを開始します。この時点で、ICCT の GUI に戻って「Refresh (最新表示)」をクリックし、イメージの最新のステータスが表示されるようにします。イメージのステータスは「Synchronizing (同期中)」となり、その下の説明には「Installing execution package on VM (VM に実行パッケージをインストール中)」と示されるはずです。
    図 11. Image Construction and Composition Tool でイメージのステータスを最新の状態に更新する
    Image Construction and Composition Tool でイメージのステータスを最新の状態に更新する
    図 12. ICCT で同期に失敗した場合
    ICCT で同期に失敗した場合

    エラーが発生した場合は、一時インスタンスにログインして、RAM と ICCT 内のスクリプトでエラーを確認して修正します。その上で、もう一度「Synchronize (同期)」をクリックします。古い一時インスタンスは削除され、ICCT によって新しいインスタンスが作成されます。

    図 13. ICCT での同期の成功
    ICCT での同期の成功

ICCT がソフトウェア・バンドルのインストールを完了すると、イメージのステータスが「Synchronized (同期済み)」に更新されます。この新しいインスタンスにログインすると、Google Chrome がインストールされていることを確認することができます。SmarterCloud ポータル上の一時インスタンスの IP アドレスに ${SmartCloud_VM} が含まれていれば、このインスタンスに対し、idcuser として SSH で接続することができます。


Google Chrome が正常に機能していることを確認する

以下の手順に従って、一時インスタンスで Google Chrome が正常に機能することを検証します。

  1. この一時インスタンスで vncserver を起動してポート 5901 を開き、vncviewer を使用して Google Chrome に接続し、Google Chrome を起動します。以下の手順での IP アドレスには、コードに示されているものではなく、ご自分の環境の IP アドレスを指定してください。
    ssh idcuser@${SmartCloud_VM}
    Last login: Fri Mar  2 14:43:35 2012 from vhost4244.site2.compute.ihost.com
    [idcuser@vhost0134 ~]$ vncserver -geometry 1280x1024 -depth 16
  2. デスクトップにアクセスするにはパスワードが必要です。
    Password:
    Verify:
    xauth:  creating new authority file /home/idcuser/.Xauthority
    
    New 'vhost0134:1 (idcuser)' desktop is vhost0134:1
    
    Creating default startup script /home/idcuser/.vnc/xstartup
    Starting applications specified in /home/idcuser/.vnc/xstartup
    Log file is /home/idcuser/.vnc/vhost0134:1.log
    
    [idcuser@vhost0134 ~]$ sudo iptables -I INPUT -m state --state NEW -p
     tcp --destination-port 5901 -j ACCEPT
  3. vncviewer ${SmartCloud_VM}:1 を実行して /opt/google/chrome/google-chrome を起動し、Google Chrome が正常に機能することを検証します。

セキュリティー上の理由から、上記に記載したプロセスではなく、以下のように SSH トンネル上で VNC を起動することをお勧めします。

ssh -i ~/.ssh/key_name -L 5901:${SmartCloud_VM}:5901 idcuser@${SmartCloud_VM}

今度は vncviewer localhost:1 を実行し、続いて start /opt/google/chrome/google-chrome を実行することで、Google Chrome が正常に機能することを検証します。

図 14. SmarterCloud インスタンスで Chrome を起動する
SmarterCloud インスタンスで Chrome を起動する

Google Chrome を閉じます。インスタンスに持続させたい変更がある場合は、その変更を手動で行った上で、インスタンスからログアウトしてください。


イメージを取り込む

一時インスタンスは期待通り、正常に機能しています。そこで、このインスタンスをイメージとして取り込んで、以降のデプロイメントで Google Chrome を再インストールしなくても済むようにします。

  1. ICCT で「Capture (取り込み)」ボタンをクリックします。すると、ICCT GUI でのイメージのステータスが「Synchronizing (同期中)」に変わります。
    図 15. ICCT の取り込み機能を使用してイメージを作成する
    ICCT の取り込み機能を使用してイメージを作成する
  2. SmarterCloud ポータルの「Instance (インスタンス)」タブには、一時インスタンスのイメージの保存が要求されていることが通知として表示されます。
    図 16. イメージ保存の通知
    イメージ保存の通知

    これで、Google Chrome がプリインストールされた新規プライベート・イメージの取り込みが開始されます。

  3. SmarterCloud ポータルの「Image (イメージ)」タブ上では、新しいプライベート・イメージ「RHEL6WithGoogleChrome」が取り込み中として表示されます。
    図 17. SmarterCloud で取り込み中のイメージ
    SmarterCloud で取り込み中のイメージ

    新規イメージの取り込みが完了した後は、SmarterCloud ポータルで直接、取り込まれたイメージから新しいインスタンスを作成することができます。一時インスタンスは ICCT によって自動的に削除されます。

  4. イメージのステータスが「Captured (取り込み済み)」になったら、「Control Panel (コントロール・パネル)」を最新の状態に更新します。それから「Images (イメージ)」タブに戻り、取り込まれたイメージを選択して、そのイメージのソフトウェア・バンドルを表示します。イメージが正常に取り込まれた後、ICCT が RAM イメージ・アセットのセマンティック・トポロジー・ファイルを更新すると、ソフトウェア・バンドルが更新されます。
    図 18. SmarterCloud で使用可能なイメージ
    SmarterCloud で使用可能なイメージ

    これで、Google Chrome がプリインストールされているイメージを使用して、新しいインスタンスを作成することができます。

  5. ICCT で「Refresh (最新表示)」をクリックすると、イメージのステータスは「Completed (完了)」となり、その下に「Capture complete (取り込み完了)」と表示されるはずです。
    図 19. イメージ・ステータスの説明として ICCT に「Capture complete (取り込み完了)」と表示された様子
    イメージ・ステータスの説明として ICCT に「Capture complete (取り込み完了)」と表示された様子
  6. RAM で、RHEL6WithGoogleChrome image イメージ (テンプレート・トポロジー・アセット) の詳細を確認することができます。
    図 20. RAM でのテンプレート・トポロジー・アセットの全般的な詳細情報
    RAM でのテンプレート・トポロジー・アセットの全般的な詳細情報
  7. トポロジー・ファイル Rhel6.1_x64.topology を調べると、RAM UUID とバージョンが設定された GoogleChrome ソフトウェア・バンドルのアセットへのリンクが見つかるはずです。
    図 21. アセットのセマンティック・トポロジー・ファイル
    アセットのセマンティック・トポロジー・ファイル
    リスト 1. アセットのセマンティック・トポロジー・ファイル
    <core:unit uuid="_z79cOWSIEeG4Dsea31AM7A" name="bundle_455977"
     goalInstallState="installed" initInstallState="installed">
        <core:capability uuid="_z79cOmSIEeG4Dsea31AM7A" name="cap" linkType="any">
          <core:extendedAttribute uuid="_dZzakWSpEeG4Dsea31AM7A" name="symbolicName">
            <core:data xsi:type="xsd:string" uuid="_z79cO2SIEeG4Dsea31AM7A">
             <strong>com.google.chrome</strong>
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzakmSpEeG4Dsea31AM7A" name="version">
            <core:data xsi:type="xsd:string" uuid="_z79cPGSIEeG4Dsea31AM7A">
             1.0.0
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzak2SpEeG4Dsea31AM7A" name="bundleName">
            <core:data xsi:type="xsd:string" uuid="_z79cPWSIEeG4Dsea31AM7A">
             <strong>GoogleChrome</strong>
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzalGSpEeG4Dsea31AM7A" name="bundleRepoId">
            <core:data xsi:type="xsd:string" uuid="_z79cPmSIEeG4Dsea31AM7A">
             <strong>ryo-asset://07356E0D-3868-1709-0F95-AD9FF0355FF4_1.0.0@
             https://www-147.ibm.com/cloud/enterprise/ram.ws</strong>
            </core:data>
          </core:extendedAttribute>
        </core:capability>
  8. REST API を使用して、取り込まれたイメージに追加されたソフトウェア・バンドルのリストを取得するには、以下のようにします。
    リスト 2. REST API でソフトウェア・バンドルのリストを取得する
    curl -k -H 'Accept: application/json' -u <userid7gt;:<password>
     https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/
      offerings/image/${imageId}/swbundle
    where imageId is  20045166
    
    {"SwBundleImageDetails":
     [
      {"SwBundleNum":1,"SwBundlePricingDetails":
      {"rate":0,"unitOfMeasure":"UHR","countryCode":"897","effectiveDate":1313107200000,
       "currencyCode":"USD","pricePerQuantity":1},
      "RamUuid":"07356E0D-3868-1709-0F95-AD9FF0355FF4",
      "RamVersion":"1.0.0","name":"GoogleChrome","id":"2909","description":
      "Install Latest Google Chrome using yum"}
     ]
    }

インスタンスを作成する

取り込まれたイメージを使用してインスタンスを作成するには、以下の手順に従います。

  1. SmarterCloud ポータルに接続します。「Image (イメージ)」タブでイメージを選択して、「Create Instance (インスタンスの作成)」をクリックします。
    図 22. SmarterCloud でインスタンスを作成する
    SmarterCloud でインスタンスを作成する
    図 23. 使用条件に同意する
    使用条件に同意する
  2. 使用条件のページに表示されているイメージの名前とソフトウェア・バンドルに注意して、「Submit (送信)」をクリックします。
    図 24. インスタンス・リクエストを SmarterCloud に送信する
    インスタンス・リクエストを SmarterCloud に送信する
  3. インスタンスのプロビジョニングが完了すると、前の手順で検証した一時インスタンスと同じように Google Chrome が正常に機能することを検証することができます。イメージを取り込む前にブラウザーを閉じていなかった場合は、/home/idcuser/.config/google-chrome/SingletonLock を削除しなければならない場合があることに注意してください。
    図 25. SmarterCloud 上に正常に作成されたインスタンス
    SmarterCloud 上に正常に作成されたインスタンス

最後の考察と検討事項

ソフトウェア・スペシャリストは、必ず、bash スクリプトの先頭行に bash インタープリターの場所を指定する必要があります (#!/bin/bash のように表されます)。また、Virtual System Activation Engine (VSAE) が構成スクリプトやリセット・スクリプトを実行するには、インタープリターの場所が指定されている必要があり、そうでなければ、スクリプトを実行することができません。

ソフトウェア・スペシャリストが Windows プラットフォームでスクリプトを作成することにした場合は、スクリプトを ICCT にアップロードする前に、スクリプトで dos2unix ツールまたは同様のツールが実行されることを確実にする必要があります。

ソフトウェア・バンドルは、ICCT が仮想イメージを作成する際にインスタンスにダウンロードされて、インストールされます。RAM の Composable Software Bundle (構成可能なソフトウェア・バンドル) アセットは、プロビジョニング時に SmarterCloud によって自動的にインスタンスにコピーされることはありませんが、SmarterCloud ではテンプレート・トポロジー (イメージ) アセットからインスタンスにファイルをコピーできるようになっています。したがって、テンプレート・トポロジー・イメージ RAM アセットを更新するという手段で、手作業でカスタマイズを加えることができます。

Google Chrome イメージをさらにカスタマイズする必要はありませんが、ICCT を使わずに、プロビジョニング中にマイナーな変更をインスタンスに加えてから新しいイメージを取り込むとしたら、このイメージの複製を作成するか、取り込んだイメージのテンプレート・トポロジー・アセットを更新するという方法があります。

テンプレート・トポロジー・アセットに含まれるすべてのアクティベーション・スクリプトは、IBM Rational アセット・カタログ内の対応するアセットの activation_scripts フォルダーにパッケージ化する必要があります。このフォルダーには、インスタンスを構成するために必要な追加ファイルとそれぞれの保管場所を記述する scripts.txt ファイルも格納されていなければなりません。scripts.txt ファイルは、アクティベーション・スクリプトの名前と値のペアを定義します。名前は、操作している実際のファイル名、値はインスタンスに配置する必要があるファイルのフル・パスと名前です。以下に、Linux NFS サーバー・イメージの scripts.txt ファイルの例を記載します。

run_once.txt=/etc/init.d/cloud-startup3.sh
config.txt=/etc/cloud/nfs_config.pl

activation_scripts フォルダーに格納されて、scripts.txt によって参照されるスクリプト・ファイルは、インスタンスが起動される前に、インスタンスの指定のディレクトリーにコピーされます。これらのスクリプト・ファイルのいずれかが、イメージのファイルシステムにすでに存在する場合は、IBM Rational アセット・カタログのファイルで上書きされます。


まとめ

この全 2 回の記事では、単純な例を用いて IBM SmarterCloud Enterprise 上の ICCT を使ってソフトウェア・バンドルを作成し、保守する方法を説明するとともに、ICCT で作成したソフトウェア・バンドルを使用してイメージをビルドする方法を説明しました。

参考文献

学ぶために

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

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

  • developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

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, Rational
ArticleID=829928
ArticleTitle=IBM SmarterCloud Enterprise の管理: 第 2 回 ICCT を使ってソフトウェア・バンドルを使用および保守する
publish-date=08232012