Linux のコマンド・ラインを使用して IBM Cloud にインスタンスを作成する

Linux のコマンド・ラインを使用して IBM SmartCloud Enterprise 環境にインスタンスを作成する方法を学びましょう。この記事では、コマンド・ラインを使用するようにインスタンスを構成する方法、そしてコマンド・ラインを使用してインスタンスを作成するためのステップについて説明します。また、単純なスクリプトを使用して複数のインスタンスを作成する方法についても説明します。

Boas Betzler, Senior Technical Staff, IBM

Boas Betzler はシニア・テクニカル・スタッフ・メンバーであり、IBM Academy of Technology のメンバーでもあります。彼は、パブリックな IBM Compute Cloud と IBM Shared Private Production Cloud の両方のイメージ・センターをワールドワイドに担当しています。



Du Li Juan , Staff Software Engineer, IBM

Du Li Juan は IBM GTS Platform Integration and Deployment Services の L3 チーム・リーダーとして IBM に入社し、Lotus Domino 技術をベースとするサービス自動化ソリューションの開発とサポートを担当してきました。彼女は現在、IBM Smart Business Development and Test Cloud のベスト・プラクティスに関する業務を行っています。



2011年 1月 05日

IBM SmartCloud Enterprise では、企業向けにオン・デマンドの開発およびテスト用インフラストラクチャー・サービスを提供しています。この環境により、企業の組織はプロジェクトのインフラストラクチャーのセットアップや実行が必要なくなるため、開発やテストの作業に要するコストと時間を削減することができます。またこの環境には、インスタンスのプロビジョニング、イメージの作成、ストレージ・ボリュームの作成、IP アドレスの追加といった管理を容易にする機能も用意されています。

IBM Cloud (IBM Smart Business Development and Test Cloud) とインターフェースを取る手段としては、GUI (Graphical User Interface)、HTTP REST API、コマンド・ライン・ツールの 3 つが用意されています。

  • GUI は最もよく使われる手段です。
  • HTTP REST API はプログラミング言語として機能します。この API を使用して独自のアプリケーションやサードパーティーのアプリケーションからの呼び出しを作成し、クラウドを操作することができます。
  • コマンド・ライン・ツールは、管理タスク、特に反復的なタスクを実行するための効率的な手段です。

この記事では、Linux で CL (コマンド・ライン) ツールを使用する方法について説明します (コマンド・ライン・ツールは Windows と Linux の両方をサポートしています)。Windows でコマンド・ラインを使用する方法については別の記事を参照してください。この記事では、コマンド・ライン・ツールを使用するようにインスタンスを構成する方法、CL ツールをインストールする方法、そして CL ツールを使用して他のインスタンスやリソースを管理する方法について説明します。また CL ツールのコマンドをベースにスクリプトを作成し、コマンドを繰り返し実行する方法や、複数のインスタンスを作成するためのサンプル・スクリプトも紹介します。

コマンド・ライン・ツールを使用できるようにインスタンスを構成する

コマンド・ライン・ツールをインストールするためのインスタンスを 1 つ選択します。例えば SUSE Test 001 という名前の SUSE インスタンスがあるとします。PuTTY を使用して、そのインスタンスにアクセスします (「Account (アカウント)」タブの下には SSH のデモ・ビデオがあり、PuTTY を使用して Linux インスタンスにアクセスする方法が説明されています)。新たに作成された Linux インスタンスのデフォルト・ユーザーは idcuser です。この ID はさまざまな Linux コマンドを root として実行できるようにデフォルトで設定されています。この ID によって実行できる Linux コマンドを確認するためには、以下のように sudo -l を実行します。

idcuser@vhost0925:~/cloud/commandline> sudo -l
User idcuser may run the following commands on this host:
    (ALL) ALL
    (ALL) NOPASSWD: ALL

(ALL) ALL」は、idcuser というユーザーがすべてのコマンドを root として実行できるという意味です。「(ALL) NOPASSWD」はコマンドを実行する際にパスワードが必要ないことを意味します。コマンドの前に単純に sudo を追加すると、ユーザーは root としてコマンドを実行できるようになります (以下の例は sudo を使用して yast を root として開く方法を示しています)。

idcuser@vhost0925:~/test> sudo /sbin/yast

