2021年09月

07

【てくさぽBLOG】WebSphere Hybrid Editionを導入してみた Vol.3 -アプリ導入編-

こんにちは。
てくさぽBLOGメンバーの岡田です。

IBM WebSphere Hybrid Edition(以下 WSHE)の導入をAzure上で検証してみた3回シリーズの3回目になります。

本記事ではWSHEで利用可能なアプリケーションのうち、Transformation AdvisorとCloud Foundry Migration Runtimeの導入検証を行いました。

WebSphere Hybrid Editionを導入してみた Vol.1 -OpenShift導入編-
WebSphere Hybrid Editionを導入してみた Vol.2 -WebSphere Liberty導入編-
WebSphere Hybrid Editionを導入してみた Vol.3 -アプリ導入編- *本編

1.WSHEで利用できるアプリケーション

WSHEではWebsphere以外に4つのアプリケーションを利用できます。今回はこのうちTransformation Advisor(以下 TA)とCloud Foundry Migration Runtime(以下 CFMR)の2つを導入してみました。

それぞれのアプリケーションを簡単に説明します。

TA:

オンプレミスで稼働しているJava EEアプリケーションやメッセージング環境をコンテナ環境へ移行・モダナイズできるかを簡単に調査・レポートできるツールです。WebSphereだけでなくWebLogic / Tomcat等のJavaEE環境、IBM MQも分析可能です。

CFMR:

Cloud Foundry アプリケーションを OpenShift 上で変更せずに実行することができる機能です。Cloud Foundryを利用していた管理者・開発者・ユーザーはこれまでのCloud Foundryと同様に利用できます。

 

2.事前準備

検証を行うにあたり、以下を用意しました。

・踏み台サーバー兼NFSサーバー・・・今回はAzure上にRHEL8の仮想サーバーを作成し、リモートからこのサーバーに接続して作業しました。Persistent VolumeがTAの前提環境として必要になるため、今回は作業用サーバー上でNFSサーバーを起動し、OpenshiftのワーカーノードからNFSマウントできることまで事前に確認しました。

・IBM ID ・・・ ライセンス・キーの入手に必要です。

・TA用プロジェクト・・・今回は”ta”という名前で事前にOpenshift Webコンソールにて作成しました。作成手順は以下になります。

(1)Openshift Webコンソールにて、Home-Projectsを選択します。画面右にある「Create Project」ボタンをクリックします。

(2)名前(Name)に「ta」と入力して「Create」ボタンをクリックします。

(3)Projectsのリストに作成した「ta」があることを確認します。

3.導入検証実施

IBM Cloud Pak CLI (cloudctl)を使用してコマンドラインから導入します。

以下の手順で導入を実施しました。

(1)ライセンス・キーの入手

以下のサイトにIBM IDでログインし、ライセンス・キーを入手します。ライセンス・キーが表示されたら「キーのコピー」をクリックして、ライセンス・キーを控えておきます。

https://myibm.ibm.com/products-services/containerlibrary

 

(2) cloudctl ツールのダウンロードとインストール

・cloudctlコマンドをダウンロードします。

$ curl -L https://github.com/IBM/cloud-pak-cli/releases/latest/download/cloudctl-linux-amd64.tar.gz -o cloudctl-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   155  100   155    0     0    593      0 –:–:– –:–:– –:–:–   596
100   635  100   635    0     0   1306      0 –:–:– –:–:– –:–:–  1306
100 12.2M  100 12.2M    0     0  6794k      0  0:00:01  0:00:01 –:–:– 11.2M
$

・ダウンロードしたファイルを解凍し、パスの通っているディレクトリに移動し、実行できることを確認します。

$ tar zxvf ./cloudctl-linux-amd64.tar.gz
cloudctl-linux-amd64
$ sudo mv ./cloudctl-linux-amd64 /usr/local/bin/cloudctl
[sudo] xxx のパスワード:
$ which cloudctl
/usr/local/bin/cloudctl
$ cloudctl
NAME:
cloudctl – A command line tool to interact with IBM Cloud Platform Common Services
and IBM Cloud PrivateUSAGE:
[environment variables] cloudctl [global options] command [arguments…] [command options](以下、省略)
(3)WebSphere Hybrid EditionのCASE アーカイブをダウンロード

TAとCFMRの両方のプログラムが含まれているCASE(ContainerApplication Software for Enterprises)アーカイブをダウンロードします。コマンド出力がすべて”Success”となっていることを確認します。

$ cloudctl case save –case https://github.com/IBM/cloud-pak/raw/master/repo/case/ibm-websphere-hybrid-1.0.0.tgz –outputdir ./wshe-case

Downloading and extracting the CASE …
– Success
Retrieving CASE version …
– Success
Validating the CASE …
Validating the signature for the ibm-websphere-hybrid CASE…
– Success
Creating inventory …
– Success
Finding inventory items
– Success
Resolving inventory items …
Parsing inventory items
Validating the signature for the ibm-cfmr CASE…
Validating the signature for the ibm-transadv CASE…
– Success

(4)CASEアーカイブの検証

・CP_USER および CP_APIKEY 環境変数を設定

$ export CP_USER=cp
$ export CP_APIKEY=<ライセンス・キー>

・oc クライアントを使用して、クラスターにログイン

$ oc login -u kubeadmin -p <パスワード> https://api.nicpwhecluster.xxx.com:6443
Login successful.You have access to 59 projects, the list has been suppressed.
You can list all projects with ‘oc projects’Using project “ta”.
$

