目次


IBM SmarterCloud Enterprise の管理

第 1 回 ICCT を使って VM 用のソフトウェア・バンドルを作成する

Comments

コンテンツシリーズ

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

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

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

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

この記事では、IBM Image Construction and Composition Tool (ICCT) の概要を説明し、IBM SmarterCloud Enterprise 上でソフトウェア・バンドルを作成して保守する方法をステップ・バイ・ステップで説明します。具体的には、Google Chrome のソフトウェア・バンドルを作成する場合を例に、Chrome ソフトウェア・バンドルのメタデータを定義する手順、インストール・スクリプトを追加する手順、そしてバンドルを IBM SmarterCloud Enterprise に登録する手順を説明します。この記事では読者がクラウドの基本概念を理解していることを前提とします。記事で説明する手順を実際に試すには、IBM SmarterCloud Enterprise のユーザー・アカウントが必要です。

Image Construction and Composition Tool

SmarterCloud 上の ICCT は、仮想マシン・イメージの作成を単純化かつ自動化する Web アプリケーションです。ICCT は、SmarterCloud 上にプロビジョニング可能なイメージとして提供されます。

SmarterCloud 上の ICCT では、仮想イメージのライフサイクルで行われるタスクを以下の役割で分類します。

  • オペレーティング・システム・スペシャリストの役割: オペレーティング・システムの基本イメージを作成します。イメージのビルド担当者は、この基本イメージを出発点としてイメージを作成します。この基本イメージは、企業の標準的な OS 構成、ライセンス契約、セキュリティー・ポリシーを表します。
  • ソフトウェア・スペシャリストの役割: ソフトウェア・バンドルを作成します。ソフトウェア・バンドルとは、ソフトウェア製品またはコンポーネントが含まれる再利用可能なアセットのことです。
  • イメージのビルド担当者の役割: 基本イメージと 1 つ以上のソフトウェア・バンドルをアセンブルして、仮想イメージ・テンプレートを作成します。
  • イメージのデプロイ担当者の役割: それぞれのインスタンスに固有のパラメーターを指定して、SmarterCloud の中でインスタンスをプロビジョニングします。

ICCT は、ソフトウェア・バンドルの作成と、仮想イメージ・ライフサイクルの作成およびデプロイ・フェーズをサポートします。

次は、ソフトウェア・バンドルの作成、仮想イメージの作成、仮想イメージのデプロイでの作業内容について詳しく探りましょう。

ソフトウェア・バンドルの作成

ソフトウェア・スペシャリストは、極めて柔軟にバンドルを定義して、ソフトウェア・バンドルの粒度を選択することができます。ソフトウェア・バンドルは、1 つ以上の製品のインストールおよび構成タスクを単純な 1 つのコンテナーにカプセル化するものです。ICCT は、ユーザーが依存関係、前提条件、ファイアウォール・ルールを設定し、スクリプトとバイナリーを 1 つのソフトウェア・バンドルに収集できるように支援します。

インストール・メディアをどこにパッケージ化するかは、ソフトウェア・スペシャリストが決定しなければなりません。バンドルの操作に関連するすべてのファイルは、Rational Asset Manager (RAM) 内の Composable Software Bundle (構成可能なソフトウェア・バンドル) アセットにアップロードされて保管されます。このバンドル・アセットのディレクトリー構造は、バンドルの操作に関連するすべてのファイルが確実に同じサブディレクトリー内に保管されるようになっています。異なる操作に同じ名前のファイルが関連付けられているとしても、この構造により、競合が発生することはありません。

製品インストール・メディアをソフトウェア・バンドルにパッケージ化すると、大抵は同期の際に大きなサイズのバンドルが転送されることになります。そのため、これに代わる方法として、外部 Web サーバーに配置して wget を使って取得する方法や、NFS にマウントする方法があります。