インスタンスを構成する手順は以下のとおりです。

  1. IBM パブリック・クラウドの Web サイトの「Support (サポート)」タブからコマンド・ライン・パッケージをダウンロードし、scp コマンドを使用して皆さんのインスタンスにコピーします。
    1. IBM Cloud の「Support (サポート)」タブで「Command Line Tool Reference (コマンド・ライン・ツールのリファレンス)」をクリックし、それが開いたら左側にあるメニューの「Content (コンテンツ)」をクリックして DeveloperCloud_CMD_Tool.zip をダウンロードします。
    2. scp コマンドを使用し、コマンド・ライン・ツールを Linux インスタンスに安全にコピーします。Windows システムでは、pscp コマンドを使用してコマンド・ライン・パッケージをインスタンスにコピーします。

      この ZIP ファイルを Windows システムから Linux インスタンスにコピーするためには、PuTTY の Web サイトから PSCP.exe をダウンロードし、PSCP.exe が保存された場所 (c:/pscp.exe など) にカレント・ディレクトリーを変更して以下のコマンドを実行します。
      C:\> pscp –l idcuser –i D:\key\user_pk.ppk –pw ibmcloud D:\ 
      cmd_Tool\DeveloperCloud_CMD_Tool.zip 
      idcuser@10.200.5.217:/home/idcuser/cloud/commandline

      ZIP ファイルを Linux システムから Linux インスタンスにコピーするためには、以下のように scp コマンドを実行します。
      # scp /home/cloud/DeveloperCloud_Tool.zip 
      idcuser@10.200.5.217:/home/idcuser/cloud/commandline
  2. このパッケージを新しいフォルダーに解凍し、スクリプト・ファイルに実行許可を設定します (つまり拡張子を .sh にします)。
    1. コマンド・ライン・ツール・パッケージを解凍し、以下のコマンドを入力します (コマンドの前に必ず sudo を追加し、idcuser がそのコマンドを root として実行できるようにする必要があることに注意してください)。
      idcuser@vhost0925:~/cloud/commandline> sudo unzip -o DeveloperCloud_CMD_Tool.zip
    2. コマンド・ライン・ツールを解凍したフォルダーにアクセスし、そのフォルダーの下にあるすべてのファイルのアクセス権を調べます。

      ls –ll を実行し、すべてのファイルのアクセス権を調べます。ファイルの所有者が idcuser ではない場合には、所有者を idcuser に変更します。以下の例ではコマンド・ライン・ファイルが commandline フォルダーにあります。–R を使用して、commandline フォルダーの下にあるすべてのファイルの所有者を変更します。
      idcuser@vhost0925:~/cloud> Sudo chown –R idcuser commandline

      グループが users ではない場合には、ファイルの所有者を users に変更します。
      idcuser@vhost0925:~/cloud> Sudo chgrp –R users commandline
    3. すべてのユーザーに対し、すべてのコマンド・ファイルを実行できる権限を付与し、ユーザーがすべてのコマンドを実行できるようにします。
      idcuser@vhost0925:~/cloud>  chmod –R a+x  commandline
    4. コマンド・ライン・ツールを使用してコマンドを実行する際、ログ・ファイルにログを書き込む必要があります。そのため、すべてのユーザーに対し、ログ・ファイルに書き込むための権限を設定する必要があります。
      idcuser@vhost0925:~/cloud/commandlin> chmod –R a+w  logs
  3. YaST の「software management (ソフトウェア管理)」メニューから IBM 版の Java をインストールします。
    1. コマンド・ライン・ツールを実行するためには jdk1.6 をインストールする必要があります。Linux インスタンスが SUSE の場合には、jdk1.6 がインストールされているかどうかを yast を使用して確認します。以下の Linux コマンドを入力します。
      idcuser@vhost0925:~/cloud>  sudo /sbin/yast

      この Java パッケージを検索します。java 1.6 がインストールされていない場合には手動でインストールします。jdk1.6 をダウンロードし、Linux インスタンスの /usr ディレクトリーの下にコピーします (Linux では scp を使用し、Windows では pscp を使用します)。root として実行できるように、コマンドの前に必ず sudo を追加します。
    2. Java パッケージを解凍し、インストールします。
      idcuser@vhost0925:/usr/lib64> sudo ./jdk-6u23-linux-x64-rpm.bin
      idcuser@vhost0925:/usr/lib64> sudo rpm -ivh jdk-6u23-linux-amd64.rpm
    3. どこに Java パッケージがインストールされているかを検索します。カレント・ディレクトリーを /usr に変更し、以下のコマンドを入力します。その結果から、Java が /usr/java/jdk1.6.0_23 にインストールされていることがわかります。
      idcuser@vhost0925:/usr> find -name java
      ./share/doc/packages/db/ref/java
      ./share/java
      find: ./share/YaST2/data/support: Permission denied
      ./bin/java
      find: ./lib/man-db: Permission denied
      find: ./lib/bootloader: Permission denied
      ./java
      ./java/jdk1.6.0_23/bin/java
      ./java/jdk1.6.0_23/jre/bin/java
  4. Java 環境を設定します。
    1. Java コードの正確なパスがわかったので、スクリプト・コマンドが実行されて適切に動作するように、そのパスをエクスポートする必要があります。JAVA _HOME パスを以下のように設定します。
      export JAVA_HOME=/usr/java/jdk1.6.0_23
    2. /etc/profile で Java 環境変数を設定するためには、このファイルの最後にこの後示すコードを追加し、システム環境に JAVA_HOMEPATH が設定されるようにします。/etc/profile を編集するためには以下のコマンドを入力します。
      idcuser@vhost0925:/usr> sudo vi /etc/profile

      以下のコードを挿入します。
      #set java environment
      JAVA_HOME=/usr/java/jdk1.6.0_23
      CLASSPATH=.:$JAVA_HOME/lib/tools.jar
      PATH=$JAVA_HOME/bin:$PATH
      export JAVA_HOME CLASSPATH PATH
    3. 以下のように echo コマンドを使用し、Java 環境が適切に設定できたかどうかを確認します。
      idcuser@vhost0925:/usr> echo $JAVA_HOME
      idcuser@vhost0925:/usr> echo $PATH