・CASE アーカイブを検証し、ライセンスを表示

これ以降のcloudctlのコマンドはroot権限で実行しています。最後に”CASE launch script completed successfully OK”と出力されていることを確認します。

# cloudctl case launch –case wshe-case/ibm-websphere-hybrid-1.0.0.tgz –inventory installProduct –action initialize –args “–viewLicense”
Welcome to the CASE launcher
Attempting to retrieve and extract the CASE from the specified location
[?] CASE has been retrieved and extracted
Attempting to validate the CASE
[?] CASE has been successfully validated
Attempting to locate the launch inventory item, script, and action in the specified CASE
[?] Found the specified launch inventory item, action, and script for the CASE
Attempting to check the cluster and machine for required prerequisites for launching the item
Checking for required prereqs…(途中省略)Kubernetes RBAC Prerequisite Verbs Result Reason
*.*/ * trueUser permissions result: OK
[?] Cluster and Client Prerequisites have been met for the CASE
Running the CASE installProduct launch script with the following action context: initialize
Executing inventory item installProduct, action initialize : launch.sh
[?] CASE launch script completed successfully
OK
#
(5)インストール構成ファイルを解凍し、確認

tgzファイルを解凍し、展開されたファイルを確認します。

# cloudctl case launch –case wshe-case/ibm-websphere-hybrid-1.0.0.tgz –inventory installProduct –action initialize –args “–acceptLicense”
Welcome to the CASE launcher
Attempting to retrieve and extract the CASE from the specified location
[?] CASE has been retrieved and extracted
Attempting to validate the CASE
[?] CASE has been successfully validated
Attempting to locate the launch inventory item, script, and action in the specified CASE
[?] Found the specified launch inventory item, action, and script for the CASE
Attempting to check the cluster and machine for required prerequisites for launching the item
Checking for required prereqs…Prerequisite Result
Client docker CLI must meet the following regex: version (1[7-9]|[2-9][0-9]). false
Client podman CLI must meet the following regex: version 1.([4-9]|[1-8][0-9]|9[0-9]). trueRequired prereqs result: OK
Checking user permissions…Kubernetes RBAC Prerequisite Verbs Result Reason
*.*/ * trueUser permissions result: OK
[?] Cluster and Client Prerequisites have been met for the CASE
Running the CASE installProduct launch script with the following action context: initialize
Executing inventory item installProduct, action initialize : launch.sh
[?] CASE launch script completed successfully
OK
# ls -al ./wshe-case/
total 824
drwxr-xr-x. 3 root root 4096 Mar 5 08:15 .
dr-xr-x—. 7 root root 198 Mar 9 05:04 ..
drwxr-xr-x. 2 root root 6 Mar 5 08:15 charts
-rw-r–r–. 1 root root 32 Mar 5 08:15 ibm-cfmr-1.0.0-charts.csv
-rw-r–r–. 1 root root 10274 Mar 5 08:15 ibm-cfmr-1.0.0-images.csv
-rw-r–r–. 1 root root 223820 Mar 5 08:15 ibm-cfmr-1.0.0.tgz
-rw-r–r–. 1 root root 32 Mar 5 08:15 ibm-transadv-2.4.1-charts.csv
-rw-r–r–. 1 root root 4216 Mar 5 08:15 ibm-transadv-2.4.1-images.csv
-rw-r–r–. 1 root root 506537 Mar 5 08:15 ibm-transadv-2.4.1.tgz
-rw-r–r–. 1 root root 32 Mar 5 08:15 ibm-websphere-hybrid-1.0.0-charts.csv
-rw-r–r–. 1 root root 1195 Mar 5 08:15 ibm-websphere-hybrid-1.0.0-images.csv
-rw-r–r–. 1 root root 67571 Mar 5 08:15 ibm-websphere-hybrid-1.0.0.tgz#
(6)cloudctl CASE インストーラーを実行

最後に”CASE launch script completed successfully OK”と出力されていることを確認します。