ICCT では「Install (インストール)」タブと「Configuration (構成)」タブを使用して、製品バンドルのインストールおよび構成を行うことができます。

  • Install (インストール)」タブ: このタブでは、ソフトウェア・スペシャリストは、仮想イメージのビルド時に実行するスクリプトを定義することができます。ここには、従来の製品インストール・スクリプトおよびバイナリーを定義することができます。
  • Configuration (構成)」タブ: このタブでは、ソフトウェア・スペシャリストは、ビルド時に仮想イメージにコピーされて仮想イメージがデプロイされるまでは実行されない構成スクリプトを定義することができます。そのような構成スクリプトとしては、従来の構成スクリプトだけでなく、インストール処理中に適用されたデフォルト構成を再構成するためのスクリプトもあります。
  • Reset (リセット)」タブ: このタブでは、同期中に作成されたログまたは一時ファイルをクリーンアップするスクリプトの情報が記載されます。このスクリプトは、取り込みプロセス中に ICCT によって実行されます。
  • Firewall (ファイアウォール)」タブ: リモート・クライアントに対してサービスを提供するソフトウェア・パッケージは、Web サーバーを提供する IBM HTTP Server をはじめ、数多くあります。これらのサービスに正常にアクセスするためには、製品のインストールおよび構成時にネットワーク・アクセスを有効にしなければなりません。このタブでは、ソフトウェア・スペシャリストは、オープンするインバウンド・サービス・ポートのセットを指定して、サービスへのアクセスを許可します。例えば、IBM HTTP Server のソフトウェア・バンドルの場合には、管理ポート (8008) とサービス・ポート (80、443) をオープンすることになります。

ソフトウェア・スペシャリストが行わなければならない重要なタスクは、仮想イメージの作成およびデプロイ時に実行されるインストール・スクリプト、構成スクリプト、リセット・スクリプトの作成です。ICCT はスクリプトを利用して以下の処理を行います。

  1. バンドルに含まれるソフトウェアおよびソフトウェア・コンポーネントをインストールし、構成します。
  2. デプロイ時にバンドルがデプロイメント・パラメーターを使用して、その内部に含まれるソフトウェアをカスタマイズできるようにします。
  3. そのバンドルを仮想イメージにインストールして取り込む前に、バンドルのインストールおよび構成によって作り出されたあらゆる状態をクリーンアップ (不要なファイル、情報、設定などを削除) します。

ICCT はスクリプトからのフィードバックに基づき、処理が正常に実行されたかどうかを判断します。ソフトウェア・スペシャリストは、ICCT が終了コード「0」を成功として扱い、それ以外の終了コードは失敗として扱うことを認識していなければなりません。

仮想イメージの作成

仮想イメージ・ライフサイクルの作成フェーズは、仮想イメージの作成、同期、取り込みが行われるフェーズです。このフェーズは、以下のステップからなります。

  • 作成: 作成フェーズのこのステップでは、新しい名前とバージョンが指定された仮想イメージが作成され、その際に「イメージ設計 (image design)」と呼ばれるレシピが作り出されます。このレシピに、基本イメージと 1 つ以上のバンドルを選択して追加することで、カスタム・レシピになります。
  • 同期: このステップでは、イメージ設計が一時的な仮想マシン・インスタンスに変換されます。仮想マシンが作成されると、そこにソフトウェア・バンドルがインストールされます。各ソフトウェア・バンドルのインストール・スクリプトが実行されて、バンドルされたソフトウェアが一時仮想マシンにサイレント・インストールされます。この仮想マシンに、プロセスの後のほうで実行される構成スクリプトとリセット・スクリプトがコピーされます。
  • 取り込み: このステップでは、一時インスタンスにソフトウェア・バンドルがプリインストールされたイメージが、プライベート・イメージとして取り込まれます。ICCT は仮想イメージ内の各バンドルに対してリセット・スクリプトを実行してオペレーティング・システムをリセットし、SmarterCloud が取り込みを完了できるようにします。SmarterCloud が取り込みを完了すると、最後に ICCT が RAM 内のセマンティック・トポロジー・ファイルを更新します。

仮想イメージのデプロイ

仮想イメージ・ライフサイクルのデプロイ・フェーズでは、イメージのデプロイ担当者が、作成フェーズで作成されたプライベート・イメージから仮想マシン・インスタンスをプロビジョニングします。このフェーズで行われるステップは、以下のとおりです。

  • 構成: イメージのデプロイ担当者は、デプロイする仮想イメージに応じて、インスタンス固有のパラメーターを指定します。バンドルされたソフトウェアに関連付けられたユーザー ID、パスワード、ポートなどの (インスタンスごとに構成可能な) イメージ・デプロイメント・パラメーターも収集されます。
  • プロビジョニング: SmarterCloud が、アクティブ・モードのインスタンスと仮想マシンをプロビジョニングします。オペレーティング・システムが初めてブートされると、バンドルされたソフトウェアがアクティベーション・フェーズを開始します。
  • アクティベーション: Activation Engine はデプロイメントで使用するパラメーターの値を受け取ると、それに応じて適切な構成スクリプトを呼び出します。バンドルされたソフトウェアとそのコンポーネントは、イメージのデプロイ担当者が指定した値を使用して自らを再構成します。Activation Engine は ICCT のコンポーネントであり、基本イメージの拡張プロセスで基本イメージにインストールされます。ICCT は、すべての仮想イメージを拡張してイネーブルメント・バンドルを組み込みます。ICCT は仮想イメージ設計を最初に作成する際に、イネーブルメント・バンドルが含まれていなければ、イメージにイネーブルメント・バンドルを追加します。

