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 |
インスタンスを構成する手順は以下のとおりです。
- IBM パブリック・クラウドの Web サイトの「Support (サポート)」タブからコマンド・ライン・パッケージをダウンロードし、
scpコマンドを使用して皆さんのインスタンスにコピーします。- IBM Cloud の「Support (サポート)」タブで「Command Line Tool Reference (コマンド・ライン・ツールのリファレンス)」をクリックし、それが開いたら左側にあるメニューの「Content (コンテンツ)」をクリックして DeveloperCloud_CMD_Tool.zip をダウンロードします。
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
- このパッケージを新しいフォルダーに解凍し、スクリプト・ファイルに実行許可を設定します (つまり拡張子を .sh にします)。
- コマンド・ライン・ツール・パッケージを解凍し、以下のコマンドを入力します (コマンドの前に必ず
sudoを追加し、idcuserがそのコマンドを root として実行できるようにする必要があることに注意してください)。idcuser@vhost0925:~/cloud/commandline> sudo unzip -o DeveloperCloud_CMD_Tool.zip
- コマンド・ライン・ツールを解凍したフォルダーにアクセスし、そのフォルダーの下にあるすべてのファイルのアクセス権を調べます。
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
- すべてのユーザーに対し、すべてのコマンド・ファイルを実行できる権限を付与し、ユーザーがすべてのコマンドを実行できるようにします。
idcuser@vhost0925:~/cloud> chmod –R a+x commandline
- コマンド・ライン・ツールを使用してコマンドを実行する際、ログ・ファイルにログを書き込む必要があります。そのため、すべてのユーザーに対し、ログ・ファイルに書き込むための権限を設定する必要があります。
idcuser@vhost0925:~/cloud/commandlin> chmod –R a+w logs
- コマンド・ライン・ツール・パッケージを解凍し、以下のコマンドを入力します (コマンドの前に必ず
- YaST の「software management (ソフトウェア管理)」メニューから IBM 版の Java をインストールします。
- コマンド・ライン・ツールを実行するためには 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を追加します。 - Java パッケージを解凍し、インストールします。
idcuser@vhost0925:/usr/lib64> sudo ./jdk-6u23-linux-x64-rpm.bin idcuser@vhost0925:/usr/lib64> sudo rpm -ivh jdk-6u23-linux-amd64.rpm
- どこに 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
- コマンド・ライン・ツールを実行するためには jdk1.6 をインストールする必要があります。Linux インスタンスが SUSE の場合には、jdk1.6 がインストールされているかどうかを
- Java 環境を設定します。
- Java コードの正確なパスがわかったので、スクリプト・コマンドが実行されて適切に動作するように、そのパスをエクスポートする必要があります。
JAVA _HOMEパスを以下のように設定します。export JAVA_HOME=/usr/java/jdk1.6.0_23
- /etc/profile で Java 環境変数を設定するためには、このファイルの最後にこの後示すコードを追加し、システム環境に
JAVA_HOMEとPATHが設定されるようにします。/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
- 以下のように
echoコマンドを使用し、Java 環境が適切に設定できたかどうかを確認します。idcuser@vhost0925:/usr> echo $JAVA_HOME idcuser@vhost0925:/usr> echo $PATH
- Java コードの正確なパスがわかったので、スクリプト・コマンドが実行されて適切に動作するように、そのパスをエクスポートする必要があります。
以下の手順によって、シェル・スクリプト・コマンドを使用して手動で処理を行うインスタンスを作成することができます。
コマンド・ラインを使用してインスタンスを作成するためには、以下の手順に従います。
- コマンド・ライン・ツールを使用するクライアント・システム上にパスワード・ファイルを作成する
- データ・センターの ID を入手する
- インスタンス・タイプを入手する
- インスタンスのキーを入手する
- インスタンスを作成する
コマンド・ライン・ツールを使用する前に、まずパスワード・ファイルを作成し、コマンド・ラインにパスワードを入力する際にパスワードが盗まれないようにする必要があります。
コマンド・ラインに以下のコマンドを入力します。
#./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 |
データ・センターというのは、イメージとインスタンスが置かれている場所です。
コマンド・ラインに以下のコマンドを入力します。
#./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 点に注意する必要があります。
- スクリプト・コマンド・フォルダーにスクリプトを保存する必要があります。
- このスクリプトを作成する前に、
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」を参照してください。
学ぶために
- コマンドとパラメーターについての詳細は、開発&テストのページの「Support (サポート)」タブを参照してください。また、資料ライブラリーの「コマンド・ライン・ツールのリファレンス・カード」と「コマンド・ライン・ツールのリファレンス」を参照してください。
- リリース 1.2 の詳細については Brian Snitzer のポッドキャストを聞いてください。
- developerWorks でクラウド開発者のためのリソースを調べてください。クラウドにデプロイするためにプロジェクトを構築しているアプリケーション開発者やサービス開発者の知識や経験を発見し、共有することができます。
- 次のステップとして、IBM SmartCloud Enterprise にアクセスする方法を学んでください。
製品や技術を入手するために
- IBM SmartCloud Enterprise で利用可能な製品イメージを調べてみてください。
議論するために
- developerWorks のクラウド・コンピューティング・グループに参加してください。
- developerWorks でクラウドに関する優れたブログを読んでください。
- developerWorks コミュニティーに加わってください。developerWorks コミュニティーは専門家のネットワークであり、接続、共有、および協力のための一連のコミュニティー・ツールを豊富に提供しています。