# cloudctl case launch –case wshe-case/ibm-websphere-hybrid-1.0.0.tgz –inventory installProduct –action install –args “–acceptLicense”
Welcome to the CASE launcher
Attempting to retrieve and extract the CASE from the specified location
[?] CASE has been retrieved and extracted
Attempting to validate the CASE
[?] CASE has been successfully validated
Attempting to locate the launch inventory item, script, and action in the specified CASE
[?] Found the specified launch inventory item, action, and script for the CASE
Attempting to check the cluster and machine for required prerequisites for launching the item
Checking for required prereqs…Prerequisite Result
openshift Kubernetes version must be >=1.17.0, <1.19.0 true
Kubernetes node resource must match a set of expressions defined in prereqs.yaml true
Client docker CLI must meet the following regex: version (1[7-9]|[2-9][0-9]). false
Client podman CLI must meet the following regex: version 1.([4-9]|[1-8][0-9]|9[0-9]). trueRequired prereqs result: OK
Checking user permissions…Kubernetes RBAC Prerequisite Verbs Result Reason
*.*/ * trueUser permissions result: OK
[?] Cluster and Client Prerequisites have been met for the CASE
Running the CASE installProduct launch script with the following action context: install
Executing inventory item installProduct, action install : launch.shStarting Install ***************************************************************Login To Cluster…
okstdout:
Using provided cluster configuration.
Logged in as kube:admin.Get Cluster Server Address…
okstdout:
https://api.nicpwhecluster.xxx.com:6443Save Cluster Server Address…
okCheck Cluster Version…
okstdout:
OpenShift 4.5.31 detected.Check Cluster Administrator Role…
okstdout:
yesGet Authorization Endpoint…
okstdout:
https://oauth-openshift.apps.nicpwhecluster.xxx.com/oauth/authorizeSave Authorization Endpoint…
okGet Default Cluster Subdomain…
okstdout:
apps.nicpwhecluster.azure-cloudpak-nicptest.comSet Cluster Subdomain…
okCheck Entitled Registry Variables…
okGet Existing Operator Subscriptions…
okstdout:
{
“other”: {}
}Set Subscriptions Properties…
okSwitch To Transformation Advisor Project…
donestdout:
Switched to ta project.Populate Transformation Advisor Operator Configuration…
doneCreate Pull Secret…
donestdout:
secret/wshe-pull-secret createdInstall Transformation Advisor Operator…
donestdout:
operatorgroup.operators.coreos.com/ta created
subscription.operators.coreos.com/wshe-transadv createdConfigure Transformation Advisor Service Account…
donestdout:
clusterrole.rbac.authorization.k8s.io/cluster-admin added: “system:serviceaccount:ta:ta-operator”stderr:
Warning: ServiceAccount ‘ta-operator’ not foundAdd Security Context Constraints To User…
donestdout:
securitycontextconstraints.security.openshift.io/anyuid added to: [“system:serviceaccount:ta:default”]Check for Transformation Advisor Operator…
okGet wshe-transadv ClusterServiceVersion…
Retrying… (1 of 51)
Retrying… (2 of 51)
okstdout:
ta-operator.v2.3.4Check ta-operator.v2.3.4 ClusterServiceVersion…
Retrying… (1 of 51)
Retrying… (2 of 51)
Retrying… (3 of 51)
Retrying… (4 of 51)
Retrying… (5 of 51)
Retrying… (6 of 51)
Retrying… (7 of 51)
Retrying… (8 of 51)
okSwitch To Cloud Foundry Migration Runtime Project…
donestdout:
Created cfmr-operator project.Create Pull Secret…
donestdout:
secret/wshe-pull-secret createdConfigure Cloud Foundry Migration Runtime Service Account…
donestdout:
clusterrole.rbac.authorization.k8s.io/cluster-admin added: “system:serviceaccount:cfmr-operator:wshe-ibmcfmrprod-ibm-cfmr-serviceaccount”
clusterrole.rbac.authorization.k8s.io/self-provisioner added: “system:serviceaccount:cfmr-operator:wshe-ibmcfmrprod-ibm-cfmr-serviceaccount”stderr:
Warning: ServiceAccount ‘wshe-ibmcfmrprod-ibm-cfmr-serviceaccount’ not found
Warning: ServiceAccount ‘wshe-ibmcfmrprod-ibm-cfmr-serviceaccount’ not foundAdd Security Context Constraints…
donestdout:
securitycontextconstraints.security.openshift.io/restricted added to: [“system:serviceaccount:cfmr-operator:wshe-ibmcfmrprod-ibm-cfmr-serviceaccount”]Install Cloud Foundry Migration Runtime Operator…
donestdout:
customresourcedefinition.apiextensions.k8s.io/ibmcfmrprods.cfmr.ibm.com created
serviceaccount/cfmr-operator created
clusterrole.rbac.authorization.k8s.io/cfmr-operator created
clusterrolebinding.rbac.authorization.k8s.io/cfmr-operator created
deployment.apps/cfmr-operator createdCheck for Cloud Foundry Migration Runtime Operator…
Retrying… (1 of 51)
Retrying… (2 of 51)
Retrying… (3 of 51)
Retrying… (4 of 51)
Retrying… (5 of 51)
okstdout:
All cfmr-operator pods are running and are ready.Switch To Cloud Foundry Migration Runtime Project…
donestdout:
Switched to cfmr-operator project.Get Default Pull Secret…
skippedSet Project Pull Secret…
skippedPopulate Cloud Foundry Migration Runtime Custom Resource…
doneInstall Cloud Foundry Migration Runtime Resource…
donestdout:
ibmcfmrprod.cfmr.ibm.com/wshe-ibmcfmrprod createdWait for Cloud Foundry Migration Runtime Install…
Retrying… (1 of 301)
Retrying… (2 of 301)
Retrying… (3 of 301)
(途中省略)
Retrying… (79 of 301)
Retrying… (80 of 301)
Retrying… (81 of 301)
Retrying… (82 of 301)
Retrying… (83 of 301)
okstdout:
The wshe-ibmcfmrprod-ibm-cfmr job has completed successfullystderr:
+ NAMESPACE=cfmr-operator
+ LABEL_QUERY=release=wshe-ibmcfmrprod
+ sleep 10
++ oc -n cfmr-operator get job -l release=wshe-ibmcfmrprod -o ‘jsonpath={range .items[*]}{@.metadata.name}{end}’
+ JOBS=wshe-ibmcfmrprod-ibm-cfmr
+ for JOB_ENTRY in $JOBS
++ oc -n cfmr-operator get job wshe-ibmcfmrprod-ibm-cfmr -o ‘jsonpath={.status.active}’
+ JOB_ACTIVE=
++ oc -n cfmr-operator get job wshe-ibmcfmrprod-ibm-cfmr -o ‘jsonpath={.status.failed}’
+ JOB_FAILED=
++ oc -n cfmr-operator get job wshe-ibmcfmrprod-ibm-cfmr -o ‘jsonpath={.status.succeeded}’
+ JOB_SUCCEEDED=1
+ ‘[‘ -n ” ‘]’
+ ‘[‘ -n ” ‘]’
+ ‘[‘ -n 1 ‘]’
+ echo ‘The wshe-ibmcfmrprod-ibm-cfmr job has completed successfully’
+ exit 0Get Cloud Foundry Migration Runtime UI Route…
donestdout:
xx.xx.xx.xx(外部IPアドレス)

