はじめに
z/OSの新しいインターフェースを提供するZowe("ゾーウィ")というオープンソースプロジェクトがあります。2019年4月にV1.1.0、5月にV1.2.0がリリースされました(オプションでの有償サポート契約もありますが、基本無償で入手可能です)。
従来のPCOMを使った3270ベースのユーザーインターフェースではなく、ブラウザ、コマンド、APIといった、イマドキの環境から利用しやすいインターフェースが提供されることになります。
コンセプトはすばらしいと思います。Command Level Interfaceが提供されるというのがグッと来ますねぇ。
はやくこれが当たり前に提供されるようになって欲しい。
ということで、この環境を使ってみたく、テスト環境にインストールしてみました。その時の作業ログです。
関連記事
Zoweと戯れる - (1) インストール
Zoweと戯れる - (2) Zoweデスクトップ
Zoweと戯れる - (3) Zowe CLI
Zoweと戯れる - (4) VSCode Extension for Zowe
環境情報
今回使用する環境はz/OS V2.3を使用します。
Zoweの前提はこちら
System requirements
z/OS Version 2.2 or later.
IBM z/OS Management Facility (z/OSMF) Version 2.2 or Version 2.3
セットアップ作業メモ
以下のドキュメントを参考に、インストールしていきます。
Installing Zowe
VOLUME追加
結構USS上のサイズが必要です。
とりあえずZOWE用に3390-9型1本(≒8.5GB)用意して作業することにします。
今回はzD&T(IBM ZをIntel Linux上でエミュレーションする製品)の環境使うので、その辺のメモも残しておきます。
(1)DASDイメージファイル作成
コマンド例
$ alcckd ZOWE00 -d3390-9
(2) Devicemapファイル定義追加
device 0AA6 3390 3390 /home/ibmsys1/z1090/disks/ZOWE00
(3) IPL実施
(4) DASDイニシャライズ
//INITDASD JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*-----------------------------------------------------
//*-----------------------------------------------------
//* MOD-3: VTOC(0,1,974) INDEX(65,0,50)
//* MOD-9: VTOC(0,1,2939) INDEX(196,0,150)
//*
//FORMAT EXEC PGM=ICKDSF,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
INIT UNIT(0AA5) NOVALIDATE NVFY VOLID(ZOWE01) PURGE -
VTOC(0,1,2939) INDEX(196,0,150)
/*
(5) DASDオンライン
V 0AA5,ONLINE
(6) UCATとAlias作成しておく
//DEFUCAT JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*-----------------------------------------------------
//STEP EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE USERCATALOG ( +
NAME(USERCAT.Z23A.ZOWE01) +
VOL(ZOWE01) +
BUFSP(8192) +
CYL(20 10) +
ICFCATALOG +
)
/*
//DEFALIAS JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*-----------------------------------------------------
//STEP EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEF ALIAS(NAME(ZOWE01) RELATE(USERCAT.Z23A.ZOWE01))
/*
zFS準備
USS上にマウントするファイルシステム(zFS)を作成してマウントする。
(1) USS上にマウントポイント作成
とりあえず、以下のディレクトリにがっつりでかいzFSマウントして、この下を使うことにする。
# mkdir /usr/lpp/util
(2) zFS作成とマウント
Node.jsやらPythonやらzoweやらが結構でかいらしい。
USS上でファイル解凍することも考えて、がっつり4000シリンダー(≒3.0GB)くらいのもの作ってマウントします。(が、実際にはこれでも足りなかった...。最終的にはzFSとして4GBくらい消費してます。)
//ZFSCRE JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*-----------------------------------------------------
//*********************************************************************
//ALLOCZ EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(ZOWE01.ZFS) -
LINEAR CYLINDERS(4000 120) SHAREOPTIONS(3) VOLUMES(ZOWE01))
//*********************************************************************
//* CHECK FOR CONDITION CODE 0 - JOB ENDS IF RC IS NOT 0 *
//*********************************************************************
//RCCHCK IF ALLOCZ.RC=0 THEN
//*********************************************************************
//* FORMAT THIS STEP FORMATS YOUR NEWLY CREATED ZFS DATA SET. *
//* THIS STEP SHOULD COMPLETE WITH A RETURN CODE OF 0. *
//*********************************************************************
//FORMAT EXEC PGM=IOEAGFMT,REGION=0M,
// PARM=('-aggregate ZOWE01.ZFS -compat')
//* STEPLIB DD DSN=IOE.SIOELMOD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//*********************************************************************
//* MOUNT THIS STEP MOUNTS YOUR NEWLY CREATED ZFS FILE SYSTEM *
//* USING THE AGGRGROW PARAMETER. *
//*********************************************************************
//MOUNT EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSIN DD *
MOUNT FILESYSTEM('ZOWE01.ZFS') +
TYPE(ZFS) MODE(RDWR) PARM('AGGRGROW') +
MOUNTPOINT('/usr/lpp/util')
//RCCHCK ENDIF
IPL後も自動マウントされるように、BPXPRMxxにマウント指定しておきます。
MOUNT FILESYSTEM('ZOWE01.ZFS')
MOUNTPOINT('/usr/lpp/util')
TYPE(ZFS) MODE(RDWR)
※以降のステップを進めていくにあたって、zFS用のVSAMが87000トラックでExtentが頭打ちになってしまいました。どうやらVSAMの4GBのサイズに達してしまったらしい。
なので、一旦上のファイルシステムをアンマウントし、以下のようにEXTENDEDADDRESSABLEを指定して4GB以上のアクセスを可能にしてあげてから、マウントし直す必要がありました!(DEFINE CLUSTERでzFS作成するときにこれを最初から有効化する方法がイマイチ分からなかった...)
//ZFSALT JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*-----------------------------------------------------
//ALTER EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
ALTER -
ZOWE01.ZFS -
EXTENDEDADDRESSABLE
//*
参考: DFSMS Access Method Services Commands - ALTER
Node.jsのセットアップ
Zowe Application Frameworkの前提としてNode.jsが必要らしいので、z/OS上にNode.jsをインストールします。
Zowe - Installing Node.js on z/OS
上のサイトから、以下のnode.jsのダウンロードサイトへのリンクが張られています。
https://developer.ibm.com/node/sdk/ztp/#downloads-ztp
これはIBM SDK for node.js for z/OS のTrial版のようです。
z/OS版のnode.jsは基本ライセンスチャージは無しで入手できます。
- Traial(Webからダウンロード/ PAXアーカイブ形式) =>無償
- Official Procuct(shopzからオーダー/ SMP/E形式) => 無償
- Subscription & Support (サポート契約) => 有償
参考: 無償版の入手について
IBM SDK for Node.js - z/OS
How to obtain IBM SDK for Node.js – z/OS, at no charge
さて、飛ばされた先のダウンロードサイトみてみると...
IBM SDK for Node.js – z/OS Trial
んー、なんだかNode.jsの前提としてPerlとPythonとMakeも必要らしい。面倒だのう。まずはこれらを入手してインストールします。
これらはRocket Softwareのサイトからダウンロードできます。
ユーザー登録が必要ですが、無料で入手可能です。
以下をダウンロード
Gzip 1.9 (gzip-1.9-edc_b002.180703.tar 約1MB)
=> 後続のブツが軒並みgzで提供されてるのでそれを解凍するためにまずコイツが必要!
bash 4.3 (bash-4.3_b018.170518.tar.gz 約1MB)
=> Pythonの前提になってるのでコイツも必要!
Perl 5.24.0 (perl-5.24.0_b007.180202.tar.gz 約30MB)
Python 2.7.13 (python-2017-04-12-py27.tar.gz 約480MB)
Make 4.1 (make-4.1_b0002.160426.tar.gz 約400KB)
Gzip
USS上に/usr/lpp/util/Gzip作って、tarを転送してそこに解凍。
で、このディレクトリのbinをPATHに追加
$ cd /usr/lpp/util/Gzip
$ tar -xvf gzip-1.9-edc_b002.180703.tar
$ export PATH=$PATH:/usr/lpp/util/Gzip/bin
これでgzipが使えるようになった。
$ gzip --help
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).
Mandatory arguments to long options are mandatory for short options too.
-c, --stdout write on standard output, keep original files unchanged
-d, --decompress decompress
-f, --force force overwrite of output file and compress links
-h, --help give this help
-k, --keep keep (don't delete) input files
-l, --list list compressed file contents
-L, --license display software license
-n, --no-name do not save or restore the original name and timestamp
-N, --name save or restore the original name and timestamp
-q, --quiet suppress all warnings
-r, --recursive operate recursively on directories
--rsyncable make rsync-friendly archive
-S, --suffix=SUF use suffix SUF on compressed files
--synchronous synchronous output (safer if system crashes, but slower)
-t, --test test compressed file integrity
-v, --verbose verbose mode (up to 4 times)
-V, --version display version number
-1, --fast compress faster
-9, --best compress better
-z, --zedc Unauthorized interface for zEnterprise Data Compression
With no FILE, or when FILE is -, read standard input.
Report bugs to <bug-gzip@gnu.org>.
展開後のGzipディレクトリサイズ: 2,398KB
Bash
ダウンロードしたxxx.tar.gzファイルを/usr/lpp/util/Bash/に転送して解凍。
で、このディレクトリのbinをPATHに追加
$ gunzip bash-4.3_b018.170518.tar.gz
$ tar -xvf bash-4.3_b018.170518.tar
$ export PATH=$PATH:/usr/lpp/util/Bash/bin
展開後のBashディレクトリサイズ:8,281KB (うちtarファイルが4MBくらい)
Perl
ダウンロードしたxxx.tar.gzファイルを/usr/lpp/util/Perl/に転送して解凍。
で、このディレクトリのbinをPATHに追加
$ gzip -d perl-5.24.0_b007.180202.tar.gz
$ tar -C /usr/lpp/util/Perl -xovf perl-5.24.0_b007.180202.tar
展開後のPerlディレクトリサイズ:248,177KB (うちtarファイルが120MBくらい)
$ chmod -R 755 /usr/lpp/util/Perl/bin/*
$ find /usr/lpp/util/Perl/lib -type f -exec chmod 644 {} \;
$ find /usr/lpp/util/Perl/lib -type f -name '*.so' -exec chmod 755 {} \;
$ cd /usr/lpp/util/Perl/bin
$ ./change_pwd_perl.sh
環境変数設定
### for Perl
export _CEE_RUNOPTS='FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'
export _TAG_REDIR_ERR='TXT'
export _TAG_REDIR_IN='TXT'
export _TAG_REDIR_OUT='TXT'
export PATH=$PATH:/usr/lpp/util/Perl/bin
export MANPATH=$MANPATH:/usr/lpp/util/Perl/share/man
export PERL5LIB=$PERL5LIB:/usr/lpp/util/Perl/lib/perl5
export LIBPATH=$LIBPATH:/usr/lpp/util/Perl/lib/perl5/5.24.0/os390/CORE
Python
ダウンロードしたxxx.tar.gzファイルを/usr/lpp/util/Python/に転送して解凍。
で、このディレクトリのbinをPATHに追加
(一応installファイルの手順に倣ってみた)
$ cd /usr/lpp/util/Python
$ gzip -d -c python-2017-04-12-py27.tar.gz | tar xoUXf -
$ cd python-2017-04-12-py27
$ mv * ..
$ cd ..
$ rmdir python-2017-04-12-py27
展開後のPythonディレクトリサイズ:2,932,636KB (うちtar.gzファイルが480MBくらい)
なんと!ほとんどコイツで食いつぶされた。
$ rm python-2017-04-12-py27.tar.gz
$ export PKGS_BASE=`pwd`/pkgs
$ export BASH_PREFIX=/usr/lpp/util/Bash
$ export PERL_PREFIX=/usr/lpp/util/Perl
$ export _BPXK_AUTOCVT=ALL
$ python27/bin/install_all_packages
最終的なPtyhonディレクトリのサイズ: 2,508,833KB
参考: Pythonインストールについて
https://forum.rocketsoftware.com/t/python-installation-on-z-os-filesystem/577
環境変数設定
### for Python
export _BPXK_AUTOCVT=ALL
INSTALL=/usr/lpp/util/Python
export PYTHON_ENV=python27 # pr python36 or both, to match your desired environment
export PYTHON_HOME=/usr/lpp/util/Python/$PYTHON_ENV
export PATH=$PYTHON_HOME/bin:$PATH
export LIBPATH=$PYTHON_HOME/lib:$LIBPATH
export FFI_LIB=$PYTHON_HOME/lib/ffi
# export TERMINFO=$PYTHON_HOME/share/terminfo
export PKG_CONFIG_PATH=$PYTHON_HOME/lib/pkgconfig:$PYTHON_HOME/share/pkgconfig
export CURL_CA_BUNDLE=$PYTHON_HOME/etc/ssl/cacert.pem
これでPythonコマンド実行できた。
$ python -V
Python 2.7.13
※TERMINFO環境変数を有効化すると、teratermが文字化けしておかしなことになったのでコメントアウト。
Make
ダウンロードしたxxx.tar.gzファイルを/usr/lpp/util/Make/に転送して解凍。
で、このディレクトリのbinをPATHに追加
$ gunzip make-4.1_b0002.160426.tar.gz
$ tar -xvf make-4.1_b0002.160426.tar
$ export PATH=$PATH:/usr/lpp/util/Make/bin
展開後のMakeディレクトリサイズ:3,145KB (うちtarファイルが1.5MBくらい)
Node.js
やっとNode.js。
以下からTrialをダウンロード。
https://developer.ibm.com/node/sdk/ztp/#downloads-ztp
※正式な製品版の場合はSMP/Eでのインストールとなります。
ダウンロードしたファイル: ibm-6.17.0.0-trial-node-v6.17.0-os390-s390x.pax.Z (約200MB)
ダウンロードしたファイルを/usr/lpp/util/Nodejs/に転送して解凍。
$ pax -rf ibm-6.17.0.0-trial-node-v6.17.0-os390-s390x.pax.Z -x pax
展開後のNodejsディレクトリサイズ:645,172KB (うちpax.Zファイルが200MBくらい)
$ rm ibm-6.17.0.0-trial-node-v6.17.0-os390-s390x.pax.Z
$ cd node-v6.17.0-os390-s390x
$ export COMPILER_INSTALL_HLQ=ZOWE01.CPP
$ ./unpack.pl
...
(中略)
<INFO> running : /Z23A/usr/lpp/util/Nodejs/node-v6.17.0-os390-s390x/bin/njsc++ ._temp.hello.cpp -o hello -qphaseid && /Z23A/usr/lpp/util/Nodejs/node-v6.17.0-os390-s390x/bin/run ./hello && rm -f ._temp.hello.cpp hello!
CNJ0000(I) Product(5655-SDK) Phase(CNJEOPTP) Level(D170803.N106)
CNJ0000(I) Product(5655-SDK) Phase(CNJDRVR ) Level(D170803.N106)
CNJ0000(I) Product(5655-SDK) Phase(CNJECL ) Level(D170803.N106)
===-------------------------------------------------------------------------===
Front-end time report
===-------------------------------------------------------------------------===
Total Execution Time: 23.0638 seconds (24.8405 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
17.2979 (100.0%) 5.7660 (100.0%) 23.0638 (100.0%) 24.8405 (100.0%) Front-end timer
17.2979 (100.0%) 5.7660 (100.0%) 23.0638 (100.0%) 24.8405 (100.0%) Total
CNJ0000(I) Product(5655-SDK) Phase(CNJETBY ) Level(D170803.N106)
CNJ0000(I) Product(5655-SDK) Phase(CNJECWI ) Level(D170803.N106)
W-TRANS - Phase Ends; CPU sec=0.37
OPTIMIZ - Phase Ends; CPU sec=0.06
REGALLO - Phase Ends; CPU sec=0.03
AS - Phase Ends; CPU sec=0.05
Hello C++ World!
<INFO> installation complete!
unpack.plというperlのスクリプトで、以下のデータセットが意図しないVOLに作られてしまった。
Command - Enter "/" to select action Message Volume
-------------------------------------------------------------------------------
ZOWE01 *ALIAS
ZOWE01.CPP.ZOSV221.D170810.BINDER.LOAD A3SYS1
ZOWE01.CPP.ZOSV221.D170810.SCNJCMP A3SYS1
ZOWE01.SETUP.JCLLIB ZOWE01
ZOWE01.ZFS *VSAM*
ZOWE01.ZFS.DATA ZOWE01
Perlのスクリプトざっとみると、COMPILER_INSTALL_VOLSER環境変数でVOL指定もできそうだった...。うーんしまった。面倒なのでそのまま。
この時点でサイズはこんくらい。
Command - Enter "/" to select action Tracks %Used XT
------------------------------------------------------------------------------
ZOWE01
ZOWE01.CPP.ZOSV221.D170810.BINDER.LOAD 78 99 1
ZOWE01.CPP.ZOSV221.D170810.SCNJCMP 3499 99 1
ZOWE01.SETUP.JCLLIB 150 2 1
ZOWE01.ZFS
ZOWE01.ZFS.DATA 74400 ? 9
最終的なNodejsディレクトリサイズ:736,277KB
コマンド実行確認。
$ export PATH=$PATH:/usr/lpp/util/Nodejs/node-v6.17.0-os390-s390x/bin
$ node --version
v6.17.0
$ npm --version
3.10.10
z/OSMFのセットアップ
上がっていなければ起動!
S IZUANG1
IRR812I PROFILE IZUANG1.* (G) IN THE STARTED CLASS WAS USED 174
TO START IZUANG1 WITH JOBNAME IZUANG1.
$HASP100 IZUANG1 ON STCINRDR
IEF695I START IZUANG1 WITH JOBNAME IZUANG1 IS ASSIGNED TO USER IZUSVR
, GROUP IZUADMIN
$HASP373 IZUANG1 STARTED
IEF403I IZUANG1 - STARTED - TIME=19.01.27
CWWKB0069I INITIALIZATION IS COMPLETE FOR THE IZUANG1 ANGEL PROCESS.
S IZUSVR1
IRR812I PROFILE IZUSVR1.* (G) IN THE STARTED CLASS WAS USED 183
TO START IZUSVR1 WITH JOBNAME IZUSVR1.
$HASP100 IZUSVR1 ON STCINRDR
IEF695I START IZUSVR1 WITH JOBNAME IZUSVR1 IS ASSIGNED TO USER IZUSVR
, GROUP IZUADMIN
$HASP373 IZUSVR1 STARTED
IEF403I IZUSVR1 - STARTED - TIME=19.03.09
+IEE252I MEMBER IZUPRM00 FOUND IN ADCD.Z23A.PARMLIB
STDOUT確認
...
IZUG056I: The file /var/zosmf/configuration/active_configuration.cfg
: was saved to a backup file
: /var/zosmf/configuration/backup_configuration.04.26.19.01.03.41.
IZUG210I: The z/OSMF Configuration Utility has completed successfully at Fri Apr 26 01:03:42 UTC 2019.
IZUG349I: The z/OSMF STANDALONE Server home page can be accessed at
: https://ZDTPE01.MK.ISE.COM:10443/zosmf
: after the z/OSMF server is started on your system.
起動したら上のメッセージにあるアドレスにブラウザからアクセスしてみる。
デフォルトだと各ユーザーはz/OSMF経由でアクセスする権限が無いので、RACFで適切な権限設定をする必要があります。
参考: z/OSMF のセキュリティー構成要件
こあたりを参考に、とりあえず"USER01"に管理者用のグループ"IZUADMIN"を割当ててみます。
TSOコマンド: CONNECT USER01 GROUP(IZUADMIN)
これでz/OSMFにログインできました!
※余談
貧弱なPC(ThinkPad X230)で、VMWare Hypervisorで仮想化してLinux(RHEL)立てて、その上にzD&Tを起動するという構成になっているせいもあると思いますが、z/OSMFがむちゃくちゃ重い。この何重にも仮想化されている環境だとそもそもz/OSMF(実体はLiberty)が起動する際もCPUがブン回ってなかなか起動しない。普通にTN3270経由でPCOM使ったりCICS上げたりというのはそこまでストレス無く使えているんですが。Javaが厳しいのかしら。実環境だとziipにオフロードできるはずなのでそこまで問題にはならないんでしょうけど。実際、素のz/OS環境だとz/OSMFは割りとさくさく動いています。逆に言えばTN3270+PCOMはやっぱりパフォーマンスとしてはかなり優秀ですね。
z/OSMF起動時のログみてると、アプリの起動にやたらと時間がかかってる...
Launching zosmfServer (WebSphere Application Server 17.0.0.1, Liberty Dev Use 17.0.0.1, z/OSMF 2.3.0/wlp-1.0.16.cl170120170531-1330) on IBM J9 VM, version 8.0.5.0 - pmz6480sr5-20170905_01(SR5) (en_US)
[AUDIT ] CWWKE0001I: The server zosmfServer has been launched.
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izucagui.xml
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izucp.xml
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izudDm.xml
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izuIncidentLog.
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izuis.xml
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izurm.xml
[AUDIT ] CWWKG0028A: Processing included configuration resource: /var/zosmf/configuration/servers/zosmfServer/apps/izuwlm.xml
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilitySoftwareDeployment has not started in 30.129 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityHelpApp has not started in 30.333 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityImportUtility has not started in 30.369 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityResourceMonitoring has not started in 30.339 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityWorkflow has not started in 30.422 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityTsoServices has not started in 30.371 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityProvisioning has not started in 30.486 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityWorkloadManagement has not started in 30.373 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityCapacityProvisioning has not started in 30.372 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityVariables has not started in 30.576 seconds.
[AUDIT ] CWWKZ0022W: Application IzuConfigurationAssistant has not started in 30.385 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacility has not started in 30.070 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityIncidentLog has not started in 30.398 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityRestFiles has not started in 30.058 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityRestConsoles has not started in 30.178 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityRestJobs has not started in 30.047 seconds.
[AUDIT ] CWWKZ0022W: Application IzuManagementFacilityISPF has not started in 30.044 seconds.
[AUDIT ] CWWKF0015I: The server has the following interim fixes active in the runtime: PI81714,PI81297. For a full listing of ins
[AUDIT ] CWWKF0012I: The server installed the following features: [jsp-2.2, servlet-3.0, ssl-1.0, jndi-1.0, jdbc-4.0, appSecurity
[AUDIT ] CWWKF0011I: The server zosmfServer is ready to run a smarter planet.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/restjobs/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/IzuImportUtility/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/izur/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/webispf/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/tsoApp/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/restfiles/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/restconsoles/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/pdw/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/zwlm/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/variables/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/izucp/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/dm/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/provisioning/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/workflow/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/ca/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityRestJobs started in 505.946 seconds.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/rest/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityImportUtility started in 554.844 seconds.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/helps/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityTsoServices started in 577.276 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityVariables started in 609.317 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityRestConsoles started in 611.354 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityISPF started in 628.453 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityResourceMonitoring started in 653.488 seconds.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/resource-mgmt/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityRestFiles started in 680.577 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityIncidentLog started in 730.876 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityCapacityProvisioning started in 755.102 seconds.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/IzuUICommon/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/swmgmt/
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/zosmf/swmgmt/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityProvisioning started in 838.819 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityWorkloadManagement started in 848.135 seconds.
[AUDIT ] CWWKT0016I: Web application available (default_host): https://xxxxx:10443/IzuDojo/
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilitySoftwareDeployment started in 874.546 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacility started in 895.880 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityWorkflow started in 898.926 seconds.
[AUDIT ] CWWKZ0001I: Application IzuManagementFacilityHelpApp started in 1017.186 seconds.
[AUDIT ] CWWKZ0001I: Application IzuConfigurationAssistant started in 1160.608 seconds.
このzD&T環境だと無理があるかもしれないが...
とりあえずz/OSMF周りは必要に応じてカスタマイズするとして次に進もう。
ZOWEのセットアップ
ようやくここからZOWE本体のセットアップにとりかかります。
以下の手順を参考に。
参考: Installing Zowe on z/OS
インストーラーの入手
以下のサイトからダウンロード
Zowe - download
zowe-1.2.0.pax / 約395MB
zowe-cli-package-1.2.0.zip / 約11MB
zowe-1.2.0.paxを、USS上の/usr/lpp/util/Zowe/以下にアップします。
paxファイル展開
/usr/lpp/util/Zowe/に移動して以下のコマンド実行。
$ pax -ppx -rf zowe-1.2.0.pax
zowe-1.2.0以下にインストーラーが展開される。
展開後のZoweディレクトリサイズ:792,016KB (うちpax.Zファイルが395MBくらい)
$ cd /usr/lpp/util/Zowe/zowe-1.2.0
$ ls -la
total 112
drwxr-xr-x 6 OMVSKERN SYS1 8192 May 1 13:35 .
drwxr-xr-x 3 OMVSKERN SYS1 8192 May 13 12:38 ..
drwxr-xr-x 6 OMVSKERN SYS1 8192 May 1 13:35 files
drwxr-xr-x 2 OMVSKERN SYS1 8192 May 1 13:35 install
drwxr-xr-x 2 OMVSKERN SYS1 8192 May 1 13:07 licenses
-rw-r--r-- 1 OMVSKERN SYS1 910 May 1 13:35 manifest.json
drwxr-xr-x 3 OMVSKERN SYS1 8192 May 1 13:35 scripts
ここから、Zoweランタイム、Zowe Cross Memory Sreverという2つのコンポーネントをインストールする必要があるようです。それぞれインストールしていきます。
Zoweランタイム
zowe-install.ymlファイル編集
# =================================================================
# zowe install configuration
# =================================================================
# zowe-install: The directory that zowe will be installed into
install:
rootDir=/usr/lpp/util/Zowe/1.2.0
api-mediation:
catalogPort=7552
discoveryPort=7553
gatewayPort=7554
externalCertificate=
externalCertificateAlias=
externalCertificateAuthorities=
verifyCertificatesOfServices=true
enableSso=false
zosmfKeyring=IZUKeyring.IZUDFLT
zosmfUser=IZUSVR
zos-services:
jobsAPIPort=8545
mvsAPIPort=8547
zowe-desktop-apps:
jobsExplorerPort=8546
mvsExplorerPort=8548
ussExplorerPort=8550
zlux-server:
httpsPort=8544
zssPort=8542
terminals:
sshPort=22
telnetPort=23
# security=tls
# started task JCL member for Zowe job - these entries are not case-sensitive
zowe-server-proclib:
# dsName=SYS1.PROCLIB # Example of required dataset name. Do not enclose it in quotes.
# If you omit the 'dsName' tag or specify 'dsName=auto',
# the install script scans the datasets in the PROCLIB concatenation
# and places the JCL member in the first dataset where the installing
# user has write access.
#dsName=auto
dsName=USER.Z23A.PROCLIB.T1
memberName=ZOWESVR
# Do not delete this last line
rootDir(zoweインストール先ディレクトリ)と、dsNameだけ環境に合わせて変更し、その他はデフォルト設定とします。
インストール先は、/usr/lpp/util/Zowe/1.2.0としたので、このディレクトリだけ作っておきます。
事前チェック
$ cd /usr/lpp/util/Zowe/zowe-1.2.0/install
$ ./zowe-check-prereqs.sh
Script zowe-check-prereqs.sh started
Info: INSTALL_DIR environment variable is empty
Info: INSTALL_DIR environment variable is now set to /Z23A/usr/lpp/util/Zowe/zowe-1.2.0/install
Check entries in the install directory
OK
Check user has the basic auth to list the resources
Check RACF or other SAF security settings are correct
Check IZUGUEST
Error: user IZUGUEST is not in group IZUUNGRP
Is opercmd available?
OK: opercmd is available
Check z/OS RELEASE
release of z/OS is RELEASE z/OS 02.03.00 LICENSE = z/OS
OK: version 02.03.00 is supported
Check install user is a member of the IZUADMIN group
Installer's TSO userid:
IBMUSER
installer's group(s):
IZUADMIN
OK
Check user can issue START/STOP commands
OK
Check user can issue SDSF commands
OK
Check the ports in the yaml file are not already in use
OK
Check z/OSMF servers are up
Error: Job IZUANG1 is not executing
Check enough free space is available in target z/OS USS HFS install folder
Info: Existing directory to be checked is /usr/lpp/util/Zowe/1.2.0
Error: NO adequate-sized area(s) found
size of largest free area in /usr/lpp/util/Zowe/1.2.0 is 440289 KB
minimum required is 450 MB
Check Node version
OK
Check Java version
OK
Check CEE_RUNOPTS
_CEE_RUNOPTS="FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)"
Check USS AUTOCVT
OK: OMVS AUTOCVT is set to OFF
Warning: _BPXK_AUTOCVT is set to ALL
OK: _BPXK_CCSIDS is not set
Script zowe-check-prereqs.sh ended
エラーになっているものをそれぞれ対応する。
Check IZUGUEST
Error: user IZUGUEST is not in group IZUUNGRP
以下のコマンド実行
TSOコマンド: ```CONNECT IZUGUEST GROUP(IZUUNGRP)````
Check z/OSMF servers are up
Error: Job IZUANG1 is not executing
ANGELプロセス挙げ忘れてたので、以下のコマンドで起動します。
S IZUANG1
Check enough free space is available in target z/OS USS HFS install folder
Info: Existing directory to be checked is /usr/lpp/util/Zowe/1.2.0
Error: NO adequate-sized area(s) found
size of largest free area in /usr/lpp/util/Zowe/1.2.0 is 440289 KB
minimum required is 450 MB
これは勝手にExtentされるはずなので放置します。
再度チェック!
$ cd /usr/lpp/util/Zowe/zowe-1.2.0/install
$ ./zowe-check-prereqs.sh
Script zowe-check-prereqs.sh started
Info: INSTALL_DIR environment variable is empty
Info: INSTALL_DIR environment variable is now set to /Z23A/usr/lpp/util/Zowe/zowe-1.2.0/install
Check entries in the install directory
OK
Check user has the basic auth to list the resources
Check RACF or other SAF security settings are correct
Check IZUGUEST
OK
Is opercmd available?
OK: opercmd is available
Check z/OS RELEASE
release of z/OS is RELEASE z/OS 02.03.00 LICENSE = z/OS
OK: version 02.03.00 is supported
Check install user is a member of the IZUADMIN group
Installer's TSO userid:
IBMUSER
installer's group(s):
IZUADMIN
OK
Check user can issue START/STOP commands
OK
Check user can issue SDSF commands
OK
Check the ports in the yaml file are not already in use
OK
Check z/OSMF servers are up
OK
Check enough free space is available in target z/OS USS HFS install folder
Info: Existing directory to be checked is /usr/lpp/util/Zowe/1.2.0
Error: NO adequate-sized area(s) found
size of largest free area in /usr/lpp/util/Zowe/1.2.0 is 430921 KB
minimum required is 450 MB
Check job ICSF or CSF
OK
Check Node version
OK
Check Java version
OK
Check CEE_RUNOPTS
_CEE_RUNOPTS="FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)"
Check USS AUTOCVT
OK: OMVS AUTOCVT is set to OFF
Warning: _BPXK_AUTOCVT is set to ALL
OK: _BPXK_CCSIDS is not set
Script zowe-check-prereqs.sh ended
Zoweランタイムのインストール
インストール用シェルスクリプト実行
$ cd /usr/lpp/util/Zowe/zowe-1.2.0/install
$ ./zowe-install.sh
---------------------------------------------------------------------
Locating Environment Variables...
Liberty bootstrap.properties found at /var/zosmf/configuration/servers/zosmfServer/
** Adding line: export ZOWE_ZOSMF_PATH=/var/zosmf/configuration/servers/zosmfServer/ to ~/.zowe_profile **
** Adding line: export ZOWE_ZOSMF_PORT=10443 to ~/.zowe_profile **
java version 18 found at /usr/lpp/java/J8.0_64
** Adding line: export ZOWE_JAVA_HOME=/usr/lpp/java/J8.0_64 to ~/.zowe_profile **
NODE_HOME value of /usr/lpp/util/Nodejs/node-v6.17.0-os390-s390x will be validated
** Adding line: export ZOWE_EXPLORER_HOST=ZDTPE01.MK.ISE.COM to ~/.zowe_profile **
error : dig could not find IP of hostname ZDTPE01.MK.ISE.COM
Please enter the ZOWE_IPADDRESS of this system
xx.xx.xx.xx
warning : ping ZDTPE01.MK.ISE.COM did not match stated IP address xx.xx.xx.xx
** Adding line: export ZOWE_IPADDRESS=xx.xx.xx.xx to ~/.zowe_profile **
Reading install variables from zowe-install.sh
ZOWE_ZOSMF_USERID not specified: Defaulting to IZUSVR
Beginning install of Zowe 1.2.0 into directory /usr/lpp/util/Zowe/1.2.0
-----
Zowe 1.2.0 runtime install completed into directory /usr/lpp/util/Zowe/1.2.0
The install script zowe-install.sh does not need to be re-run as it completed successfully
---------------------------------------------------------------------
Attempting to setup Zowe API Mediation Layer certificates ...
Setting up Zowe API Mediation Layer certificates...
JIT: env var TR_Options is set to noResumableTrapHandler
JIT: env var TR_Options is set to noResumableTrapHandler
apiml_cm.sh --action trust-zosmf has failed. See /Z23A/usr/lpp/util/Zowe/zowe-1.2.0/install/..//log/2019-05-13-13-36-22.log for more details
WARNING: z/OSMF is not trusted by the API Mediation Layer. Follow instructions in Zowe documentation about manual steps to trust z/OSMF
Issue following commands as a user that has permissions to export public certificates from z/OSMF keyring:
cd /usr/lpp/util/Zowe/1.2.0/api-mediation
scripts/apiml_cm.sh --action trust-zosmf --zosmf-keyring IZUKeyring.IZUDFLT --zosmf-userid IZUSVR
Certificate setup done.
Attempting to setup Zowe Explorer API certificates ...
---------------------------------------------------------------------
Attempting to set Unix file permissions ...
The permissions were successfully changed
---------------------------------------------------------------------
Attempting to create ZOWESVR PROCLIB member ...
Unable to create the PROCLIB member
Failed to put ZOWESVR.JCL in a PROCLIB dataset.
Please add it manually from /usr/lpp/util/Zowe/1.2.0/ZOWESVR.JCL to your PROCLIB
To find PROCLIB datasets, issue /$D PROCLIB in SDSF
---------------------------------------------------------------------
To start Zowe run the script /usr/lpp/util/Zowe/1.2.0/scripts/zowe-start.sh
(or in SDSF directly issue the command /S ZOWESVR)
To stop Zowe run the script /usr/lpp/util/Zowe/1.2.0/scripts/zowe-stop.sh
(or in SDSF directly the command /C ZOWESVR)
logにこんな感じのエラーが出てた。
keytool error (likely untranslated): java.io.IOException: The private key of DefaultzOSMFCert.IZUDFLT is not available or no authority to access th
e private key
It is not possible to read z/OSMF keyring IZUSVR/IZUKeyring.IZUDFLT. The effective user ID was: OMVSKERN. You need to run this command as user that
has access to the z/OSMF keyring:
cd /Z23A/usr/lpp/util/Zowe/1.2.0/api-mediation
scripts/apiml_cm.sh --action trust-zosmf --zosmf-keyring IZUKeyring.IZUDFLT --zosmf-userid IZUSVR
apiml_cm.sh --action trust-zosmf returned: 1
IBMUSERでやってんだけどな...。
とりあえず、IZUSVRユーザーにパスワード設定して、無理やりsu IZUSVR
でスイッチして上のスクリプト動かす。
$ cd /usr/lpp/util/Zowe/1.2.0/api-mediation
$ ./scripts/apiml_cm.sh --action trust-zosmf --zosmf-keyring IZUKeyring.IZUDFLT --zosmf-userid IZUSVR
Listing entries in the z/OSMF keyring (IZUKeyring.IZUDFLT):
JIT: env var TR_Options is set to noResumableTrapHandler
Keystore type: JCERACFKS
Keystore provider: IBMJCE
Your keystore contains 2 entries
zOSMFCA, May 9, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): E4:92:C8:8B:0D:D7:2D:D5:32:8A:4C:21:A3:97:56:72:C4:C2:AF:10
DefaultzOSMFCert.IZUDFLT, May 9, 2019, keyEntry,
Certificate fingerprint (SHA1): 82:B6:65:27:1B:B0:AB:23:4A:48:C2:0A:FD:FB:51:21:4F:BC:D5:C6
JIT: env var TR_Options is set to noResumableTrapHandler
Exporting certificate 'zOSMFCA' from z/OSMF:
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate stored in file </tmp/zosmf_cert_1.cer>
Import a certificate to the truststore:
Calling keytool -importcert -trustcacerts -noprompt -file /tmp/zosmf_cert_1.cer -alias zOSMFCA -keystore keystore/localhost/localhost.truststore.p12 -storepass password -storetype PKCS12
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate was added to keystore
keytool error (likely untranslated): java.io.FileNotFoundException: keystore/localhost/localhost.truststore.p12 (EDC5111I Permission denied.)
keytool returned: 1
おしい。権限の問題っぽいのでCONNECT IZUSVR GROUP(SYS1)
でIZUSVRユーザーにSYS1グループをくっつけてリトライ。
$ cd /usr/lpp/util/Zowe/1.2.0/api-mediation
$ ./scripts/apiml_cm.sh --action trust-zosmf --zosmf-keyring
Listing entries in the z/OSMF keyring (IZUKeyring.IZUDFLT):
JIT: env var TR_Options is set to noResumableTrapHandler
Keystore type: JCERACFKS
Keystore provider: IBMJCE
Your keystore contains 2 entries
zOSMFCA, May 13, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): E4:92:C8:8B:0D:D7:2D:D5:32:8A:4C:21:A3:97:56:72:C4:C2:AF:10
DefaultzOSMFCert.IZUDFLT, May 13, 2019, keyEntry,
Certificate fingerprint (SHA1): 82:B6:65:27:1B:B0:AB:23:4A:48:C2:0A:FD:FB:51:21:4F:BC:D5:C6
JIT: env var TR_Options is set to noResumableTrapHandler
Exporting certificate 'zOSMFCA' from z/OSMF:
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate stored in file </tmp/zosmf_cert_1.cer>
Import a certificate to the truststore:
Calling keytool -importcert -trustcacerts -noprompt -file /tmp/zosmf_cert_1.cer -alias zOSMFCA -keystore keystore/localhost/localhost.truststore.p12 -storepass password -storetype PKCS12
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate was added to keystore
keytool returned: 0
Exporting certificate 'DefaultzOSMFCert.IZUDFLT' from z/OSMF:
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate stored in file </tmp/zosmf_cert_2.cer>
Import a certificate to the truststore:
Calling keytool -importcert -trustcacerts -noprompt -file /tmp/zosmf_cert_2.cer -alias DefaultzOSMFCert.IZUDFLT -keystore keystore/localhost/localhost.truststore.p12 -storepass password -storetype PKCS12
JIT: env var TR_Options is set to noResumableTrapHandler
Certificate was added to keystore
keytool returned: 0
ようやくOK。
IBMUSERのhome(/u/ibmuser/)に.zowe_profileというのが出来ていて環境変数の設定があったので、.profileに組込んでみました。(IPADDRESSだけ変更)
export NODE_HOME=/usr/lpp/util/Nodejs/node-v6.17.0-os390-s390x
export ZOWE_ZOSMF_PATH=/var/zosmf/configuration/servers/zosmfServer/
export ZOWE_ZOSMF_PORT=10443
export ZOWE_JAVA_HOME=/usr/lpp/java/J8.0_64
export ZOWE_EXPLORER_HOST=ZDTPE01.MK.ISE.COM
export ZOWE_IPADDRESS=xxxxx
### for Zowe
export ZOWE_ROOT_DIR=/usr/lpp/util/Zowe/1.2.0
. /u/ibmuser/.zowe_profile
起動プロシージャーの作成もなぜか失敗しているようなので、/usr/lpp/util/Zowe/1.2.0/ZOWESVR.JCLに作成されているプロシージャーを手動でUSER.Z23A.PROCLIB.T1(ZOWESVR)にコピーします。
※次のZOWEランタイム起動で、シェルスクリプト実行時におかしなSyntax Errorが出てしまいました。_BPXK_AUTOCVT環境変数の指定が効いていないようで、コード変換がうまくされていない様子。/etc/profileに指定してもNGだったので、プロシージャーで明示的に_BPXK_AUTOCVT=ALLを指定することにしました。
//ZOWESVR PROC SRVRPATH='/usr/lpp/util/Zowe/1.2.0'
//*-------------------------------------------------------------------
//* SRVRPATH - The path to the HFS directory where the
//* server was installed.
//*-------------------------------------------------------------------
//EXPORT EXPORT SYMLIST=*
//*---------------------------------------------------------
//* Start the node server
//*---------------------------------------------------------
//ZOWESTEP EXEC PGM=BPXBATSL,REGION=0M,TIME=NOLIMIT,
// PARM='PGM /bin/sh &SRVRPATH/scripts/internal/run-zowe.sh'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
//STDENV DD *
_BPXK_AUTOCVT=ALL
Started task
以下のTSOコマンド実行
RDEFINE STARTED ZOWESVR.* UACC(NONE) STDATA(USER(IZUSVR) GROUP(IZUADMIN) PRIVILEGED(NO) TRUSTED(NO) TRACE(YES))
SETROPTS REFRESH RACLIST(STARTED)
ユーザー権限
ユーザー"USER01"を管理者としてIZUADMINグループに登録
CONNECT (USER01) GROUP(IZUADMIN)
ZOWEランタイム起動
ZOWEランタイムを起動してみます。
$ cd /usr/lpp/util/Zowe/1.2.0/scripts
$ ./zowe-start.sh
S0W1 2019133 13:58:34.35 ISF031I CONSOLE MYCONS ACTIVATED
S0W1 2019133 13:58:34.35 -S ZOWESVR,SRVRPATH='/Z23A/usr/lpp/util/Zowe/1.2.0'
ISF754I Command 'SET CONSOLE MYCONS' generated from associated variable ISFCONS.
ISF776I Processing started for action 1 of 1.
ISF769I System command issued, command text: S ZOWESVR,SRVRPATH='/Z23A/usr/lpp/util/Zowe/1.2.0'.
ISF766I Request completed, status: NO RESPONSE RECEIVED.
Start command issued, check SDSF job log ...
これを実行すると、裏では色んなサービスがJava、もしくはNode.jsのアプリとしてポコポコ起動してくるようで、貧弱なZD&T環境だと重たい...。CPUが100%張り付きっぱなしになって画面のレスポンスが返らなくなる。
1時間後くらいにようやく落ち着いてきたのでZOWE*がListenしているポートをNETSTATで見てみると...
ZOWESVR3 00056845 0.0.0.0..7554 0.0.0.0..0 LISTEN
ZOWESVR3 000567B0 0.0.0.0..8546 0.0.0.0..0 LISTEN
ZOWESVR5 000567BD 0.0.0.0..8548 0.0.0.0..0 LISTEN
ZOWESVR5 000567BE 127.0.0.1..8542 0.0.0.0..0 LISTEN
ZOWESVR6 000567FC 0.0.0.0..8545 0.0.0.0..0 LISTEN
ZOWESVR6 00056827 0.0.0.0..7553 0.0.0.0..0 LISTEN
ZOWESVR7 000567C5 0.0.0.0..8550 0.0.0.0..0 LISTEN
ZOWESVR7 000567C4 0.0.0.0..8544 0.0.0.0..0 LISTEN
ZOWESVR9 00056D11 0.0.0.0..7552 0.0.0.0..0 LISTEN
ZOWESVR9 00056803 0.0.0.0..8547 0.0.0.0..0 LISTEN
それっぽいポートがListenされてました。
Zowe Cross Memory Server
参考: Manually installing the Zowe Cross Memory Server
paxファイル展開
$ cd /usr/lpp/util/Zowe/zowe-1.2.0/files
$ mkdir zss
$ cd zss
$ pax -ppx -rf ../zss.pax
$ ls
LOADLIB SAMPLIB zssServer
ZWESIS01 load module and proclib
PDS 'ZOWE01.SISLOAD'を作成し、ライブラリーをコピー
$ cd LOADLIB
$ cp ZWESIS01 "//'ZOWE01.SISLOAD(ZWESIS01)'"
files/zss/SAMPLIB/ZWESIS01をPROCLIBにコピーしてDSNを環境に合わせて編集。
//ZWESIS01 PROC NAME='ZWESIS_STD',MEM=00,RGN=0M
//********************************************************************/
//ZWESIS01 EXEC PGM=ZWESIS01,REGION=&RGN,
// PARM='NAME=&NAME,MEM=&MEM'
//STEPLIB DD DSNAME=ZOWE01.SISLOAD,DISP=SHR
//PARMLIB DD DSNAME=ZOWE01.SISSAMP,DISP=SHR
//SYSPRINT DD SYSOUT=*
PPT Entry
ADCD.Z23A.PARMLIB(SCHED00)に以下を追加
PPT PGMNAME(ZWESIS01) KEY(4) NOSWAP
反映
SET SCH=00
IEE252I MEMBER SCHED00 FOUND IN ADCD.Z23A.PARMLIB
IEF729I MT STATEMENT IGNORED, NOT SUPPORTED FOR DYNAMIC UPDATE.
IEE536I SCH VALUE 00 NOW IN EFFECT
APF-authorization
とりあえず動的変更。
SETPROG APF,ADD,DSNAME=ZOWE01.SISLOAD,VOLUME=ZOWE01
CSV410I DATA SET ZOWE01.SISLOAD ON VOLUME ZOWE01 ADDED TO APF LIST
D PROG,APF,DSNAME=ZOWE01.SISLOAD
CSV450I 17.30.02 PROG,APF DISPLAY 828
FORMAT=DYNAMIC
ENTRY VOLUME DSNAME
1 ZOWE01 ZOWE01.SISLOAD
IPL後も有効化するため、PROGxxに以下を追加しておく。
APF ADD
DSNAME(ZOWE01.SISLOAD) VOLUME(ZOWE01)
PARMLIB member
PDS 'ZOWE01.SISSAMP'を作成し、files/zss/SAMPLIB/ZWESIP00をコピー
$ cd SAMPLIB
$ cp ZWESIP00 "//'ZOWE01.SISSAMP(ZWESIP00)'"
Security requirements for the cross memory server
FACILITYクラスはActiveになってるので、以下のTSOコマンドを実行
RDEFINE FACILITY ZWES.IS UACC(NONE)
PERMIT ZWES.IS CLASS(FACILITY) ID(IZUSVR) ACCESS(READ)
SETROPTS RACLIST(FACILITY) REFRESH
ICSF cryptographic services
保留
Security environment switching
FACILITYクラスにBPX.SERVER, BPX.DAEMONは定義されてるので、以下のTSOコマンドを実行
PERMIT BPX.SERVER CLASS(FACILITY) ID(IZUSVR) ACCESS(UPDATE)
PERMIT BPX.DAEMON CLASS(FACILITY) ID(IZUSVR) ACCESS(UPDATE)
SETROPTS RACLIST(FACILITY) REFRESH
Zowe Cross Memory Serverの起動
SDSFから起動!
S ZWESIS01
S ZWESIS01
IRR812I PROFILE * (G) IN THE STARTED CLASS WAS USED 307
TO START ZWESIS01 WITH JOBNAME ZWESIS01.
$HASP100 ZWESIS01 ON STCINRDR
IEF695I START ZWESIS01 WITH JOBNAME ZWESIS01 IS ASSIGNED TO USER START1
, GROUP SYS1
$HASP373 ZWESIS01 STARTED
ZWES0001I ZSS Cross-Memory Server starting, version is 1.0.5
IEF761I ZWESIS01 ZWESIS01 PARMLIB ZWESIS DD IS ALREADY ALLOCATED AND
WILL BE USED BY THIS TASK.
IEE252I MEMBER ZWESIP00 FOUND IN ZOWE01.SISSAMP
ZWES0105I Core server initialization started 314
ZWES0240W Discarding outdated LPA module at 1D4F7000 (2019-03-29
18:19:46.526373 - 2019-04-30 14:53:47.809793)
ZWES0109I Core server ready 316
ZWES0200I Modify commands: 317
DISPLAY OPTION_NAME - Print service information
OPTION_NAME:
CONFIG - Print server configuration information (defau
FLUSH - Print all pending log messages
LOG <COMP_ID> <LOG_LEVEL> - Set log level
COMP_ID:
CMS - Cross memory server
CMSPC - PC routines
STC - STC base
LOG_LEVEL:
SEVERE
WARNING
INFO
DEBUG
DEBUG2
DEBUG3
ModifyでDISPLAYコマンド打ってみる。
F ZWESIS01,DISPLAY
ZWES0220I Modify DISPLAY command received 319
ZWES0222I Server name - 'ZWESIS_STD ' 320
Global area address = 0x1D547000
Version = 2
Key = 4
Subpool = 228
Size = 4096
Flags = 0x00000000
Server address = 0x1F872630
Server ASID = 0x0065
Server flags = 0x00000002
ECSA block count = 0
PC-ss PC number = 0x00180700
PC-ss seq number = 0x00000004
PC-cp PC number = 0x00180701
PC-cp seq number = 0x00000004
PC log level = 2
動いてるっぽい。
インストール状況の確認
構成確認
以下のスクリプトを実行。
$ cd /usr/lpp/util/Zowe/1.2.0/scripts
$ ./zowe-verify.sh
Script zowe-verify.sh started
Info: ZOWE_ROOT_DIR environment variable is set to /usr/lpp/util/Zowe/1.2.0
Check SAF security settings are correct
Check IZUSVR has UPDATE access to BPX.SERVER and BPX.DAEMON
OK
Check ZOWESVR processes are runnning /usr/lpp/util/Zowe/1.2.0 code
OK: /usr/lpp/util/Zowe/1.2.0 code is running in ZOWESVR
Check ZOWESVR processes are runnning nodeCluster code
nodeCluster OK
zluxCluster OK
Check ZOWESVR is defined as STC to RACF and is assigned correct userid and group.
OK: Found matching STARTED profile entry ZOWESVR.* for task ZOWESVR
OK: Profile ZOWESVR.* is assigned to user IZUSVR
OK: Profile ZOWESVR.* is assigned to group IZUADMIN
OK: Started task ZOWESVR is assigned to the correct RACF user and group
Info: ZOWE job name is ZOWESVR
Check ZOWESVR job is started with user IZUSVR
OK: job ZOWESVR is executing
Info: ZOWE_ROOT_DIR is set to /usr/lpp/util/Zowe/1.2.0
OK: opercmd is available
Check all ZOWESVR jobs have userid IZUSVR
OK: job ZOWESVR is executing
OK: All USERIDs of ZOWESVR are IZUSVR
check ZOWESVR jobs in execution
Info: ZOWESVR4 is not running
OK
Check port settings from Zowe config files
OK: api catalog port is 7552
OK: api discovery port is 7553
OK: api gateway port is 7554
OK: explorer jobs api server port is 8545
OK: explorer datasets api server port is 8547
OK: zlux server httpsPort is 8544
OK: zss server port is 8542
OK: zss server port is 8542
OK: terminal_sshPort is 22
OK: terminal_telnetPort is 23
OK: jes explorer server port is 8546
OK: mvs explorer server port is 8548
OK: uss explorer server port is 8550
Check explorer server https port in the 3 explorer web/index.html files
OK: Port 7554
OK: Port 7554
OK: Port 7554
Check Ports are assigned to jobs
Info: Ports in use by ZOWESVR1 jobs
Info: Ports in use by ZOWESVR3 jobs
07554
08546
Info: Ports in use by ZOWESVR5 jobs
08548
08542
Info: Ports in use by ZOWESVR6 jobs
08545
07553
Info: Ports in use by ZOWESVR7 jobs
08544
08550
Info: Ports in use by ZOWESVR8 jobs
Info: Ports in use by ZOWESVR9 jobs
07552
08547
Check Node is installed and working
OK: version is v6.17.0
Check version of z/OS
Info: release of z/OS is RELEASE z/OS 02.03.00 LICENSE = z/OS
OK: version 02.03.00 is supported
Check IZUFPROC
OK
Check zosmfServer is ready to run a smarter planet
Error: zosmfServer is not ready to run a smarter planet
Check servers are up
Check jobs AXR CEA ICSF CSF
OK
Check relevant -s extattr bits
OK
Check relevant -p extattr bits
OK
Check files are executable
OK
Script zowe-verify.sh finished
以下のエラーが出ました。
Check zosmfServer is ready to run a smarter planet
Error: zosmfServer is not ready to run a smarter planet
z/OSMFの起動はしてるんだけどな...。
チェックしているスクリプトの中身見てみると、こんな感じで判定していました。
# 5. z/OSMF
echo
echo Check zosmfServer is ready to run a smarter planet
# is zosmfServer ready to run a smarter planet?
zosmfMsgLog=/var/zosmf/data/logs/zosmfServer/logs/messages.log
ls $zosmfMsgLog 1> /dev/null
if [[ $? -eq 0 ]]
then
# log file could be large ... msg is normally at record number 79. Allow for 200.
head -200 $zosmfMsgLog | iconv -f IBM-850 -t IBM-1047 | grep "zosmfServer is ready to run a smarter planet" > /dev/null
if [[ $? -ne 0 ]]
then
echo Error: zosmfServer is not ready to run a smarter planet # > /dev/null
else
echo OK
fi
fi
この部分!
head -200 $zosmfMsgLog | iconv -f IBM-850 -t IBM-1047 | grep "zosmfServer is ready to run a smarter planet" > /dev/null
z/OSMFのログ見て、ready to run a smarter planetのメッセージ有無を判定してるんですけど、当該ファイルはちゃんとタグ付けされてるのに、なぜかiconvで無駄にコード変換しちゃってる!んー、バグじゃね?あるいは_BPXK_AUTOCVT辺りの指定が悪いのだろうか?でも正解がよく分からん。
$ ls -laT /var/zosmf/data/logs/zosmfServer/logs | grep messages.log
t ISO8859-1 T=on -rw-rw---- 1 IZUSVR IZUADMIN 25862 May 9 15:33 messages.log
案の定、素で上のコマンド打つと文字化けしますな。iconvはずせばうまくひっかかりますので、このメッセージは無視します。(iconv省けばOKになるはず)
ということで、ここはクリアとみなします。
Verifying Zowe Application Framework installation
ブラウザから以下にアクセスしてみる
https://hostname:8544/ZLUX/plugins/org.zowe.zlux.bootstrap/web/index.html
Verifying z/OS Services installation
ブラウザからhttps://hostname:7554/api/v1/jobs?prefix=*
にアクセス
ユーザーID/パスワード入力後、認証したユーザー(USER01)のJOBの結果が返されました!
うまくいったようです。
{
"items": [
{
"jobId": "TSU00097",
"jobName": "USER01",
"owner": "USER01",
"type": "TSU",
"status": "OUTPUT",
"returnCode": "ABEND S622",
"subsystem": "JES2",
"executionClass": "TSU",
"phaseName": "Job is on the hard copy queue"
},
{
"jobId": "TSU00034",
"jobName": "USER01",
"owner": "USER01",
"type": "TSU",
"status": "OUTPUT",
"returnCode": "ABEND S622",
"subsystem": "JES2",
"executionClass": "TSU",
"phaseName": "Job is on the hard copy queue"
},
{
"jobId": "TSU00127",
"jobName": "USER01",
"owner": "USER01",
"type": "TSU",
"status": "ACTIVE",
"returnCode": null,
"subsystem": "JES2",
"executionClass": "TSU",
"phaseName": "Job is actively executing"
}
]
}
Verifying API Mediation installation
ブラウザからhttps://hostname:7554/api/v1/apicatalog/application/state
にアクセス
{
"messages": [
{
"messageType": "ERROR",
"messageNumber": "MFS0104",
"messageContent": "No response received within the allowed time: The service did not respond in time",
"messageKey": "apiml.common.serviceTimeout"
}
]
}
export JAVA_HOME=/usr/lpp/java/J8.0_64
if [[ ":$PATH:" == *":$JAVA_HOME/bin:"* ]]; then
echo "ZOWE_JAVA_HOME already exists on the PATH"
else
echo "Appending ZOWE_JAVA_HOME/bin to the PATH..."
export PATH=$PATH:$JAVA_HOME/bin
echo "Done."
fi
DIR=`dirname $0`
java -Xms32m -Xmx256m -Xquickstart \
-Dibm.serversocket.recover=true \
-Dfile.encoding=UTF-8 \
-Djava.io.tmpdir=/tmp \
-Dspring.profiles.include= \
-Dapiml.service.hostname=ZDTPE01.MK.ISE.COM \
-Dapiml.service.port=7554 \
-Dapiml.service.discoveryServiceUrls=https://ZDTPE01.MK.ISE.COM:7553/eureka/ \
-Dapiml.service.preferIpAddress=true \
-Dapiml.service.ipAddress=xxxxx \
-Dapiml.gateway.timeoutMillis=900000 \
-Dapiml.security.verifySslCertificatesOfServices=true \
-Dapiml.security.zosmfServiceId=zosmf \
-Dserver.address=0.0.0.0 \
-Dserver.ssl.enabled=true \
-Dserver.ssl.keyStore=$DIR/../keystore/localhost/localhost.keystore.p12 \
-Dserver.ssl.keyStoreType=PKCS12 \
-Dserver.ssl.keyStorePassword=password \
-Dserver.ssl.keyAlias=localhost \
-Dserver.ssl.keyPassword=password \
-Dserver.ssl.trustStore=$DIR/../keystore/localhost/localhost.truststore.p12 \
-Dserver.ssl.trustStoreType=PKCS12 \
-Dserver.ssl.trustStorePassword=password \
-Djava.protocol.handler.pkgs=com.ibm.crypto.provider \
-jar $DIR/../gateway-service.jar &
以下の指定が30000msec(30sec)になっていたので、900000msec(900sec)に変更してみる。(マシンが貧弱なので極端に大きくしてみる)
-Dapiml.gateway.timeoutMillis=900000 \
タイムアウトのエラーは出なくなったが、404のエラーになっちゃいました。
Dashboadのリンクをクリックすると以下のページに飛ばされました。
うーん、最後のチェックなんだけど、微妙な状況になってしまいました。
とりあえず一旦保留にして、必要に応じて直していこうかと。
ということでインストールは一区切りとします。
おまけ
ZOWE用のデータセットはこんな感じになりました。サイズでか過ぎ...
DSLIST - Data Sets Matching ZOWE01 Row 1 of 8
Command - Enter "/" to select action Tracks %Used XT
------------------------------------------------------------------------------
ZOWE01
ZOWE01.CPP.ZOSV221.D170810.BINDER.LOAD 78 99 1
ZOWE01.CPP.ZOSV221.D170810.SCNJCMP 3499 99 1
ZOWE01.SETUP.JCLLIB 150 2 1
ZOWE01.SISLOAD 100 19 1
ZOWE01.SISSAMP 100 1 1
ZOWE01.ZFS
ZOWE01.ZFS.DATA 90600 ? 18