図 1 に、仮想イメージ・ライフサイクルの概要と、各役割が行うタスクを示します。

図 1. ICCT がサポートする仮想イメージ・ライフサイクル
ICCT がサポートする仮想イメージ・ライフサイクル
ICCT がサポートする仮想イメージ・ライフサイクル

ここからは、早速 SmarterCloud 上に ICCT を作成してセットアップする手順に取り掛かりましょう。

SmarterCloud 上に ICCT を作成してセットアップする

Google Chrome をインストールする単純な例に沿って、上記で説明したフェーズをひと通り説明します。

  1. SmarterCloud にログインし、IBM Image Construction and Composition Tool イメージを選択して ICCT インスタンスを作成します。ICCT インスタンスをプロビジョニングした後、https://<ICCT の IP アドレス>/ に接続し、このインスタンスをデプロイするときに指定したユーザー ID とパスワードを使ってログインします。

    注: 既存の ICCT 仮想マシン・インスタンスを使用していて ICCT の URL から応答がない場合には、その仮想マシン・インスタンスに idcuser としてログインし、以下のコマンドを実行して ICCT アプリケーションを再起動する必要があるかもしれません。

    sudo /opt/IBM/icon/start.sh

    図 2 に、新規クラウド・プロバイダー作成ウィザードの最初のパネルを示します。

    図 2. 新規クラウド・プロバイダー作成ウィザードの最初のパネル
    新規クラウド・プロバイダー作成ウィザードの最初のパネル
    新規クラウド・プロバイダー作成ウィザードの最初のパネル
  2. Next (次へ)」をクリックした後、SmarterCloud にログインするためのユーザー名とパスワードを入力します。
    図 3. クラウド資格情報を入力するパネル
    Panel for entering cloud credentials
    Panel for entering cloud credentials
  3. Next (次へ)」をクリックします。次のパネルでは、プライベート・イメージに使用するデータ・センターの名前と説明を入力します。後で、別のデータ・センターを対象としたクラウド・プロバイダーとキーを追加で作成することもできます。クラウド・プロバイダー・タイプには、「IBM SmartCloud Enterprise」を選択してください。この例では、エーニンゲン (Ehningen) データ・センターを使用します。
    図 4. クラウド・プロバイダーの情報を入力するパネル
    Panel for cloud provider information
    Panel for cloud provider information
  4. Next (次へ)」をクリックすると、前のステップで入力した資格情報に基づいて、使用可能な公開鍵とデータ・センターの情報が SmarterCloud から取得されます。使用する公開鍵の名前を選択し、アップロードするローカルの秘密鍵を「Browse (参照)」ボタンを利用して指定し、データ・センターのロケーションを選択します。
    図 5. SSH 鍵の情報を指定するパネル
    SSH 鍵の情報を指定するパネル
    SSH 鍵の情報を指定するパネル
  5. Next (次へ)」をクリックして、表示された情報を確認します。ICCT はユーザー資格情報と秘密鍵を暗号化し、そのデータを前に指定されたクラウド・プロバイダー名で ICCT インスタンスに保存します。SmarterCloud からイメージとソフトウェア・バンドルのメタデータを取得するには、このクラウド・プロバイダー名を使用します。秘密鍵は、イメージを取り込む前にユーザーに代わってソフトウェア・バンドルを一時インスタンスにインストールするために使用されます。
    図 6. 資格情報の要約パネル
    資格情報の要約パネル
    資格情報の要約パネル
  6. Done (完了)」をクリックします。これで、ICCT の「Welcome (ウェルカム)」ページが表示されます。
    図 7. 「Welcome (ウェルカム)」ページ
    「Welcome (ウェルカム)」ページ
    「Welcome (ウェルカム)」ページ

SmarterCloud 上の ICCT によってソフトウェア・バンドルを作成する