インスタンスを作成する

以下の手順によって、シェル・スクリプト・コマンドを使用して手動で処理を行うインスタンスを作成することができます。

コマンド・ラインを使用してインスタンスを作成するためには、以下の手順に従います。

  1. コマンド・ライン・ツールを使用するクライアント・システム上にパスワード・ファイルを作成する
  2. データ・センターの ID を入手する
  3. インスタンス・タイプを入手する
  4. インスタンスのキーを入手する
  5. インスタンスを作成する

パスワード・ファイルを作成する

コマンド・ライン・ツールを使用する前に、まずパスワード・ファイルを作成し、コマンド・ラインにパスワードを入力する際にパスワードが盗まれないようにする必要があります。

コマンド・ラインに以下のコマンドを入力します。

#./ic-create-password.sh -u <user name> -p <password> -w unlock -g /home/idcuser/pass.txt

すると以下の内容が表示されるはずです。

Executing action: CreatePassword ...
Password File created successfully!
Path : /home/idcuser/pass.txt
File Name : pass.txt
Please do not edit this file!
Created password successfully.
Executing CreatePassword finished

データ・センターの ID を入手する

データ・センターというのは、イメージとインスタンスが置かれている場所です。

コマンド・ラインに以下のコマンドを入力します。

#./ic-describe-locations.sh -u <username> -w <passphrase> -g <password file>

すると以下の内容が表示されるはずです。

Executing action: Describe Locations ...
4 locations!
----------------------------------
ID : 41
Location : RTP
Name : RTP
State : ONLINE
Description : RTP  usrdtsa0a1ccxra
----------------------------------
----------------------------------
ID : 61
Location : EHN
Name : EHN
State : ONLINE
Description :
----------------------------------
----------------------------------
ID : 82
Location : us-co-dc1
Name : us-co-dc1
State : ONLINE
Description : BLD main DC
----------------------------------
Executing Describe Locations finished

インスタンス・タイプを入手する

以下のコマンドを入力すると、ID とインスタンス・タイプの ID を入手することができます。コマンド・ラインに以下のコマンドを入力します。

#./ic-describe-images.sh -u <username> -w <passphrase> -g <password file path>

すると以下の内容が表示されるはずです。