set_fact…
ok

Switch To Transformation Advisor Project…
done

stdout:
Switched to ta project.

Get Default Pull Secret…
skipped

Set Project Pull Secret…
skipped

Generate Certificate and Create Transformation Advisor Secret…
done

stdout:
Secret transformation-advisor-secret already exists

Load Generated Transformation Advisor Certificate…
ok

Populate Transformation Advisor Custom Resource…
done

Load Transformation Advisor Custom Resource…
ok

Customize Transformation Advisor Custom Resource…
done

Check Transformation Advisor Custom Resource…
ok

msg:
All assertions passed

Install Transformation Advisor Custom Resource…
done

stdout:
transadv.charts.ta.cloud.ibm.com/ta created

Check For Transformation Advisor UI…
Retrying… (1 of 51)
Retrying… (2 of 51)
Retrying… (3 of 51)
Retrying… (4 of 51)
Retrying… (5 of 51)
Retrying… (6 of 51)
Retrying… (7 of 51)
Retrying… (8 of 51)
ok

stdout:
All ui pods are running.

Check For Transformation Advisor Database…
Retrying… (1 of 26)
Retrying… (2 of 26)
Retrying… (3 of 26)
Retrying… (4 of 26)
Retrying… (5 of 26)
ok

stdout:
All couchdb pods are running.

Check For Transformation Advisor Server…
Retrying… (1 of 51)
Retrying… (2 of 51)
Retrying… (3 of 51)
Retrying… (4 of 51)
Retrying… (5 of 51)
Retrying… (6 of 51)
Retrying… (7 of 51)
Retrying… (8 of 51)
Retrying… (9 of 51)
Retrying… (10 of 51)
Retrying… (11 of 51)
ok

stdout:
All server pods are running.

Annotate Transformation Advisor Deployments…
done

stdout:
deployment.apps/ta-ew7tae-couchdb patched
deployment.apps/ta-ew7tae-server patched
deployment.apps/ta-ew7tae-ui patched

Get Transformation Advisor UI Route…
done

stdout:
ta-apps.apps.nicpwhecluster.azure-cloudpak-nicptest.com

set_fact…
ok

Mark Installation Complete…
done

Install successful *************************************************************

Installation complete.

The IBM Transformation Advisor UI is available at: https://ta-apps.apps.nicpwhecluster.xxx.com

The IBM Cloud Foundry Migration Runtime UI is available at: https://ui.xx.xx.xx.xx.nip.io

[?] CASE launch script completed successfully
OK

#

コマンド出力の最後にTAとCMFRそれぞれのアクセスするURLが表示されますのでメモしておきます。

(7)接続確認

TA:以下のURLにWebブラウザでアクセスしてページが表示されることを確認します。

https://ta-apps.apps.nicpwhecluster.xxx.com

CMFR:こちらも同様に以下のURLにアクセスしてページが表示されることを確認します。

https://ui.<外部IPアドレス>.nip.io

これで導入検証は完了です。
 

補足

以上が導入検証を実施した際の内容となりますが、現在は一部手順が更新されています。TAとCFMRは個別で導入するようにマニュアルが更新されています。これから導入される方は以下のマニュアルを確認の上、実施してみてください。

https://www.ibm.com/docs/en/websphere-hybrid?topic=installation
 

最後に

いかがでしたでしょうか。WindowsアプリやLinuxのrpmパッケージのインストールのようには簡単ではないので、すこし難しいかなと感じました。cloudctlコマンドとCASEの利用はTA、CFMRそれぞれ単体の導入でも同様に行いますので、その際にこの記事が参考になればと思います。

ここまでお読みいただきありがとうございました。
 

お問い合わせ

この記事に関するご質問は下記までご連絡ください。

エヌアイシー・パートナーズ株式会社
技術支援本部

E-Mail:nicp_support@NIandC.co.jp

 

その他の記事

2025年09月03日

レノボのファンレス常温水冷サーバーって?