以下の手順に従ってソフトウェア・バンドルを作成します。

  1. Build and Manage Software Bundles (ソフトウェア・バンドルのビルドと管理)」をクリックします。左ペインに表示される「Bundles (バンドル)」パネルには、デフォルトで用意されているローカル・イネーブルメント・バンドルが表示されています。
    図 8. ソフトウェア・バンドル管理用の最初のパネル
    ソフトウェア・バンドル管理用の最初のパネル
    ソフトウェア・バンドル管理用の最初のパネル
  2. 新しいソフトウェア・バンドルの作成を開始するには、パネル最上部にある「+」アイコンをクリックします。すると、新しいダイアログ・ボックスが表示されるので、ここに、新しく作成するソフトウェア・バンドルの名前、ユニバーサル ID、バージョン、説明を入力します。「Storage Location (ストレージ・ロケーション)」には、先ほど作成したクラウド・プロバイダーを選択してください。「Community (コミュニティー)」の設定は、デフォルトの Primary Enterprise Community のままにします。
    図 9. 新規ソフトウェア・バンドル用のパネル
    新規ソフトウェア・バンドル用のパネル
    新規ソフトウェア・バンドル用のパネル
  3. Create (作成)」ボタンをクリックします。すると、左ペインのバンドルのリストに新規バンドルが追加され、鉛筆アイコンと共に表示されます。右ペインには入力した情報と (最下部に) 空の製品リストが表示されます。
    図 10. ソフトウェア・バンドルの基本情報用のパネル
    ソフトウェア・バンドルの基本情報用のパネル
    ソフトウェア・バンドルの基本情報用のパネル
  4. バンドル表の「Products (製品)」の隣にある「+」アイコンをクリックし、Google Chrome ブラウザーを追加します。情報を編集するために、「Product Name (製品名)」、「Version (バージョン)」、「Vendor (ベンダー)」の下にある編集ボックスをダブルクリックします。
    図 11. ソフトウェア・バンドルの基本情報用のパネル
    ソフトウェア・バンドルの基本情報用のパネル
    ソフトウェア・バンドルの基本情報用のパネル
  5. Requirements (要件)」タブをクリックして、サポートされるオペレーティング・システムとして Linux を追加します。通常は、以下の属性を指定する必要があります。
    • Type (種類): オペレーティング・システムの種類 (Linux、Windows など)
    • Distribution (ディストリビューション): OS 固有のディストリビューション (RHEL、SLES など)
    • Architecture (アーキテクチャー): サポートされるカーネル・アーキテクチャーの説明
    • Version (バージョン): OS アーキテクチャーの説明。何種類かのワイルドカードを使用できます。
      • 5.x — この場合の x は、特定の桁のプレースホルダーを表します。
      • 10.1+ — この場合の + は、バージョン 10.1 以上を表します。

    「Type (種類)」の値として「Linux」を選択し、それ以外の属性は空のままにします。

    図 12. ソフトウェア・バンドルの要件情報用のパネル
    ソフトウェア・バンドルの要件情報用のパネル
    ソフトウェア・バンドルの要件情報用のパネル
  6. このバンドルには依存関係がまったくないので、「Required Software (必要なソフトウェア)」と「Required Bundles (必要なバンドル)」のフィールドは空になります。

    以下のインストール・スクリプトは、リポジトリーをセットアップして、そこに 64 ビット版 Chrome をダウンロードしてインストールします。このスクリプトを「installgooglechrome.sh」という名前でローカルに保存してください。

    sudo echo "[google-chrome]" > /tmp/google.repo
    sudo echo "name=google-chrome - 64-bit" >> /tmp/google.repo
    sudo echo "baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64"
     >> /tmp/google.repo
    sudo echo "enabled=1" >> /tmp/google.repo
    sudo echo "gpgcheck=1" >> /tmp/google.repo
    sudo echo "gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub"
     >> /tmp/google.repo
    sudo mv /tmp/google.repo /etc/yum.repos.d/google.repo
    sudo yum install -y google-chrome-unstable
  7. Install (インストール)」タブをクリックします。このインストール・セクションには、ソフトウェアのインストールごとに実行する内容を指定します。
  8. +」アイコンをクリックして「installgooglechrome.sh」を追加し、実行可能ファイルとして「Executable (実行可能)」にチェック・マークを付けます。さらに、このスクリプトを「Run Command (実行コマンド)」として選択し、ルートとして実行されるように「Run As (実行ユーザー)」には「root」を指定します。このスクリプトは引数を取らないため、「Arguments (引数)」は空のままにしておきます。
    図 13. ソフトウェア・バンドル・インストール情報用のパネル
    ソフトウェア・バンドル・インストール情報用のパネル
    ソフトウェア・バンドル・インストール情報用のパネル
  9. その隣にあるのは「Configuration (構成)」セクションです。Google Chrome の場合、仮想マシン・インスタンスのデプロイ時に実行しなければならないスクリプトはないため、このセクションは空のままにしておきます。インスタンスごとに引数を構成してイメージをインスタンス化する必要がある場合には、このセクションを使用します。
  10. 「Firewall (ファイアウォール)」セクションは、オープンすべきポートを設定するために使用します。インストールごとに、このセクションをリセットしてログをクリーンアップしてください。Google Chrome の場合、「Configuration (構成)」タブと「Firewall (ファイアウォール)」はどちらも使用しません。
  11. インストール・スクリプトを更新して、32 ビット版と 64 ビット版の両方を使用できるようにします。
    uname -a | grep x86_64
    if [ $? -eq 0 ]; then
    # Use 64 bit repository
    else
    # Use 32 bit repository
    Fi
  12. Save (保存)」ボタンをクリックしてから、「Publish (公開)」ボタンをクリックします。
    図 14. 「Published (公開済み)」に変更されたステータス
    「Published (公開済み)」に変更されたステータス
    「Published (公開済み)」に変更されたステータス

