IBM Workload Scheduler 10.2の新機能概要とインストール

IBM Workload Scheduler(IWS) 10.2が 2023/07/28 付でリリースされました。
本記事ではIWS10.2で提供される新機能と、RHELでのIWSサーバーとIWS Agentの導入手順を紹介します。

# IWS V10.2で提供される新機能概要
IWS V10.1 Fix Pack 3のリリースから3ヶ月と経たないうちにIWS 10.2がリリースされました。約3ヶ月おきにFix Packがリリースされたり、新バージョンがリリースされたりと、リリースサイクルが速くなってきているのを実感しています。
IWS10.2で提供される新機能には次のようなものがあります。

* 強化されたモニタリング機能
    * ツリービュー、クエリの保存・共有、高度なクエリ、依存関係の確認ページなどが追加され、UIも全般的により見やすく、使いやすく、管理しやすく改良されたようです。
* セルフ・サービス・カタログ機能への承認フローの追加
* 新しい連携機能
    * Jira, ServiceNow, RESTful, JSONata, IBM RPAなどとの連携機能が追加されています。

それぞれの説明については[製品マニュアル "New enhanced integrations"](https://www.ibm.com/docs/en/workload-automation/10.2.0?topic=enhancements-new-enhanced-integrations "New enhanced integrations") でご確認ください。個人的にはUIにどのような改良が加えられたのか気になります。

リリース・ノートはこちらです。
[IBM Workload Scheduler Version 10.2.0 Release Notes](https://www.ibm.com/support/pages/ibm-workload-scheduler-version-1020-release-notes "IBM Workload Scheduler Version 10.2.0 Release Notes")
[Dynamic Workload Console Version 10.2.0 Release Notes](https://www.ibm.com/support/pages/dynamic-workload-console-version-1020-release-notes "Dynamic Workload Console Version 10.2.0 Release Notes")

# IWS V10.2 のインストール
早速インストールしてみます。以下はIBM Workload Scheduler(IWS) 10.1 を RHELへインストールした時の記録です。
手順は[マニュアル](https://www.ibm.com/docs/en/workload-automation/10.2.0?topic=cli-typical-installation-scenario "Typical installation scenario")に記載されていますが、ここでは作業の便宜上、一部順番を入れ替えてインストール作業を実施しています。

## サーバー構成
IWSサーバーとDBサーバーは別建てとします。同一OSに導入することも可能ですが、IWSとDb2それぞれのサポートOSの違いにより、今回は別建てとしています。同一OSに導入する場合は、RHEL8.x を選択する必要があることに注意してください。
* IWSサーバー
    * OS: RHEL 9.2
    * 導入コンポーネント：IWS Master Domain Manager(MDM), Dynamic Workload Console(DWC)
* IWS DBサーバー/IWS エージェント
    * OS: RHEL 8.8 (2023/8/14 現在、Db2がサポートする最も新しいRHELのバージョンが 8.8 であるため）
    * 導入コンポーネント: IBM Db2 Advanced Enterprise Server Edition 11.5.8.0（後述「導入メディアの入手先」を辿って入手したFix Pack イメージを使用）,　IWS 10.2 Agent(FTAおよびDA）
    

## 導入前提
導入前提要件はこちらをご参照ください。

[Detailed system requirements for IBM Workload Scheduler, version 10.2.0](https://www.ibm.com/support/pages/node/7004593 "Detailed system requirements for IBM Workload Scheduler, version 10.2.0")
[Detailed System Requirements for Dynamic Workload Console version 10.2.0](https://www.ibm.com/support/pages/node/7004595 "Detailed System Requirements for Dynamic Workload Console version 10.2.0")


最新のサポート状況はこちらでも確認可能です。

https://www.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=DAB34855C03D4EDD82B0B26BE01CF6C8&osPlatforms=AIX|HP|IBM%20i|Linux|Mac%20OS|Solaris|Windows&duComponentIds=S006|S007|A004|A003|A014|A001|A005|A002|C012|C009|C008|C010|C013|C011&mandatoryCapIds=30|9|25|26&optionalCapIds=341|130|223


## 導入メディアの入手先
こちらを参照してください。
[IBM Workload Scheduler, version 10.2.0 - Linux](https://www.ibm.com/support/pages/node/7006479 "IBM Workload Scheduler, version 10.2.0 - Linux")
本手順では、WAS Liberty はIWSのインストール・イメージに同梱されている 23.0.0.6 を、Db2 については上記リンクから辿って入手した 11.5.8 を使用しています。

## IWS DBサーバーのインストールとセットアップ

### umaskの設定
* 操作はDBサーバー上のrootユーザで行います。
* 作業を行う前にumask は 0022へ設定します。（これ超重要！）
```
umask 0022
```
* 設定結果はumaskコマンドで確認できます。
```
umask
```

### 時刻設定
IWSはジョブ・スケジューラーです。時刻を適切に設定しておくことが重要です。
* タイムゾーンや現在時刻を確認します。
```
timedatectl status
```

* 必要に応じてタイムゾーンを変更します。
```
timedatectl set-timezone Asia/Tokyo
```

* 実行例：
```
[root@iwsdb00 work]# timedatectl set-timezone Asia/Tokyo
[root@iwsdb00 work]# timedatectl status
               Local time: 月 2023-08-14 12:29:50 JST
           Universal time: 月 2023-08-14 03:29:50 UTC
                 RTC time: 月 2023-08-14 03:29:51
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[root@iwsdb00 work]# 
```

### 必要ユーザの作成
次のOSユーザを作成し、パスワードを設定しておきます。（パスワードは導入時に必要）

|ユーザ名 |所属グループ|用途 |
|---|---|---|
|db2inst1|db2iadm1|Db2インスタンスユーザ|
|db2fadm1|db2fadm1|Db2フェンスユーザ|

* ユーザー作成した時のコマンド（参考）
```
groupadd -g 1002 db2iadm1
groupadd -g 1003 db2fadm1
useradd -u 1002 -g 1002 db2inst1
useradd -u 1003 -g 1003 db2fadm1
passwd db2inst1
passwd db2fadm1
```

### 前提パッケージインストール
環境によって前提RPMが導入されていたり、されていなかったりするので確認の上導入します。今回はDBサーバーへ以下のRPMを導入しました。

```
yum install binutils
yum install libaio
yum install mksh
yum install unzip
```

### Db2レスポンスファイルの編集
* テンプレートのレスポンスファイル(db2server.rsp)をバックアップし、編集します。
```
cd /<メディア展開ディレクトリ(db2setup スクリプト配置ディレクトリー> 
cp -p db2server.rsp db2server.rsp.orig
vi db2server.rsp
```

* レスポンスファイル（db2server.rsp）の次のパラメーターを編集します。
    * DB2のポート番号（デフォルト：25000)は他のサービスと競合したため、50000へ変更しています。
    * fenced ユーザー、インスタンス・ユーザーは環境に合わせて適宜変更してください。

|パラメーター名 |設定値|説明 |
|---|---|---|
|LIC_AGREEMENT|ACCEPT|ライセンスへの同意|
|LANG|JP|導入時のメッセージ表示言語|
|DB2_INST.UID|1002|Db2インスタンスユーザーのUID。コメントアウトを外してUID指定|
|DB2_INST.GID|1002|Db2インスタンスユーザーのGID。コメントアウト外をしてGID指定|
|DB2_INST.HOME_DIRECTORY|/home/db2inst1|Db2インスタンスユーザーのホームディレクトリー|
|DB2_INST.PASSWORD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|
|DB2_INST.TYPE|ESE|Db2インスタンスタイプ|
|DB2_INST.SVCENAME|db2c_db2inst1|Db2サービス名。コメントアウトを外す|
|DB2_INST.PORT_NUMBER|50000|Db2ポート。コメントアウトを外し、デフォルト(25000)を変更|
|DB2_INST.FENCED_USERNAME|db2fadm1|Db2 fencedユーザー名。先の手順で作成したユーザー|
|DB2_INST.FENCED_UID|1003|Db2 fencedユーザーのUID。コメントアウトを外す|
|DB2_INST.FENCED_GROUPNAME|db2fadm1|Db2 fencedユーザーのグループ名。先の手順で作成したグループ|
|DB2_INST.FENCED_GID|1003|Db2 fencedユーザーのGID。コメントアウトを外す|
|DB2_INST.FENCED_HOME_DIRECTORY|/home/db2fadm1|Db2 fencedユーザーのホームディレクトリー。コメントアウトを外す|
|DB2_INST.FENCED_PASSWORD|password|Db2 fencedユーザーのパスワード（ユーザー作成時に設定したものを指定）|

### Db2インストールコマンドの実行
* レスポンスファイルを指定して Db2のインストールコマンドを実行します。実行例では32bitライブラリ関連の警告メッセージが表示されていますが、64bit環境かつ警告かつ検証環境なので今回は特に何の対応も行っていません。
```
./db2setup -r db2server.rsp
```

* 32bitライブラリに関する警告例
```
現行システムで満たされていない前提条件の要約: 
   DBT3514W  db2prereqcheck ユーティリティーは次の 32 ビット・ライブラリー・ファイルの検出に失敗しました: 「/lib/libpam.so*」。 
DBT3514W  db2prereqcheck ユーティリティーは次の 32 ビット・ライブラリー・ファイルの検出に失敗しました: 「libstdc++.so.6」。 
DBT3619W db2prereqcheck ユーティリティーは、ksh が ksh または ksh93 にリンクされていないことを検出しました。 これは、Tivoli SA MP を使用する Db2 高可用性フィーチャーに必要です。 
```

* db2syscプロセスが起動されていることを確認します。
```
# ps -ef | grep db2
root       42494       1 99 00:16 ?        04:13:14 /root/db2.tmp.41478/db2/linuxamd64/install//db2iure -r /work/server_dec/db2server.rsp -t /tmp/db2setup.trc -l /tmp/db2setup.log -idir /root/db2.tmp.41478/db2/linuxamd64/install/ -packageLocation /work/server_dec -action INSTALL
root      151406       1  0 04:27 ?        00:00:00 /opt/ibm/db2/V11.5/bin/db2fmcd
root      154947  112056  0 04:29 pts/2    00:00:00 tail -f db2setup.trc
root      160047       1  0 04:29 ?        00:00:00 db2wdog 0 [db2inst1]
db2inst1  160049  160047  0 04:29 ?        00:00:00 db2sysc 0
root      160055  160047  0 04:29 ?        00:00:00 db2ckpwd 0
root      160056  160047  0 04:29 ?        00:00:00 db2ckpwd 0
root      160057  160047  0 04:29 ?        00:00:00 db2ckpwd 0
db2inst1  160059  160047  0 04:29 ?        00:00:00 db2vend (PD Vendor Process - 1) 0
db2inst1  160067  160047  0 04:29 ?        00:00:00 db2acd 0 ,0,0,0,1,0,0,00000000,0,0,0000000000000000,0000000000000000,00000000,00000000,00000000,00000000,00000000,00000000,0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000192caa000,0000000000000000,0000000000000000,1,0,0,,,,,a89ecc,14,1e014,2,0,1,0000000000041fc0,0x240000000,0x240000000,1600000,4,2,18
root      160088   50095  0 04:30 pts/1    00:00:00 grep --color=auto db2
# 
```

### Db2ライセンスの適用
IWSに同梱されるDb2のライセンスファイルを適用します。ライセンスファイルはインストールイメージとともに提供されています。適用を忘れると、3ヶ月後にDb2へアクセスできなくなり、IWSが機能しなくなりますのでご注意ください。
（なお、適用忘れにより3ヶ月経過後にIWSが機能しなくなっても、ライセンスファイルを適用してDb2を起動すればまた使えるようになります。）


* ライセンスの適用状況を確認します。
```
su - db2inst1
db2licm -l
```

* ファイルをDBサーバー上任意のディレクトリーへ展開し、Db2インスタンスユーザーでライセンスファイル適用コマンドを実行します。
```
db2licm -a /work/db2std_o.lic 
```


* 適用と確認例
```
[db2inst1@iwsdb00 ~]$ db2licm -a /work/DB2LIC/std_o/db2/license/db2std_o.lic
LIC1402I  License added successfully.
LIC1426I  This product is now licensed for use as outlined in your License Agreement.  USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V11.5/license/en_US.iso88591"

[db2inst1@iwsdb00 ~]$ db2licm -l
Product name:                     "DB2 Advanced Enterprise Server Edition"
License type:                     "Trial"
Expiry date:                      "11/11/2023"
Product identifier:               "db2aese"
Version information:              "11.5"

Product name:                     "DB2 Standard Edition"
License type:                     "Restricted"
Expiry date:                      "Permanent"
Product identifier:               "db2std"
Version information:              "11.5"
Max amount of memory (GB):        "128"
Max number of cores:              "16"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"
IBM DB2 OEM High Capacity Feature:                    "Not licensed"
[db2inst1@iwsdb00 ~]$ 
```
### IWS用DB、DWC用DBの作成

* IWSサーバーのインストールイメージを展開し、インストールイメージに含まれる IWS DB 作成スクリプト(create_database.sql)をDBサーバーに配置します。

* DBサーバーのDb2インスタンスユーザーで、IWS DB 作成スクリプトを実行します。
```
su - db2inst1
db2 -tvf /work/iws/create_database_iws.sql
```

* 実行例
```
[db2inst1@iwsdb00 ~]$ db2 -tvf /work/iws/create_database.sql

CREATE DATABASE TWS USING CODESET UTF-8 TERRITORY US COLLATE USING IDENTITY WITH 'TWS Database'
DB20000I  The CREATE DATABASE command completed successfully.
UPDATE DB CFG FOR TWS USING LOGBUFSZ 512
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOGFILSIZ 1000
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOGPRIMARY 40
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOGSECOND 20
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOCKTIMEOUT 180
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOCKLIST 8192
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING APP_CTL_HEAP_SZ 1024
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING DFT_QUERYOPT 3
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING AUTO_MAINT ON
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING AUTO_TBL_MAINT ON
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING AUTO_RUNSTATS ON
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING STMT_CONC LITERALS
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING CATALOGCACHE_SZ -1
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING PAGE_AGE_TRGT_MCR 120
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
UPDATE DB CFG FOR TWS USING LOCKLIST AUTOMATIC
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

[db2inst1@iwsdb00 ~]$ 
```

* DWCサーバーのインストールイメージを展開し、インストールイメージに含まれる DWC DB 作成スクリプト(create_database.sql)をDBサーバーに配置します。

* DBサーバーのDb2インスタンスユーザーで、DWC DB 作成スクリプトを実行します。
```
su - db2inst1
db2 -tvf /work/dwc/create_database.sql
```

* 実行例
```
[db2inst1@iwsdb00 ~]$ db2 -tvf /work/dwc/create_database.sql 

CREATE DATABASE DWC USING CODESET UTF-8 TERRITORY US COLLATE USING IDENTITY WITH 'DWC Database'
DB20000I  The CREATE DATABASE command completed successfully.

[db2inst1@iwsdb00 ~]$ 
```

* DBが2つ作成されたことを確認します。
```
db2 list database directory
```

* 実行例
```
[db2inst1@iwsdb00 ~]$ db2 list database directory
 System Database Directory
 Number of entries in the directory = 2

Database 1 entry:
 Database alias                       = TWS
 Database name                        = TWS
 Local database directory             = /home/db2inst1
 Database release level               = 15.00
 Comment                              = TWS Database
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Database 2 entry:
 Database alias                       = DWC
 Database name                        = DWC
 Local database directory             = /home/db2inst1
 Database release level               = 15.00
 Comment                              = DWC Databas
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

[db2inst1@iwsdb00 ~]$ 
```


## IWSサーバーのインストールとセットアップ
IWS MDMの前提となる WAS Libertyを導入し、IWS DBを構成後、MDMとDWC導入します。作業はIWSサーバーで実施します。

### umaskの設定
* 作業を行う前にumask は 0022へ設定します。（これ超重要！）
```
umask 0022
```
* 設定結果はumaskコマンドで確認できます。
```
umask
```

### 時刻設定
DBサーバーと同様に、IWSサーバーでも時刻を適切に設定します。
* タイムゾーンや現在時刻を確認します。
```
timedatectl status
```

* 必要に応じてタイムゾーンを変更します。
```
timedatectl set-timezone Asia/Tokyo
```

* 実行例：
```
[root@iwsdb00 work]# timedatectl set-timezone Asia/Tokyo
[root@iwsdb00 work]# timedatectl status
               Local time: 月 2023-08-14 12:29:50 JST
           Universal time: 月 2023-08-14 03:29:50 UTC
                 RTC time: 月 2023-08-14 03:29:51
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[root@iwsdb00 work]# 
```

### 必要ユーザの作成
次のOSユーザを作成し、パスワードを設定しておきます。（パスワードは導入時に必要）

|ユーザ名 |所属グループ|用途 |
|---|---|---|
|wauser|wauser|IWS管理ユーザー|

* ユーザー作成した時のコマンド（参考）
```
groupadd -g 1001 wauser
useradd -u 1001 -g 1001 wauser
passwd wauser
```

### 前提パッケージインストール
環境によって前提パッケージがインストールされていたりされていなかったりするので確認の上追加インストールします。今回はIWSサーバーへ以下のパッケージを追加インストールしました。IWSのインストールスクリプトは netstatコマンドを実行します。RHEL9では初期インストールされなかったため、net-toolsを追加でインストールしておく必要がありました。

```
yum install unzip
yum install net-tools
```
### インストールメディアの準備
* IWSのインストールメディアを展開します。（作業用ディレクトリとして /work/IWSSVRを使用）
```
cd /work/IWSSVR
unzip 10.2-2023.07-IWS-SERVERLNX_X86_64.zip 
```

* WAS Libertyのインストールメディアをダウンロードし、作業用ディレクトリへ配置しておきます。


### IWS DBの構成
先の手順で作成したIWS DBの構成を行います。（必要なテーブル等を作成します。）
作業は引き続きIWSサーバーで行います。IWS DBサーバーではないのでご注意ください。
IWSデータベースへの接続はインストールメディアに含まれる Db2ドライバーを使用して行われるため、IWSサーバーにDb2クライアントの導入は不要です。

* インストールイメージに含まれる、データベース構成用のレスポンスファイル(configureDb.properties）を編集します。
```
cd /work/IWS/TWS/LINUX_X86_64/
cp -p configureDb.properties configureDb.properties.orig
vi configureDb.properties
```

* レスポンスファイル（configureDb.properties）の次のパラメーターを編集します。

|パラメーター名 |設定値|説明 |
|---|---|---|
|LANG|en|導入時のメッセージ表示言語|
|DB_HOST_NAME|iwsdb00.env2.com|IWS DB Serverのホスト名|
|DB_ADMIN_USER|db2inst1|Db2インスタンスユーザー名|
|DB_ADMIN_USER_PWD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|
|DB_USER|db2inst1|Db2インスタンスユーザー名|
|DB_PASSWORD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|

* umaskが0022であることを確認します。
```
umask
```

* データベース構成スクリプト(configureDb.sh）を実行します。
```
./configureDb.sh -f ./configureDb.properties
```

* 実行例
```
[root@iwssvr01 LINUX_X86_64]# ./configureDb.sh -f ./configureDb.properties
WAINST093I Checking connection to the database TWS on host iwsdb00.env2.com on port 50000 with user db2inst1.
WAINST091I Check version.
WAINST092I Update database.
WAINST077I The database has been successfully created or updated.
WAINST052I The command configureDb has completed successfully.
WAINST035I For more details see the installation log file: /tmp/installation/logs/configureDb_10.2.0.00.log.
[root@iwssvr01 LINUX_X86_64]# 
```

### WAS Libertyのインストール
MDMおよびDWCの前提となる WAS Libertyをインストールします。作業はrootユーザーで実施します。

* IWSの導入メディアに含まれるJava Extensionを使用するため、パスを通します。javaenv.shファイルを作成して実行します。

* javaenv.shの作成と実行例
```
# cat javaenv.sh 

JAVA_HOME=/work/IWSSVR/TWS/LINUX_X86_64/Tivoli_Eclipse_LINUX_X86_64/TWS/JavaExt/jre/jre
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export CLASSPATH

# . ./javaenv.sh
```

* パスが通ったことを確認します。
```
java -version
```

* 実行例
```
# java -version
openjdk version "11.0.13" 2021-10-19
IBM Semeru Runtime Open Edition 11.0.13.0 (build 11.0.13+8)
Eclipse OpenJ9 VM 11.0.13.0 (build openj9-0.29.0, JRE 11 Linux amd64-64-Bit Compressed References 20211022_282 (JIT enabled, AOT enabled)
OpenJ9   - e1e72c497
OMR      - 299b6a2d2
JCL      - 2d83aa3b76 based on jdk-11.0.13+8)
# 
```

* WAS Liberty をインストールします。
```
java -jar /work/WS_LBRT_V23.0.0.6.jar --acceptLicense /opt
```

* 実行例
```
[root@iwssvr01 work]# java -jar /work/WS_LBRT_V23.0.0.6.jar --acceptLicense /opt

Before you can use, extract, or install IBM WebSphere Application
Server, you must accept the terms of IMPORTANT: READ CAREFULLY and
additional license information. Please read the following license
agreements carefully.

The --acceptLicense argument was found. This indicates that you have
accepted the terms of the license agreement.

Extracting files to /opt/wlp
Successfully extracted all product files.

[root@iwssvr01 work]# 
```

* WAS Liberty のファイルが /opt/wlpに展開されていることを確認します。
```
ls -l /opt/wlp
```

* 実行例
```
[root@iwssvr01 work]# ls -l /opt/wlp

total 128
-rw-r--r--. 1 root root  1523 Aug 14 14:18 CHANGES.TXT
-rw-r--r--. 1 root root   244 Aug 14 14:18 Copyright.txt
-rw-r--r--. 1 root root 12446 Aug 14 14:18 README.TXT
drwxr-xr-x. 8 root root  4096 Aug 14 14:18 bin
drwxr-xr-x. 3 root root   111 Aug 14 14:18 clients
drwxr-xr-x. 4 root root    28 Aug 14 14:18 dev
drwxr-xr-x. 2 root root  4096 Aug 14 14:18 lafiles
drwxr-xr-x. 7 root root 73728 Aug 14 14:18 lib
drwxr-xr-x. 4 root root    36 Aug 14 14:18 templates
drwxr-xr-x. 4 root root    35 Aug 14 14:18 usr

[root@iwssvr01 work]# 
```

### IWS MDMのインストール
IWS MDMをインストールします。
作業はIWSサーバーで行い、rootユーザーを使用します。

* インストールイメージに含まれる、MDM導入用のレスポンスファイル(serverinst.properties）を編集します。
```
cd /work/IWSSVR/TWS/LINUX_X86_64/
cp -p serverinst.properties serverinst.properties.orig
vi serverinst.properties
```

* レスポンスファイル（serverinst.properties）の次のパラメーターを編集します。

|パラメーター名 |設定値|説明 |
|---|---|---|
|ACCEPTLICENSE|yes|ライセンスへの同意|
|THIS_HOSTNAME|iwssvr01.env2.com|IWS Serverのホスト名|
|THISCPU|IWSSVR01|IWS Serverの、IWS上のワークステーション名|
|SKIPCHECKPREREQ|true|前提チェックのスキップ（前提が満たされていることは別途確認すること）|
|SKIPCHECKEMPTYDIR|true|/opt/wlp以下のチェックをスキップする（ファイルが存在しても上書きする）|
|COMPANY_NAME|NAME|会社名（任意）|
|DB_HOST_NAME|iwsdb00.env2.com|IWS DB Serverのホスト名|
|DB_PORT|50000|IWS DBのポート番号（DB2導入時に指定したもの、50000)|
|DB_USER|db2inst1|Db2インスタンスユーザー名|
|DB_PASSWORD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|
|WLP_INSTALL_DIR|/opt/wlp|WAS Libertyの導入ディレクトリー|
|WA_PASSWORD|password|wauserのパスワード|

* umaskが0022であることを確認します。
```
umask
```

* MDMインストールコマンド(serverinst.sh）を実行します。
```
./serverinst.sh -f ./serverinst.properties
```

* 実行例
```
[root@iwssvr01 LINUX_X86_64]# ./serverinst.sh -f ./serverinst.properties

WAINST062I Checking input.
WAINST060I Installing binaries.
WAINST054I Configuring MDM.
WAINST202I Configuring broker.
WAINST200I Configuring WLP.
WAINST201I Configuring data source.
WAINST203I Configuring SFinal.
WAINST061I Performing post-configuration steps.
WAINST035I For more details see the installation log file: /opt/wa/TWSDATA/installation/logs/serverinst_10.2.0.00.log.
WAINST023I The installation has completed successfully.

[root@iwssvr01 LINUX_X86_64]# 
```

* wauserでIWSコマンドを実行できるよう、wauserの.bash_profileを設定します。
```
su - wauser
vi .bash_profile
exit 
```


* bash_profileの編集例
```
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi


# User specific environment and startup programs

. /opt/wa/twa_env.sh
```

* JnextPlanを実行し、日替わりジョブストリーム（FINAL）をスケジュールします。
```
$ su - wauser
$ JnextPlan
```

* ワークステーション制限(LIMIT)を100に変更してジョブを実行可能な状態にします。
```
$ conman "lc @;100;noask"
$ conman sc
```

### DWC データベースの構成
先の手順で作成したDWC DBの構成を行います。（必要なテーブル等を作成します。）
作業は引き続きIWSサーバーで行います。IWS DBサーバーではないのでご注意ください。
IWSデータベースへの接続はインストールメディアに含まれる Db2ドライバーを使用して行われるため、IWSサーバーにDb2クライアントの導入は不要です。

* インストールイメージに含まれる、データベース構成用のレスポンスファイル(configureDb.properties）を編集します。
```
cd /work/DWC
cp -p configureDb.properties configureDb.properties.orig
vi configureDb.properties
```

* レスポンスファイル（configureDb.properties）の次のパラメーターを編集します。

|パラメーター名 |設定値|説明 |
|---|---|---|
|LANG|en|導入時のメッセージ表示言語|
|DB_NAME|DWC|DWC DB名。デフォルトがTDWCとなっているが、DB作成スクリプトで "DWC"という名前のDBを作成しているのでそれに合わせる。|
|DB_HOST_NAME|iwsdb00.env2.com|IWS DB Serverのホスト名|
|DB_ADMIN_USER|db2inst1|Db2インスタンスユーザー名|
|DB_ADMIN_USER_PWD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|
|DB_USER|db2inst1|Db2インスタンスユーザー名|
|DB_PASSWORD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|

* umaskが0022であることを確認します。
```
umask
```

* データベース構成スクリプト(configureDb.sh）を実行します。
```
./configureDb.sh -f ./configureDb.properties
```

* 実行例
```
[root@iwssvr01 DWC]# ./configureDb.sh -f ./configureDb.properties

WAINST093I Checking connection to the database DWC on host iwsdb00.env2.com on port 50000 with user db2inst1.
WAINST091I Check version.
WAINST092I Update database.
WAINST077I The database has been successfully created or updated.
WAINST052I The command configureDb has completed successfully.
WAINST035I For more details see the installation log file: /tmp/installation/logs/configureDb_10.2.0.00.log.

[root@iwssvr01 DWC]# 
```

### DWCのインストール

* DWCのインストールイメージに含まれる、DWC導入用のレスポンスファイル(dwcinst.properties）を編集する。
```
# cp -p dwcinst.properties dwcinst.properties.orig
# vi dwcinst.properties
```

* レスポンスファイル（dwcinst.properties）の次のパラメーターを編集する。

|パラメーター名 |設定値|説明 |
|---|---|---|
|ACCEPTLICENSE|yes|ライセンスへの同意|
|SKIPCHECKPREREQ|true|前提チェックのスキップ（前提が満たされていることは別途確認すること）|
|DWC_ADMIN_PW|password|DWCのデフォルト管理者ユーザーであるdwcadminのパスワード（任意指定）|
|RDBMS_TYPE|DB2|データベースのタイプ。デフォルトはDERBYになっているので必ず変更する。|
|DB_HOST_NAME|iwsdb00.env2.com|IWS DB Serverのホスト名|
|DB_PORT|50000|IWS DBのポート番号（DB2導入時に指定したもの、50000)|
|DB_USER|db2inst1|Db2インスタンスユーザー名|
|DB_PASSWORD|password|Db2インスタンスユーザーのパスワード（ユーザー作成時に設定したものを指定）|
|WLP_INSTALL_DIR|/opt/wlp|WAS Libertyの導入ディレクトリー|

* DWCのインストールコマンドを実行する。
```
./dwcinst.sh -f ./dwcinst.properties
```

* 実行例
```
[root@iwssvr01 DWC]# ./dwcinst.sh -f ./dwcinst.properties

WAINST208I Checking WLP.
WAINST204I Installing installation tools.
WAINST053I Installing java.
WAINST206I Installing Jdbc drivers.
WAINST207I Installing WLP profile.
WAINST200I Configuring WLP.
WAINST201I Configuring data source.
WAINST007I Starting server dwcServer ...
WAINST055I Updating registry.
WAINST035I For more details see the installation log file: /opt/wa/DWC/DWC_DATA/installation/logs/dwcinst_10.2.0.00.log.
WAINST023I The installation has completed successfully.
    WAINST006I Browse to this URL with a browser: https://iwssvr01:9443/console/login.jsp
    User : dwcadmin
[root@iwssvr01 DWC]# 
```

### DWCの初期セットアップ（エンジン接続の作成）

* インストールコマンド実行時に表示されたURLへアクセスし、dwcadminとインストール時に指定したパスワードでログインできることを確認します。
![スクリーンショット 2023-08-14 18.17.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/2977f9e5-ad4f-f3fe-d725-8ca80c4a0692.png)

* エンジン接続を作成します。「管理」メニューから「エンジン接続」をクリックします。
![スクリーンショット 2023-08-14 15.27.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/6cd38e44-6b5c-486c-874b-4e3720d4ae38.png)

*「エンジン接続」画面で「新規作成」ボタンをクリックし、「分散」を選択します。
![スクリーンショット 2023-08-14 15.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/65ed4594-ebed-7cab-970f-baa451318a61.png)

* エンジン名、ホスト名、ポート番号、ユーザーID、パスワードを入力し「保存」ボタンをクリックします。（ポート番号はIWSインストール時に特に変更していない場合は31116、ユーザーは wauserです。）
![スクリーンショット 2023-08-14 15.32.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/247b9d48-a0b7-03fa-dd9b-84cb29e9c98b.png)

* 「モニターおよびレポート」メニューから「ワークロードのモニター」を選択します。
![スクリーンショット 2023-08-14 15.29.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/d1ecff01-734a-826b-6d40-55756fb33a60.png)

* 「エンジン」として先の手順で作成したエンジンが選択され、「オブジェクト・タイプ」としてジョブが選択されていることを確認し、「実行」をクリックします。
![スクリーンショット 2023-08-14 15.30.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/03dc1781-2818-7460-56bf-757bbdd2a497.png)

* 特にエラーなくジョブの一覧が表示されることを確認します。
![スクリーンショット 2023-08-14 15.33.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/a84c58c7-803b-02d2-c83e-6cc72f5fa9ff.png)

## IWS エージェントのインストールとセットアップ
IWS エージェントをインストールします。検証環境をなるべくコンパクトにするため、今回はIWS DBサーバーへ エージェントをインストールします。
エージェントタイプは Fault Tolerant Agent (FTA) と Dynamic Agent (DA)の両方をインストールします。
以降の操作は全てrootユーザーで行います。

### umaskの設定
* umaskを 0022 に設定します。
```
umask 0022
```

### 前提パッケージのインストール
* 前提パッケージをインストールします。環境によって異なりますが、bcが入っていない場合は前提チェックスクリプトが異常終了することがあります。
```
yum install bc
```

### 必要ユーザの作成
* 次のOSユーザを作成し、パスワードを設定しておきます。

|ユーザ名 |所属グループ|用途 |
|---|---|---|
|wauser|wauser|IWS管理ユーザー|

参考:ユーザー作成時のコマンド
```
groupadd -g 1001 wauser
useradd -u 1001 -g 1001 wauser
passwd wauser
```

### twsinst スクリプト（Agentインストールスクリプト）の実行
* インストールイメージを展開したディレクトリへ移動し、twsinst スクリプトを実行します。
twsinst スクリプトのオプション詳細は下記を参照してください。

https://www.ibm.com/docs/en/workload-automation/10.2.0?topic=agents-agent-installation-parameters-twsinst-script


* 下記例は /work/IWS　にインストールイメージを展開した場合の実行例です。

```
cd /work/IWS/TWS/LINUX_X86_64
./twsinst -new -acceptlicense yes -agent both -inst_dir /opt/wa -master IWSSVR21 -tdwbhostname iwssvr01.env2.com -tdwbport 31116 -thiscpu IWSDB00 -uname wauser
```

指定オプション：
|オプション |指定値|備考 |
|---|---|---|
|-agent|both|FTA,DA両方をインストール|
|-inst_dir|/opt/wa|インストールディレクトリー|
|-master|IWSSVR01|FTA接続先MDMのワークステーション名|
|-tdwbhostname|iwssvr01.env2.com|DA接続先MDMのホスト名|
|-tdwbport|31116|DA接続先MDMのtdwbポート（デフォルト）|
|-thiscpu|IWSDB21|FTAのワークステーション名。この場合DAのワークステーション名は IWSDB21_1となる。|
|-uname|wauser|IWS管理ユーザー名|

前提を満たしていることを確認できているにもかかわらず、前提チェックのエラーによりインストールへ進めない場合は、"-skipcheckprereq" オプションを指定して twsinst コマンドを実行します。
```
cd /work/iws/TWS/LINUX_X86_64
./twsinst -new -skipcheckprereq -acceptlicense yes -agent both -inst_dir /opt/wa -master IWSSVR21 -tdwbhostname iwssvr01.env2.com -tdwbport 31116 -thiscpu IWSDB00 -uname wauser
```

* 実行結果の例
```
[root@iwsdb00 LINUX_X86_64]# ./twsinst -new -acceptlicense yes -agent both -inst_dir /opt/wa -master IWSSVR21 -tdwbhostname iwssvr01.env2.com -tdwbport 31116 -thiscpu IWSDB00 -uname wauser
IBM Workload Automation (UNIX) 10.2.0.00 
 
#
IBM (R) 
HCL (R) 
ライセンス対象マテリアル  - IBM および HCL の所有物です。 
5698-WSH 
(C) Copyright IBM Corp. 1998, 2016 不許複製・禁無断転載。
(C) Copyright HCL Technologies Ltd. 2016, 2023 不許複製・禁無断転載。
IBM は、世界の多くの国で登録された International Business Machines Corporation 
の商標です。
HCL は、世界の多くの国で登録された HCL Technologies Limited 
の商標です。
AWSFAB051I オペレーティング・システムの検査中
AWSFAB052I ユーザーの検査中
AWSFAB053I 入力パラメーターの検査中
AWSFAB054I TWSUser の検査中
AWSFAB056I インストール・ディレクトリーの検査中
AWSFAB058I 構成ファイル欠落の検査中
AWSFAB059I IBM Workload Automation レジストリーの検査中
AWSFAB372I 前提条件の検査中
AWSFAB119I Java 拡張機能のインストール中
AWSFAB117I IBM Workload Automation エージェントのインストール中
AWSFAB118I CIT エージェントのインストール中
AWSFAB063I エンジン・パッケージのインストール
AWSFAB387I R3BATCH メソッドのインストール中
AWSFAB396I PeopleSoft メソッドのインストール中
AWSFAB065I アンインストール・ファイルのコピー中
AWSFAB474I セキュリティー・スクリプトを実行します。
AWSFAB474I セキュリティー・スクリプトを実行します。
AWSFAB066I IBM Workload Automation の構成中
AWSFAB067I IBM Workload Automation の開始
AWSFAB068I インストールの完了
AWSFAB139I IBM Workload Automation レジストリーのインストール中
 
AWSFAB033I インストールが正常に完了しました。
AWSFAB045I 詳細については、次のログを参照してください:/opt/wa/TWSDATA/installation/logs/twsinst_LINUX_X86_64_wauser^10.2.0.00.log。
[root@iwsdb00 LINUX_X86_64]# 
```

### DAをMDMへ接続する
DAのワークステーション定義は、DAインストール時に自動的にIWS DBに登録されます。
MDM のグローバル・オプション "enAddWorkstation"の設定値により、DAが実動計画(Symphonyファイル）に追加されてジョブを実行可能となるタイミングが異なります。
以降の手順は全てIWSサーバーで実行します。

"enAddWorkstation"の設定値は、IWS管理ユーザーで次のコマンドを実行して確認可能です。
```
optman ls | grep enAddWorkstation
```

DAを自動的に実動計画に追加するには"enAddWorkstation"の値をYESにしておきます。
"enAddWorkstation"の値は次のコマンドで変更可能です。（下記はYESに変更する場合）
```
optman chg aw = YES
```

#### enAddWorkstationの値がNOの場合

* IWS DBへDAのワークステーション定義が自動登録された後、最初のFINALジョブストリーム実行または JnextPlan実行時に実働計画へDAが追加されます。
導入後直ちにDAの接続確認を行いたい場合はIWS管理ユーザーで次のコマンドを実行します。ただし、このコマンドを実行すると全FTAへ実動計画の再配布が行われるため、本番稼働環境での実行は推奨されません。その場合はFINALジョブストリームが実行されるのを待ちます。

```
JnextPlan -for 0000
```

* 実動計画へDAが追加されたことを確認します。IWS管理ユーザーで次のコマンドを実行し、実行結果にエージェント名と接続時刻が表示されていることを確認します。

```
conman sc
```



#### enAddWorkstationの値がYESの場合

* IWS DBへDAのワークステーション定義が自動登録された後、数分後に実動計画にDAが追加されます。
導入後に少し時間をおいてからIWS管理ユーザーで次のコマンドを実行し、実行結果にエージェント名と接続時刻が表示されていることを確認します。

```
conman sc
```

* 確認結果の例（ IWSDB00_1を追加した場合）
```
[wauser@iwssvr01 ~]$ conman sc
IBM Workload Automation(UNIX)/CONMAN 10.2.0.0 (20230724) 
Licensed Materials - Property of IBM* and HCL**
5698-WSH
(C) Copyright IBM Corp. 1998, 2016 All rights reserved.
(C) Copyright HCL Technologies Ltd. 2016, 2023 All rights reserved. 
* Trademark of International Business Machines
** Trademark of HCL Technologies Limited
Installed for user "wauser".
Locale LANG set to the following: "en"
Scheduled for (Exp) 08/14/23 (#2) on IWSSVR01.  Batchman LIVES.  Limit: 100, Fence: 0, Audit Level: 1
/
%sc
CPUID              RUN NODE        LIMIT FENCE DATE     TIME  STATE       METHOD                                   DOMAIN
IWSSVR01             2 *UNIX MASTER  100     0 08/14/23 23:59    I J  M EA                                         MASTERDM        
IWSSVR01_1           2  UNIX AGENT   100     0 08/14/23 23:59  LBI J  M                                            MASTERDM        
IWSSVR01_DWB         2  OTHR BROKER  100     0 08/14/23 23:59  LTI JW                                              MASTERDM        
IWSSVR01_XA          2  OTHR X-AGENT 100     0 08/14/23 23:59  LXI JX     unixlocl                                 MASTERDM        
MASTERAGENTS         2  OTHR POOL    100     0 08/14/23 23:59  LBI J                                               MASTERDM        
IWSDB00_1            2  UNIX AGENT   100     0 08/15/23 09:46  LBI J  M                                            MASTERDM        
[wauser@iwssvr01 ~]$ 
```

### FTAをMDMへ接続する
Dynamic Workload Console で以下の手順をで実行します。

#### FTAのワークステーション定義を登録する
* Dynamic Workload Consoleへログインし、「設計」＞「ワークロード定義（新規）」＞「Workload Designer」の順に選択する。
![スクリーンショット 2023-08-15 9.55.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/97832cb4-7023-0f99-d562-f1ec13f18cd9.png)

* 「エンジンの選択」ダイアログが表示されたら、適宜エンジンを選択し「適用」ボタンをクリックする。
![スクリーンショット 2022-10-17 17.34.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/57540974-25ef-d031-aeb9-4b523e4e5178.png)

* 「検討領域」のタブで「新規作成」＞「ワークステーション」の順にクリックする。
![スクリーンショット 2023-08-15 9.55.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/08e7022b-4261-a29a-0b8c-8c7ff069ff0a.png)


* 「ワークステーションの選択」ダイアログで「フォールト・トレラント・エージェント」をクリックする。
![スクリーンショット 2023-08-15 9.56.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/8cffc6fd-e2c4-8d68-badc-29b6ba6c4d26.png)


* 画面右側の「プロパティー」タブで次の内容を入力する。記載のないものは特に指定がなければデフォルトのまま。値が指定されていなければ入力不要。入力後「保存」をクリックする。

|項目|指定値|説明|
|---|---|---|
|フォルダ|/|デフォルトは"/"。特に指定がなけれなそのまま。|
|名前|IWSDB00|FTAのワークステーション名。通常はホスト名と同一にする。|
|ドメイン|MASTERDM|FTAをMDMに直接接続する場合はMASTERDM。|
|タイム・ゾーン|Asia/Tokyo|システムで指定したタイムゾーンに合わせる|
|ノード名（通信オプションのセクションを展開）|iwsdb00.env2.com|FTAのホスト名またはIPアドレス|

* 設定例
![スクリーンショット 2023-08-15 9.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/783405aa-cd42-96ea-ff9f-a88f024b0b1a.png)

![スクリーンショット 2023-08-15 9.57.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/6bae9f5d-32eb-cfdb-5cb9-e0607fe05ecf.png)


#### FTAを実動計画に追加する
* IWS DBへFTAのワークステーション定義が自動登録された後、最初のFINALジョブストリーム実行または JnextPlan実行時に実働計画へFTAが追加されます。導入後直ちにFTAの接続確認を行いたい場合はIWS管理ユーザーで次のコマンドを実行します。ただし、このコマンドを実行すると全FTAへ実動計画の再配布が行われるため、本番稼働環境での実行は推奨されません。その場合はFINALジョブストリームが実行されるのを待ちます。


```
JnextPlan -for 0000
```

* 実動計画へFTAが追加されたことを確認します。IWS管理ユーザーで次のコマンドを実行し、実行結果にFTA名と接続時刻が表示されていることを確認します。

```
conman sc
```

* 次のコマンドを実行し、FTAでジョブを起動できるようにします。（ FTA_NAME は FTA名)
```
conman "lc FTA_NAME;100"
```

* 確認結果の例(IWSDB00が追加され、LIMITが100になっていることを確認)
```
[wauser@iwssvr01 ~]$ conman sc
IBM Workload Automation(UNIX)/CONMAN 10.2.0.0 (20230724) 
Licensed Materials - Property of IBM* and HCL**
5698-WSH
(C) Copyright IBM Corp. 1998, 2016 All rights reserved.
(C) Copyright HCL Technologies Ltd. 2016, 2023 All rights reserved. 
* Trademark of International Business Machines
** Trademark of HCL Technologies Limited
Installed for user "wauser".
Locale LANG set to the following: "en"
Scheduled for (Exp) 08/15/23 (#3) on IWSSVR01.  Batchman LIVES.  Limit: 100, Fence: 0, Audit Level: 1
/
%sc
CPUID              RUN NODE        LIMIT FENCE DATE     TIME  STATE       METHOD                                   DOMAIN
IWSSVR01             3 *UNIX MASTER  100     0 08/15/23 10:14    I J  M EA                                         MASTERDM        
IWSDB00              3  UNIX FTA     100     0 08/15/23 10:14  LTI JW M                                            MASTERDM        
IWSDB00_1            3  UNIX AGENT   100     0 08/15/23 10:14  LBI J  M                                            MASTERDM        
IWSSVR01_1           3  UNIX AGENT   100     0 08/15/23 10:14  LBI J  M                                            MASTERDM        
IWSSVR01_DWB         3  OTHR BROKER  100     0 08/15/23 10:14  LTI JW                                              MASTERDM        
IWSSVR01_XA          3  OTHR X-AGENT 100     0 08/15/23 10:14  LXI JX     unixlocl                                 MASTERDM        
MASTERAGENTS         3  OTHR POOL    100     0 08/15/23 10:14  LBI J                                               MASTERDM        
[wauser@iwssvr01 ~]$ 

```

# まとめ
ここまでで以下の作業を実施しました。これでIWS DBサーバー、IWSサーバー、IWSエージェントが揃い、ジョブを実行できる環境が整いました。
* IWS DBサーバーのインストールとセットアップ
* IWS サーバーのインストールとセットアップ
* IWS エージェントのインストールとセットアップ

以上で IWS 10.2のインストールは完了です。