公開日:2025-09-03 こんにちは。ソリューション企画部 柳澤です。 みなさま「水冷サーバー」と一言聞いて、何を思い浮かべますか? オフィスに置いてあるドリンク用ウォーターサーバーを思い浮かべる方もいらっしゃいますでしょうか? 弊社のお客様のみなさまはIT業界の皆様ですので、水冷サーバーというとサーバーを特殊な液体のタンクで冷やす「液浸」を思い浮かべる方も多いかと思います。 しかし、この液浸は、タンク設置場所の確保やサーバーを重ねられないといった課題があり、大規模な投資や、床面積の拡大を避けられませんでした。 そこで、液体をサーバー内部の管に通して冷却する「直接液冷」が近年注目されています。 今日のサーバーはかつてないほどの計算能力を要求されており、人工知能(AI)、機械学習(ML)、高性能コンピューティング(HPC)といったワークロードの台頭は、より強力なサーバーと、それに伴うより高度な冷却ソリューションの必要性を浮き彫りにしています。 この状況を受け、各メーカーは水冷サーバーに注力し始めており、今後のサーバー選択において冷却効率が新しい基準として加わることになりそうです。 本日ご紹介するレノボのファンレスの常温水冷サーバーは、革新的な水冷技術を搭載しており、その冷却効率が注目されています。 目次 レノボのファンレス常温水冷サーバーとは 水冷サーバーの導入を検討するお客様の例 関連情報 お問い合わせ レノボのファンレス常温水冷サーバーとは レノボの水冷は「直接液体冷却」技術を採用しています。これらのソリューションは、GPUやCPUのような発熱量の多いコンポーネントを直接冷却しています。 サーバートレイ、シャーシにはファンがない設計なので、とても静かなサーバーです。またファンがないことで電力消費量を削減することにも役立っています。 採用されている液体は99%の純水で、ほぼサラサラの液体となり、環境にもやさしい設計です。 また、この液体が常温から45度の温水でも排熱効果を発揮するので、液体を氷のように冷たくはしなくても効果を発揮する設計になっています。 主な製品と特徴 レノボの水冷サーバーのシリーズのLenovo Neptune™ は、HPC、ミッションクリティカルサーバーはもちろんのこと、従来のラック型サーバーに加え、エッジコンピューティングなどの筐体でも構成できる柔軟な構成オプションが準備されています。 そのためお客様の特定のニーズに合わせてカスタマイズや拡張ができます。 水冷サーバーの導入を検討するお客様の例 Lenovo Neptune™ は、以下のようなお客様にご利用いただくことで特に大きな価値を発揮します。 高性能コンピューティング(HPC):科学研究、シミュレーション、モデリングなど、膨大な計算能力を必要とするHPC環境では、水冷が不可欠です。 人工知能(AI)と機械学習(ML):AIトレーニングや推論は、GPUに大きな負荷をかけるため、効率的な冷却はパフォーマンスを維持するために重要です。 高密度データセンター :限られたスペースに多くのサーバーを詰め込む必要がある場合、水冷は高密度化を可能にします。 エネルギー効率の重視 :持続可能性と運用コストの削減を重視する企業にとって、水冷は魅力的な選択肢です。 エッジコンピューティング :コンパクトで効率的な冷却ソリューションが必要なエッジ環境でも、水冷の利点は大きいです。 どうでしょうか。レノボの水冷サーバーのイメージが変わりましたでしょうか。 ここまでざっと簡単にレノボの水冷サーバー製品をご紹介させていただきましたが、もっと詳しく知りたい、などのご興味ございましたら、ぜひ弊社へお問い合わせいただければと思います。 関連情報 Lenovo サーバー/ストレージ 製品(NI+C Pサイト) 【参加レポート】Lenovo TechDay @ Interop Tokyo 2025(NI+C Pサイト) 第6世代のLenovo Neptune液体冷却が AI 時代を牽引(Lenovoサイト) 【AI電力消費40%削減事例も】レノボの「直接水冷」Lenovo Neptune™(YouTube) お問い合わせ エヌアイシー・パートナーズ株式会社E-mail:voice_partners@niandc.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年08月21日

【イベントレポート】watsonx Orchestrate テクニカルワークショップ第一回 開催しました