SmarterCloud 上のソフトウェア・バンドルを保守する

バンドルを保守するための主要なタスクには、バンドル情報の取得と更新の 2 つがあります。

ソフトウェア・バンドルを取得する

ソフトウェア・バンドルの情報を取得するには、いくつかの手段があります。REST API を使用する場合は、以下のようなリクエストでソフトウェア・バンドル情報を取得します。

図 15. ソフトウェア・バンドル情報を取得するための REST API リクエスト
ソフトウェア・バンドル情報を取得するための REST API リクエスト
ソフトウェア・バンドル情報を取得するための REST API リクエスト

あるいは、以下のコードを使用することもできます。

curl -k -H 'Accept: application/json' -u <userid>:<password>
 https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/offerings/swbundle

上記の手順で作成した GoogleChrome ソフトウェア・バンドルの場合、以下のレスポンスを受け取ります。

図 16. ソフトウェア・バンドル情報の取得リクエストに対するレスポンス
ソフトウェア・バンドル情報の取得リクエストに対するレスポンス
ソフトウェア・バンドル情報の取得リクエストに対するレスポンス

もう 1 つの手段としては、SmarterCloud ポータルにアクセスして、「Control Panel (コントロール・パネル)」 > 「View Asset Catalog (アセット・カタログの表示)」 > 「My Dashboard (マイ・ダッシュボード)」の順にクリックします。これで、RAM 内の GoogleChrome アセットを確認することができます。

図 17. RAM 内の GoogleChrome アセット
RAM 内の GoogleChrome アセット
RAM 内の GoogleChrome アセット

図 18 に、GoogleChrome アセットの全般的な詳細情報を示します。

図 18. RAM での GoogleChrome アセットの全般的な詳細情報
RAM での GoogleChrome アセットの全般的な詳細情報
RAM での GoogleChrome アセットの全般的な詳細情報

RAM 内での一意の ID (07356E0D-3868-1709-0F95-AD9FF0355FF4) とバージョン (1.0.0) をメモしておいてください。第 2 回の例では、この情報を使用して新しいイメージを取り込みます。

図 19. RAM 内の GoogleChrome アセットの内容
RAM 内の GoogleChrome アセットの内容
RAM 内の GoogleChrome アセットの内容

ソフトウェア・バンドルを更新する

RAM 内のスクリプト (例えば、installgooglechrome.sh) を直接編集して変更するには、「Content (コンテンツ)」をクリックします。

図 20. アセット内の installgooglechrome.sh スクリプト
アセット内の installgooglechrome.sh スクリプト
アセット内の installgooglechrome.sh スクリプト

スクリプトを直接変更するには、必ず ICCT 仮想マシンにログインして、キャッシュされた同じスクリプトを検索し、対応する変更を ICCT 仮想マシン内でも行ってください。

例えば、installgooglechrome.sh を RAM 内で直接変更するとしたら、以下のように ICCT 仮想マシン上でこのスクリプトを検索します。

idcuser@vhost4244:/> cd /drouter
idcuser@vhost4244:/drouter> find . -name installgooglechrome*
./ramdisk2/mnt/raid-volume/raid0/local/images/789d525e-ad75-4cc1-a25b-360534713d8c
 /artifacts/com.google.chrome_1.0.0/imageBuild/newstep/installgooglechrome.sh
./ramdisk2/mnt/raid-volume/raid0/uploads/be7aa215-f0ab-4d98-8acc-7dc427ee4877
 /installgooglechrome.sh

そのファイルを編集して、RAM で行った変更と同じ変更を加えます。

まとめ

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


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


関連トピック


コメント

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Rational
ArticleID=829886
ArticleTitle=IBM SmarterCloud Enterprise の管理: 第 1 回 ICCT を使って VM 用のソフトウェア・バンドルを作成する
publish-date=08232012