ID : 20003155
    InstanceType ID : BRZ32.1/2048/60*175
    InstanceType ID : COP32.1/2048/60
    InstanceType ID : GLD32.4/4096/60*350
    InstanceType ID : SLV32.2/4096/60*350
ID : 20007821
    InstanceType ID : BRZ32.1/2048/60*175
    InstanceType ID : COP32.1/2048/60
    InstanceType ID : GLD32.4/4096/60*350
    InstanceType ID : SLV32.2/4096/60*350

インスタンスのキーを入手する

コマンド・ラインに以下のコマンドを入力します。

#./ic-describe-keypairs.sh -u <username> -w <passphrase>  -g <password file path>

この結果からキーの名前を入手します。このキーはインスタンスを作成する際に必要です。

インスタンスを作成する

インスタンスを作成する際には、以下のパラメーターをコマンドと組み合わせて使用します。これらのパラメーターの情報を必ず入手しておく必要があります。

  • -u: ユーザー名
  • -w: パスフレーズ
  • -g: パスワード・ファイル
  • -t: インスタンスのタイプ
  • -k: イメージの ID
  • -c: アクセス・インスタンスのキーの名前
  • -L: データ・センターの ID
  • -n: インスタンスの名前
  • -d: インスタンスの説明

コマンド・ラインに以下のコマンドを入力します。

#./ic-create-instance.sh -u <username> -w <passphrase> -g <password file path> 
-t <instance type> (for example, COP32.1/2048/60) -k <image id> (for example, 20010002)  
-c <key name> -L <datacenter ID> (for example, 61) 
-n <instance name> (for example, SLES11SP1_32_cmd) -d "CMD line instance"

独自のスクリプト・ファイルを使用して複数のインスタンスを作成する

以下のサンプル・スクリプトを利用すると、GUI を使用せずに IBM Cloud 上に複数のインスタンスを作成することができます。

このスクリプトでは、while ループを使用して 3 つのインスタンスを作成することができます。ただし LIMIT のサイズを変更することで (LIMIT=x)、さらに多くのインスタンスを作成することもできます。

#!/bin/sh
var=0
LIMIT=3
while [ "$var" -lt "$LIMIT" ]
do
echo -n "$var0 " # -n suppresses newline.
res=`sh ic-create-instance.sh -u user@ibm.com -w abcd -g /home/idcuser/pass.txt 
   -t COP32.1/2048/60 -n SLES11SP1-N$var -k 20010002 -c user_key -d "New Instance" 
   -L 61`;
echo $res
var=`expr $var + 1` # var0=$(($var0+1)) also works.
Done

このスクリプトを使用する場合、以下の 2 点に注意する必要があります。

  1. スクリプト・コマンド・フォルダーにスクリプトを保存する必要があります。
  2. このスクリプトを作成する前に、ic-create-instance を使用してインスタンスを作成するのに必要なすべての必須パラメーターを認識しておく必要があります。

このインスタンスを使用するプライベート・イメージを作成する

インスタンスの中でコマンド・ライン・ツールを適切に構成できたら、そのツールをプライベート・イメージとして保存します。このイメージには、このコマンド・ライン・ツールのために作成した構成がすべて含まれています。コマンド・ライン・ツールを使用するインスタンスを作成したい場合には、このイメージを使用してインスタンスを作成すると、コマンド・ライン・ツールが自動的に追加されます。

コマンド・ライン・ツールをプライベート・イメージとして保存するには、以下のコマンドを入力します。

#./ic-save-instance.sh 
 -u <username> 
 -w <passphrase> 
 -g <password file path> 
 -l <instance id> (for example, 42828)
 -n <image name> (for example, "SUSE with Command Line Tool") 
 -d <description> (for example, "A SuSe image installed command line tool")

まとめ

コマンド・ライン・ツールを使用すると、非常に効率的かつ容易にインスタンスを管理することができ、GUI を使用する場合のように何度もクリックする必要がありません。

Windows のクライアント・システムについては、「Create an IBM Cloud instance with the Windows command line」を参照してください。

参考文献

学ぶために

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

  • 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, Linux
ArticleID=659360
ArticleTitle=Linux のコマンド・ラインを使用して IBM Cloud にインスタンスを作成する
publish-date=01052011