公開日:2025-08-21 こんにちは。てくさぽブログメンバーの佐野です。 2025年7月17日に「watsonx Orchestrate テクニカルワークショップ」第一回を開催しました。 2024年12月にもwatsonx Orchestrate(以下wxO)のハンズオンセミナーを開催しておりますが、6月にwxOの大幅なアップデートが入り使い方・作り方が大きく変更になったため、最新情報と基本的な使い方をいち早くお届けするべく企画・開催しました。 また、ハンズオンだけでなくワークショップの時間を設け、wxOがどのように使えるのかを参加者同士でディスカッションし、最後に各チーム毎に発表・共有をすることでwxOの理解を進めるとともに参加者同士のコミュニケーションを図りました。 本ブログではこのテクニカルワークショップについて簡単ですがご紹介します。 目次 watsonx Orchestrate概要 watsonx Orchestrateハンズオン ワークショップ まとめ お問い合わせ watsonx Orchestrate概要 旧wxOと比べて新wxOはAgentの開発方法が変わっています。画面が変わったのはもちろんのこと、エージェントで実行部分を示す用語も「Skill」から「Tool」へ変更となっています。他に大きく変わったのは以下の点になります。 新しく「Knowledge」機能が追加され、Agent内にファイルを添付することができ、簡易的なRAGの構成をNo-Codeで実現 Agent内で定義しているToolを呼び出す際に、LLMが自動でチャットに入力されたテキストから必要な情報を抜き出し、Toolへ渡す Agentから他のAgentを呼び出せる(wxO以外のAgentも呼び出せる)Multi-Agent Orchestration機能 「Behavior」に日本語で返答させたりAgentの挙動を定義 人事業務や購買業務、営業業務といった特定業務向けの事前定義Agentを提供 AgentやToolをPythonで実装するためのAgent Development Kit (ADK)および開発者向けのDeveloper Editionを提供 モニタリング機能でAgent処理履歴のトレース情報を参照可能 自社で開発したエージェントを提供する”Agent Connect”というAIエージェントのエコシステム上でマーケットプレイス環境 wxOの各エディション内の機能の変更と課金対象の変更 このように大きな機能追加や使い方の変更が入ったことをご紹介し、理解頂きました。 watsonx OrchestrateでAgentを作成する時の主な設定項目は以下のようなものがあります。 watsonx Orchestrateハンズオン 概要でお伝えしたように、用語も変わった上に画面も新しくなっています。 そのため、AI Agentを動作させるための以下の基本的な操作をハンズオンで体験頂きました。 wxO環境の説明や基本的な操作 Agentの新規作成 Toolの作成・利用 Knowledgeを利用した簡易的なRAG Agent Tool Builderを利用しFlowやCodeblockの作成 Agentから他のAgentを呼び出し これらのハンズオンはCodeblockを除きNo-CodeでWebブラウザ上の操作で実行できるため、プログラミングやシステム開発の知識・経験が無くてもAI Agentを動かすことができます。Codeblock機能はAgentの動作・処理順を定義する”Flow”の中でPythonを使ってデータを操作するための機能であり、簡易的なETLを実現するものです。 今回のハンズオンでは、サンプルとその手順をご用意したので、参加者の方々が一通りのことを体験頂くことができました。実際にハンズオンで体験頂いた内容のサンプルをいくつかご紹介します。 Agentのサンプル1:都市名からお天気情報を返答するAgent APIで他サービスを呼び出し、都市名を入力すると天気と気温を回答してくれます。 複数の都市名を入力し、表形式で回答してもらうこともできます。 Agentのサンプル2:簡易的なRAG Agent ファイルを添付し、そのファイルの内容から回答をしてくれる機能です。 ハンズオンではIBMの2024年度の年次レポートを添付し、その内容を元に財務パフォーマンスのサマリーを回答させました。 ファイルの該当箇所が参照できるので、根拠を確認できるのがよいところです。 ファイルは事前にAgentに添付しておくこともできますし、ユーザー自身がファイルを添付する使い方もできます。 ワークショップ 今回、ハンズオンだけでなくwxOを自社または自社のお客様がどのように利用すると効率化できるか?という観点でチームに分かれてワークショップを行いました。 1チーム4人の合計3チームに分かれてNI+C Pメンバーがファシリテートしながらアイディア出し・ディスカッションを行いました。 最後に各チームのディスカッション結果を発表いただき、「こんなことできたらいいな」というアイディアを全員で共有し合いました。 ワークショップで上がった意見の中からいくつかピックアップします。 市役所の窓口業務を実施するAI Agent チャットだけでなく音声対応もできる 個別業務を処理するTool/Agentと情報参照のRAGを併用してユーザーへの問い合わせへ回答 ブログを書いてくれるAI Agent 過去のブログを参考にして文体や言い回しを自分流に ドラフト書くAgent、推敲Agent、ファクトチェックAgentなど組み合わせ 薬局の在庫予測や自動発注にAI Agentを活用 まとめ 新しくなったwxOのハンズオンを1か月とちょっとで実施するというチャレンジングなワークショップでしたが、無事終えることができてホッとしています。 ご参加頂いた方々からのアンケートで「最新情報を知り、その環境で動作させられたのがよかった」とご意見を頂いており、準備した甲斐があったと嬉しく思っております。 wxOテクニカルワークショップの第二回も企画しておりますし、他の製品についても企画中ですので、この記事をご覧の皆様のお役に立てるよう、今後も企画・実現していきます。 「こんなことやって欲しい」というご意見ありましたら是非ご意見お願いいたします。 お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社技術企画本部E-mail:nicp_support@NIandC.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年08月04日

【てくさぽBLOG】IBM watsonx OrchestrateのADKを使ってみた

