目次


IBM SmarterCloud Enterprise の管理

第 2 回 ICCT を使ってソフトウェア・バンドルを使用および保守する

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: IBM SmarterCloud Enterprise の管理

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:IBM SmarterCloud Enterprise の管理

このシリーズの続きに乞うご期待。

この記事では、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 でイメージをビルドする
    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 ビット版イメージをインポートする
    RedHat Enterprise Linux 6 64 ビット版イメージをインポートする
  4. イメージのメタデータがインポートされて、左ペインに表示されます。イメージを選択すると、右ペインにイメージの詳細が表示されます。
    図 3. RedHat Enterprise Linux 6 64-bit イメージの詳細
    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 (ソフトウェア・バンドル)」セクションを展開した状態
    「Software Bundles (ソフトウェア・バンドル)」セクションを展開した状態
  7. Add Bundle (バンドルの追加)」をクリックします。すると、このイメージに対応したバンドルを選択するためのダイアログ・ボックスが表示されます。ここに、Google Chrome が選択肢として表示されています。
    図 6. Google Chrome ソフトウェア・バンドルをイメージに追加する
    Google Chrome ソフトウェア・バンドルをイメージに追加する
    Google Chrome ソフトウェア・バンドルをイメージに追加する
  8. Google Chrome」を選択して「Add (追加)」をクリックします。
    図 7. イメージ設計に追加された GoogleChrome
    イメージ設計に追加された 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 (プロビジョニング中)」のステータスになっているインスタンス
    同期後、SmarterCloud 内で「Provisioning (プロビジョニング中)」のステータスになっているインスタンス
  11. 一時インスタンスが作成されると、SmarterCloud ポータルでの一時インスタンスのステータスは「Active (アクティブ)」に変わります。
    図 10. 同期後、SmarterCloud 内でプロビジョニングが完了したインスタンス
    同期後、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 でイメージのステータスを最新の状態に更新する
    Image Construction and Composition Tool でイメージのステータスを最新の状態に更新する
    図 12. ICCT で同期に失敗した場合
    ICCT で同期に失敗した場合
    ICCT で同期に失敗した場合

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

    図 13. ICCT での同期の成功
    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 を起動する
SmarterCloud インスタンスで Chrome を起動する

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

イメージを取り込む

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

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

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

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

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

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

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

  5. ICCT で「Refresh (最新表示)」をクリックすると、イメージのステータスは「Completed (完了)」となり、その下に「Capture complete (取り込み完了)」と表示されるはずです。
    図 19. イメージ・ステータスの説明として ICCT に「Capture complete (取り込み完了)」と表示された様子
    イメージ・ステータスの説明として ICCT に「Capture complete (取り込み完了)」と表示された様子
    イメージ・ステータスの説明として ICCT に「Capture complete (取り込み完了)」と表示された様子
  6. RAM で、RHEL6WithGoogleChrome image イメージ (テンプレート・トポロジー・アセット) の詳細を確認することができます。
    図 20. RAM でのテンプレート・トポロジー・アセットの全般的な詳細情報
    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 でインスタンスを作成する
    SmarterCloud でインスタンスを作成する
    図 23. 使用条件に同意する
    使用条件に同意する
    使用条件に同意する
  2. 使用条件のページに表示されているイメージの名前とソフトウェア・バンドルに注意して、「Submit (送信)」をクリックします。
    図 24. インスタンス・リクエストを SmarterCloud に送信する
    インスタンス・リクエストを SmarterCloud に送信する
    インスタンス・リクエストを SmarterCloud に送信する
  3. インスタンスのプロビジョニングが完了すると、前の手順で検証した一時インスタンスと同じように Google Chrome が正常に機能することを検証することができます。イメージを取り込む前にブラウザーを閉じていなかった場合は、/home/idcuser/.config/google-chrome/SingletonLock を削除しなければならない場合があることに注意してください。
    図 25. SmarterCloud 上に正常に作成されたインスタンス
    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 で作成したソフトウェア・バンドルを使用してイメージをビルドする方法を説明しました。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

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