はじめに
メインフレーム(z/OS)の開発環境をIBM Cloud上にセットアップしてみた時のログです。今回はいよいよZD&Tインスタンスの作成です。
ここでは一旦ZD&Tインスタンス作成の流れを一通りやってみます。
具体的にどのような構成が行われるのかといった詳細については別の記事で深掘りしていきたいと思います。
関連記事
クラウド上でのメインフレーム開発環境構築 - (1) 仮想サーバー作成
クラウド上でのメインフレーム開発環境構築 - (2) ZD&T管理サーバーのインストール
クラウド上でのメインフレーム開発環境構築 - (3) ライセンス管理
クラウド上でのメインフレーム開発環境構築 - (4) ZD&Tインスタンス作成概要(ADCD)
クラウド上でのメインフレーム開発環境構築 - (5) ZD&Tインスタンス作成詳説(ADCD)
クラウド上でのメインフレーム開発環境構築 - (6) DeviceMapファイル補足
クラウド上でのメインフレーム開発環境構築 - (7) ネットワーク構成補足
クラウド上でのメインフレーム開発環境構築 - (8) ADCD IPL, Shutdown補足
クラウド上でのメインフレーム開発環境構築 - (9) DASD管理補足
クラウド上でのメインフレーム開発環境構築 - (10)既存ZD&Tからイメージ作成
全体像
ようやくここからZD&Tインスタンス(つまりIBM Zシミュレーター本体)を作成していきます。
ZD&Tインスタンスを作成する方法としては、大きく2種類あります。
1つはZD&Tインストーラーを使用して旧来のRD&TやZD&T PE(Personal Edition)と同じように個別にZD&Tインスタンスを作成する方法です。
もう1つは、イメージ・ストレージ・サーバーに管理されるz/OSイメージを基にWebサーバー経由でZD&Tインスタンスを作成する方法です。
今回は後者を想定して話を進めてきています。
後者の場合、まず元になる環境のイメージをイメージ・ストレージ・サーバー上に取り込む必要がありますが、元にするz/OS環境のイメージの選択肢としては以下の3つがあります。
- 製品提供の出来合いのz/OS環境(ADCDパッケージと呼ばれる)を元にZD&Tインスタンスを作成
- 既存の別のZD&Tインスタンスの環境を元にZD&Tインスタンスを作成
- 既存の実z/OS環境を元にZD&Tインスタンスを作成
ここでは、IBM Cloudから接続できる他のZD&Tやz/OS環境が無いので、製品提供のADCDを元にZD&Tインスタンスを作成することにします。
ADCDには、z/OSだけでなく各種ミドルウェア(CICS, Db2, IMSなど)やコンパイラ(Enterprise COBOL)なども含まれています。
ZD&Tインスタンス作成
事前準備
実際にインスタンス作成を行う前に、事前に環境周りの情報を設定しておく必要があります。
ターゲット・サーバー関連
ZD&Tインスタンス実行ユーザー作成
ZD&Tインスタンス実行用のユーザーを作成します。ここではibmsys1というユーザーを作成することにします。
[taguchi@zdt02 ~]$ sudo useradd ibmsys1
[taguchi@zdt02 ~]$ sudo passwd ibmsys1
Changing password for user ibmsys1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
sudoできるようにwheelグループを付与します。
[taguchi@zdt02 home]$ sudo usermod -aG wheel ibmsys1
公開鍵認証でssh接続できるようにキーペアの設定しておきます(ここでは手順は割愛)。
参考: 公開鍵認証
yum repository
ZD&Tインスタンスを作成するサーバーを"ターゲット・サーバー"と呼んでいます(ここではzdt02)。
まず、ターゲットサーバー側では、必要なパッケージがあればインストールできるように、yumが使用できる状態にしておく必要があります。
[ibmsys1@zdt02 ~]$ sudo yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
repo id repo name status
!rhel-7-server-optional-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Optional (RPMs) 22,130
!rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 30,637
!rhel-7-server-supplementary-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Supplementary (RPMs) 383
repolist: 53,150
インストール先ディレクトリ作成
ZD&Tインスタンスを導入する先のディレクトリを作成します。デフォルトだと/home/ibmsys1ですが、追加したディスク配下に導入したいので、/mnt/ibmsys1というディレクトリを作っておき、そこに導入するようにします。
[ibmsys1@zdt02 mnt]$ sudo mkdir ibmsys1
[ibmsys1@zdt02 mnt]$ sudo chown ibmsys1:ibmsys1 ibmsys1
[ibmsys1@zdt02 mnt]$ ls -la
total 28
drwxr-xr-x. 4 root root 4096 Oct 27 01:22 .
dr-xr-xr-x. 18 root root 4096 Oct 27 02:32 ..
drwxr-xr-x. 3 ibmsys1 ibmsys1 4096 Oct 27 02:33 ibmsys1
drwx------. 2 root root 16384 Sep 13 20:34 lost+found
ホスト名解決
この後、イメージ・ストレージ・サーバーやライセンス・サーバーのホスト名を指定しますが、ターゲットサーバーからそのホスト名でアクセスできるようにしておく必要があります。必要に応じて/etc/hosts
やDNSなどの設定を行います。
ここでは、/etc/hosts
にzdt01というホスト名とIPアドレスのマッピングをしておきます。(zdt02から、zdt01に対してpingが通るようにしておく)
必要なパッケージのインストール
インスタンス作成時のチェックでncコマンドが使用されるようです。ncコマンドが使えるように、nmap-ncatパッケージをインストールしておきます。
[ibmsys1@zdt02 /]$ sudo yum install nmap-ncat
ターゲット・サーバーの登録
Webサーバー上でターゲット・サーバーを登録しておく必要があります。Webサーバー(Liberty)が起動していなければ起動してブラウザから接続します。
[taguchi@zdt01 ~]$ sudo /opt/ibm/zDT/bin/startServer.sh
ラベル、ホスト名(IPアドレス)、SSHポートを指定し、"詳細設定の調整"をONにして次へ
ターゲットの環境のネットワーク構成情報を指定します。
デフォルトだと以下のような設定になっています。
これを、以下のように変更して、"ターゲット環境の追加"をクリックします。
イメージ・ストレージ・サーバー関連
イメージ・ストレージ・サーバーには、ZD&Tインスタンスを作成する際の元になるz/OSイメージを格納しておく必要があります。ftpでアクセスできる先にディレクトリを用意しておきます。ここはサイズが大きくなりがちですので、追加でマウントしたディスク上に保持するようにします。
/mnt/ZDT_Image
ディレクトリを作成して、owner:groupをftpuser:ftpuserにしておきます。
[taguchi@zdt01 /mnt]$ sudo mkdir ZDT_Image
[taguchi@zdt01 /mnt]$ sudo chown ftpuser:ftpuser ZDT_Image
[taguchi@zdt01 /mnt]$ ls -la
total 36
drwxr-xr-x. 6 root root 4096 Oct 26 23:54 .
dr-xr-xr-x. 19 root root 4096 Sep 18 19:57 ..
drwxr-xr-x. 3 root root 4096 Sep 14 03:37 Inst_Image
drwx------. 2 root root 16384 Sep 13 19:25 lost+found
drwxr-xr-x. 4 root root 4096 Sep 19 00:42 opt_ibm
drwxr-xr-x. 2 ftpuser ftpuser 4096 Oct 26 23:54 ZDT_Image
ftpuserのホーム以下からシンボリックリンクを張ります。
[taguchi@zdt01 /mnt]$ sudo ln -s /mnt/ZDT_Image/ /home/ftpuser/ZDT_Image
[taguchi@zdt01 /mnt]$ sudo ls -la /home/ftpuser
total 20
drwx------. 2 ftpuser ftpuser 4096 Oct 26 23:59 .
drwxr-xr-x. 6 root root 4096 Sep 19 02:56 ..
-rw-r--r--. 1 ftpuser ftpuser 18 Mar 12 2019 .bash_logout
-rw-r--r--. 1 ftpuser ftpuser 193 Mar 12 2019 .bash_profile
-rw-r--r--. 1 ftpuser ftpuser 231 Mar 12 2019 .bashrc
lrwxrwxrwx. 1 root root 15 Oct 26 23:59 ZDT_Image -> /mnt/ZDT_Image/
次に、イメージ・ストレージ・サーバーの情報を登録しておく必要があります。
管理コンソールにzdtadminでログインし、"イメージ・ストレージ"を選択。
"接続のテスト"をクリックして成功することを確認しておきます。
ライセンス・サーバー関連
ライセンス・サーバーの情報を登録しておく必要があります。
管理コンソールにzdtadminでログインし、"エミュレーター・ライセンス"を選択。
ソフトウェアの1次の欄にライセンス・サーバーのホスト名を指定して保存
イメージの作成 (from ADCD)
イメージ・ストレージ・サーバーのディレクトリ下(/mnt/ZDT_Image)に、adcdというディレクトリを作成します。その下にADCDの種類に応じて適当なディレクトリを作成します。ここでは2019_11(2019年11月のレベルのADCDを意味する)というディレクトリを作成します。
2019_11以下にはADCDのメタデータを意味するXMLファイル、さらにvolumesディレクトリ下に圧縮されたDASDイメージファイルを配置します。
階層構造としてはこんな感じです。
[taguchi@zdt01 /mnt/ZDT_Image]$ tree . --charset C
.
`-- adcd
`-- 2019_11
|-- ADCDTOOLS.XML
`-- volumes
|-- A4BLZ1.gz
|-- A4C541.gz
|-- A4C551.gz
|-- A4CFG1.gz
|-- A4DBAR.gz
|-- A4DBB1.gz
|-- A4DBB2.gz
|-- A4DBC1.gz
|-- A4DBC2.gz
|-- A4DIS1.gz
|-- A4DIS2.gz
|-- A4DIS3.gz
|-- A4IME1.gz
|-- A4IMF1.gz
|-- A4INM1.gz
|-- A4KAN1.gz
|-- A4PAGA.gz
|-- A4PAGB.gz
|-- A4PAGC.gz
|-- A4PRD1.gz
|-- A4PRD2.gz
|-- A4PRD3.gz
|-- A4PRD4.gz
|-- A4RES1.ZPD
|-- A4RES2.gz
|-- A4SYS1.gz
|-- A4USR1.gz
|-- A4USS1.gz
|-- A4USS2.gz
|-- A4W901.gz
|-- A4W902.gz
|-- A4ZCX1.gz
|-- SARES1.ZPD
`-- ZDTRKT.gz
3 directories, 35 files
管理コンソールにzdtadminでログインし、"Application Developers Controlled Distributions(ADCD)"を選択。
adcd以下のディレクトリからADCDが検出されると、この画面で詳細を選択できるようになります。
ADCDバージョンを選択し、イメージ名を付けて、右側のコンポーネントから必要なコンポーネント選択して、イメージの作成をクリックします。
z/OSはデフォルトで選択されるので、ここではそれ以外にCICS V5.5とDb2 V12を選択してみます。
作成されたアセットの確認
"モニターおよび管理" から、作成されたアセットを確認することができます。
ADCDから取り込んだイメージと、ターゲット環境の情報が確認できます。
ZD&Tインスタンスの作成(デプロイ)
準備が整ったので、いよいよZD&Tインスタンスの作成です。
上で取り込んだイメージをターゲット環境にデプロイします。
イメージもターゲット環境も今はそれぞれ1つずつしか作ってないので、それぞれ選択して、"イメージのデプロイ"をクリック
ユーザーIDにはZD&Tインスタンス実行用に作成したユーザーを指定します。そのユーザーでsshアクセスするための秘密鍵と、インストール先のディレクトリも指定します。
ここで、ディレクトリの存在/アクセス権チェック、ライセンス・サーバーへのアクセスチェック(ncコマンド)が行われます。
z/OSの管理ユーザー(IBMUSER)のパスワードを設定します。
ZD&Tインスタンスに割り当てる各種リソース設定を行います。
IPLコマンドはデフォルトのまま(LOASxxにCS指定したらうまくうごかなかった...)
デバイス・アドレス、IODFアドレス、LOADPARMは元にしているADCDのメタデータのXML(ADCDTOOLS.XML)に記載されているものがデフォルトで採用されています。
...
<zsystem_information>
<zos_version>z/OS 02.04.00.0</zos_version>
<load_suffix>AU</load_suffix>
<iodf_address>0A82</iodf_address>
<ipl_device_number>0A80</ipl_device_number>
...
※LOADxx接尾部(LOADPARM)は、以下から適当なものを選択可能なはずですが、デフォルトのAUというのがここには無い。CS指定したIPL時にらうまくVTAMが起動しませんでした。AUのままだと起動しました。ZD&Tで提供されるADCDのパッケージはここに記載されているものと完全に同一という訳では無く、ZD&T用にカスタマイズされているっぽい...。
参考: ADCD z/OS V2R4 November Edition of 2019 - LOADPARMS Options
モニターを確認します。
エラーが発生すると、モニターで警告マークがつきますので、「・・・」のメニューからログの取得を行って、適宜修正します。
モニター画面でデプロイ進行中に以下のパーセンテージ表記をクリックすると詳細な進行状況が確認できます。
PCOMからの接続
マスター・コンソール
PCOMからマスター・コンソールに接続してみます。これはnon-SNA端末と呼ばれる端末に接続することになります。zdt02上では3270ぽーとでnon-SNA端末のポートをListenしているので、PCOMからzdt02上の3270ポートに対して接続構成を行います。LUNameにはmstconを指定します。
構成ファイルを直接編集する場合はこんな感じになります。一旦これはこのまま。
...
[Telnet3270]
HostName=zdt02
HostPortNumber=3270
Security=N
LastConfigHostDoesNotTimeout=N
CertSelection=AUTOSELECT
LUName=mstcon
[Communication]
Link=telnet3270
....
別途zdt02にteratermからibmsys1ユーザーログインして、以下のコマンドを実行します。
[ibmsys1@zdt02 ~]$ oprmsg 'V CN(*),ACTIVATE'
[ibmsys1@zdt02 ~]$ oprmsg 'V 700,CONSOLE'
すると、先ほどのPCOM画面がマスター・コンソールとして利用できるようになります。
TSO
マスターコンソールと同様に3270ポートに対して接続構成を行いますが、TSO接続する場合LUNameをtso1としてください。(デフォルトではtso1~tso4までの4つのTSO用のnon-SNA端末が定義されています。)
...
[Telnet3270]
HostName=zdt02
HostPortNumber=3270
Security=N
LastConfigHostDoesNotTimeout=N
CertSelection=AUTOSELECT
LUName=tso1
[Communication]
Link=telnet3270
....
L TSO と打って、IBMUSERでデプロイ時に指定したパスワードを指定してTSOにログインできます。
あとは普通のz/OSと同じように操作できます。
ZD&Tインスタンスの起動/停止
モニター画面のインスタンスのメニューから、開始/停止の制御ができます。
※ただし、ここでの停止方法はいきなり電源OFFでOSごと強制終了するようなイメージになってしまうので注意が必要です。この手順で停止する前にミドルウェア等は事前に終了させておく必要があります。