こんにちは。 てくさぽBLOGメンバーの高村です。 早速ですが、今年5月に開催されたIBMの年次イベント「Think2025」で、watsonx Orchestrateの新機能が発表されました!その中の一つとして、開発者向けの「Agent Development Kit(以下、ADK)」があります。今回はこのADKを活用し、watsonx Orchestrate環境への接続やエージェントの追加といった操作を行い、その使用感をご紹介します。  なお、watsonx Orchestrateについては、今年2月、3月に公開した「watsonx OrchestrateやってみたBLOG」でご紹介しておりますので、是非こちらもご一読ください。 【てくさぽBLOG】IBM watsonx Orchestrateを使ってみた(Part1) 【てくさぽBLOG】IBM watsonx Orchestrateを使ってみた(Part2) 目次 はじめに ADKとは? ADK使ってみた さいごに お問い合わせ はじめに Think2025で発表された新機能は、6月に環境へ追加されました。それ以前の環境とは、メニュー構成や操作方法、機能名称に変更があります。 例えばこれまで「Skill」と呼ばれていたものが「Tool」へと名称変更されています。 アップデート後の環境につきましては、別ブログにて改めて詳しくご紹介させていただく予定ですので、ぜひご期待ください! ADKとは? まずはADKについてご紹介します。ADKとは開発者向けにwatsonx OrchestrateのAgentやToolをスクラッチ開発するための開発キットになります。ローカル端末などに導入し、pythonベースで開発を行うことができます。 また、ADKとは別に、watsonx Orchestrate Developer Editionをローカル端末に導入することで、ADKで開発したAgentやToolのテストが可能になります。なお、watsonx Orchestrate Developer EditionはDockerコンテナ上で動作し、現時点のハードウェア要件はCPUは最小8コア、メモリは最小16GBが必要です。詳細はInstalling the watsonx Orchestrate Developer Editionをご確認ください。   ADKとwatsonx Orchestrate Developer Editionを利用することで、コードの迅速な作成・修正や柔軟なカスタマイズに加え、環境へのデプロイ前にローカルでテスト・修正が可能となり、作業効率の向上が期待できます。 ADK使ってみた 前述ではADKでAgent開発し、watsonx Orchestrate Developer Editionで動作確認、SaaS watsonx Orchestrateへインポートする構築の流れをお話しましたが、今回の検証における動作確認は検証環境として利用しているIBM Cloud 上のwatsonx Orchestrate利用します。よって前述したwatsonx Orchestrate Developer Editionは利用せず、ADKからwatsonx Orchestrate検証環境へAgentとToolを直接インポートし、動作確認を行いたいと思います。また、ADKのインストール先は自分の端末ではなく、IBM Cloud上に構築したUbuntuのVirtual Server Instance(以下、VSI)を使用します。検証環境の構成イメージは下記の図の通りです。 尚、ADKのインストール要件はPython 3.11以上、Pip、そして仮想環境(以下venv)が必要です。詳細については、Getting started with the ADKをご確認ください。 それでは早速使ってみましょう! VSIのプロビジョニング まずはADKをインストールするVSIをプロビジョニングします。本ブログではプロビジョニング方法について詳しく記載いたしませんが、手順は「【てくさぽBLOG】IBM Power Virtual ServerのAIX環境とIBM Cloud Object Storageを接続してみた(Part1)」のVSI for VPCの作成をご参考ください。 OSはUbuntu 22.04 LTS Jammy Jellyfish Minimal Install、リソースは2vCPU,4GB RAMで作成しました。VSI作成時にSSH鍵が必要なるので作成を忘れないようにしてください。 作成すると数分で起動します。端末からSSHログインするため浮動IPが必要になります。赤枠で囲った浮動IPを作成しインスタンスに紐づけします。以上でVSIの作成は完了です。 Ubuntuの設定 ターミナルを開きsshでUbuntuにログインします。私はWindowsのコマンドプロンプトを使用しました。Ubuntuユーザでログイン後、rootパスワードを設定し、スイッチできるようにします。 ubuntu@nicptestvsi:~$ sudo passwd root New password: Retype new password: passwd: password updated successfully ubuntu@nicptestvsi:~$ su - pythonのバージョンを確認したところ3.10.12でした。ADKの要件は3.11以上ですので、バージョンアップが必要になります。最初は3.13にバージョンアップしてみたのですが、後続作業と最新バージョンではパッケージが合わなかったのかうまく動かず…仕切り直して3.11を利用することにしました! root@nicptestvsi:~# apt install python3.11 バージョンアップ後、デフォルトバージョンとして3.11を指定します。 root@nicptestvsi:~# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2 sudo update-alternatives --config python3 update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python3 (python3) in auto mode update-alternatives: using /usr/bin/python3.11 to provide /usr/bin/python3 (python3) in auto mode There are 2 choices for the alternative python3 (providing /usr/bin/python3).Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/python3.11 2 auto mode 1 /usr/bin/python3.10 1 manual mode 2 /usr/bin/python3.11 2 manual modePress <enter> to keep the current choice[*], or type selection number: 2 root@nicptestvsi:~# root@nicptestvsi:~# python3 --version Python 3.11.13 次に下記コマンドを実行して任意のvenvを作成します。 python3 -m venv /path/to/nicpse/project/your-venv-adktest <環境のパスを指定 venvを活性化してログインします。下記コマンド結果のようにvenvに入れましたらUbuntuの設定は完了です。 root@nicptestvsi:~# source /path/to/nicpse/project/your-venv-adktest/bin/activate (your-venv-adktest) root@nicptestvsi:~# ADKのインストール 以下コマンドを実行してADKをインストールします。ADKは6月時点で1.5.1が最新バージョンです。 (your-venv-adktest) root@nicptestvsi:~# pip install ibm-watsonx-orchestrate Collecting ibm-watsonx-orchestrate Downloading ibm_watsonx_orchestrate-1.5.1-py3-none-any.whl.metadata (1.4 kB) Collecting certifi>=2024.8.30 (from ibm-watsonx-orchestrate) Downloading certifi-2025.6.15-py3-none-any.whl.metadata (2.4 kB) Collecting click<8.2.0,>=8.0.0 (from ibm-watsonx-orchestrate) Downloading click-8.1.8-py3-none-any.whl.metadata (2.3 kB) Collecting docstring-parser<1.0,>=0.16 (from ibm-watsonx-orchestrate) Downloading docstring_parser-0.16-py3-none-any.whl.metadata (3.0 kB) Collecting httpx<1.0.0,>=0.28.1 (from ibm-watsonx-orchestrate) Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB) ----中略---- (your-venv-adktest) root@nicptestvsi:~# orchestrate --version ADK Version: 1.5.1 ADKの環境設定 次にADKの環境設定を行います。watsonx OrchestrateのインスタンスIDが必要になるため、watsonx OrchestrateのSetting画面に入り確認します。下記画面をご参考にしてください。 環境設定コマンドはこちらになります。-nの後はvenv名を指定し、-uの後はインスタンスIDを指定します。 (your-venv-adktest) root@nicptestvsi:~# orchestrate env add -n <仮想環境名> -u <環境のインスタンスID> [INFO] - Environment 'my-name' has been created [INFO] - Existing environment with name 'nicpse' found. Would you like to update the environment 'nicpse'? (Y/n)y [INFO] - Environment 'nicpse' has been created 以下コマンドを実行して、IBM Cloud上のwatsonx Orchestrateと認証設定をします。APIキーの取得方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」のAPIキーの取得をご確認ください。尚、リモート環境に対する認証は2時間ごとに期限切れになります。期限が切れた場合は再度認証する必要があります。 (your-venv-adktest) root@nicptestvsi:~# orchestrate env activate nicpse --apikey <APIキー> [INFO] - Environment 'my-ibmcloud-saas-account' is now active [INFO] - Environment 'nicpse' is now active 下記コマンドを実行してCLIから利用できる環境のリストを表示します。IBM Cloud上のwatsonx Orchestrateがactiveとなっていました! (your-venv-adktest) root@nicptestvsi:~# orchestrate env list nicpse https://api.us-south.watson-orchestrate.cloud.ibm.com/instances/XXXXXXXX (active) local http://localhost:XXXX Toolとagentのインポート 次にToolとAgentのインポートを行います。ToolとはAgentがタスクを実行する際に利用する機能です。今回は、IBM様より共有いただいたyfinanceを活用したToolおよびAgentのコードを、ADKを用いてインポートします。なお、yfinanceはヤフーファイナンスから株価などの金融データを取得するためのPythonライブラリです。 最初にToolのインポートを行います。下記の様に、scpなどでToolファイルとrequirements.txtをディレクトリにアップロードしておきます。requirementsファイルは他のモジュールと依存関係がある場合使用します。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# ls -l total 12 -rw-r--r-- 1 root root 0 Jun 24 04:42 __init__.py drwxr-xr-x 2 root root 4096 Jun 24 04:38 __pycache__ -rw-rw-r-- 1 ubuntu ubuntu 8 Jun 24 03:02 requirements.txt -rw-rw-r-- 1 ubuntu ubuntu 1778 Jun 24 02:46 yfinance_agent.py 下記コマンドを実行してToolファイルとrequirementsファイルをインポートします。企業情報を取得するstock_infoと株価を取得するstock_quoteの2つのToolがインポートされました。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# orchestrate tools import -k python -f "./yfinance_agent.py" -r "./requirements.txt" [INFO] - Using requirement file: "./requirements.txt" [INFO] - Tool 'stock_info' imported successfully [INFO] - Tool 'stock_quote' imported successfully listコマンドを実行するとインポートされたToolを確認できます。 (your-venv-adktest) root@nicptestvsi:# orchestrate tools list ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━┳ ┃ Name ┃ Description ┃ Permission ┃ Type ┃ Toolkit ┃ App ID ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━╇ │───────────┼────────────┼── │ send_mail_brevo │ send a meil using Brevo. │ write_only │ python │ │ │ │ │ │ │ │ │ │ ├─────────────────────────────────┼──── │ stock_quote │ 企業のTickerSymbolを用いて株価… │ read_only │ python │ │ │ ├─────────────────────────────────┼──── │ Untitled_6160RC │ No description │ read_only │ openapi │ │ │ ├─────────────────────────────────┼──── │ stock_info │ 企業のTickerSymbolを用いて企業… │ read_only │ python │ │ │ └─────────────────────────────────┴──── 次にAgentをインポートします。下記コマンドを実行します。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# orchestrate agents import -f ./yfinance_agent.yaml agent listコマンドでインポート済みのAgentを確認できました。Agentが使用するToolも表示されています。 (your-venv-adktest) # orchestrate agents list ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━ ┃ Name ┃ Description ┃ LLM ┃ Style ┃ Collaborators ┃ Tools ┃ Knowledge Base ┃  ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━ │ yfinance_age… │ 企業の会社情… │ watsonx/meta- │ react │ │ stock_info, │ │ │ │ │ llama/llama-3 │ │ │ stock_quote │ │ ││ │ │ -2-90b-vision ││ │ -instruct │ │  IBM Cloud上のwatsonx Orchestrateで動作確認 インポートしたAgentとToolをIBM Cloud上のwatsonx Orchestrateで確認します。 watsonx Orchestrateへログインし、BuildからAgent Builderを選択します。 yfinanceエージェントが表示されているので、クリックします。 クリックすると、Agent作成画面に入ります。UIから基盤モデルを変更したり、Agentの振る舞いなど変更することができます。 スクロールして、Toolsetを確認するとADKからインポートしたToolが登録されています。 右のPreviewからAgentの動きを確認することができます。今回はDeployせずPreviewで確認します。入力欄には「IBMの株価は?」と質問してみます。しばらくすると本日の株価が回答されました。Show Reasoningを開くと推論過程を確認することができます。株価を取得するTool「stock_quote」を使用し、AIがユーザの入力から自動的にTicker symbolを入力していることがわかります。 次に「IBMの企業情報」と質問をします。しばらくするとAIがユーザの入力からTicker symbolを入力し、Tool「stock_info」を利用して企業情報を取得、回答されました。ユーザの入力内容からAgentが使用するToolを選択し、実行していることがわかります。   さいごに ADKのご紹介とADKを使ってToolとAgentのインポートを行いました。 ADKのインストールおよび設定について、Pythonバージョンの設定やvenvの作成でつまずく部分はありましたが、venvが作成できればその後の設定はスムーズに進められました。 今回はVSI上のUbuntuサーバにADKをインストールしましたが、ご自身の端末に導入することで、より気軽にAgent開発を行えるかと思います。なお、今回は検証対象外でしたが、watsonx Orchestrate Developer Editionを利用する場合は、インストール要件としてやや高めのスペックが必要になる点にご注意ください。 検証時のADKのバージョンは1.5.1でしたが、7月末では1.8.0が最新バージョンとなっています。比較的頻繁にアップデートされますので適宜Release Notesをご確認ください。バージョンアップでコマンドオプションも変更される場合があるため、マニュアルを確認するかコマンドに`--help`を付与してパラメータを確認することをおすすめします。   お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:nicp_support@NIandC.co.jp   .anchor{ display: block; margin-top:-20px; padding-top:40px; }

back to top