Mainframe Connector は、MVS バッチジョブのコンテキスト内で Java 仮想マシン(JVM)プロセスとして起動されます。Mainframe Connector は通常、JVM に付属の IBM ライブラリ以外の必要な依存関係を含む JAR ファイルを使用してデプロイされます。 以降のセクションでは、Mainframe Connector のインストール プロセスについて詳しく説明します。
始める前に
- Mainframe Connector の初期設定を完了します。 初期設定には、サービス アカウントへの必要なロールの付与、アセットのセキュリティ設定、メインフレームと Google Cloud間のネットワーク接続の設定が含まれます。
- Java V8 を構成します。
- JZOS バッチ ランチャーとツールキットをインストールします。
Mainframe Connector をインストールする
Mainframe Connector をインストールする手順は次のとおりです。
ビルド済みの JAR ファイルをダウンロードします。ステップ 7 に示す BQSH ジョブ制御言語(JCL)プロシージャの Java Classpath セクションで指定されるパスに、mainframe-connector-shadow-VERSION-all.jar ファイルをコピーします。 VERSION は Mainframe Connector のバージョンです。
メインフレームからサービスにアクセスするには、サービス アカウント キーを作成して JSON キーファイルとしてダウンロードする必要があります。 Google Cloud JSON キーファイルの作成の詳細については、サービス アカウント キーを作成するをご覧ください。
バイナリ転送モードでファイル転送プロトコル(FTP)を使用して、JSON 鍵ファイルを Unix ファイル システムにコピーします。変更されていない JSON キーファイルを、元の UTF-8 エンコードでファイル システムに保存してください。
IBM z/OS Unix ファイル システムに JSON キーファイルを保存するためのデフォルトのパスはありません。サービス アカウントにアクセスする権限を持つユーザーのみが読み取り可能なパスを選択する必要があります。JSON キーファイルが正しく転送されている場合、UNIX System Services(USS)からは読み取れません。
バイナリ モードの FTP を使用して、手順 1 でダウンロードした JAR ファイルをメインフレームの次の場所にアップロードします。
/opt/google/mainframe-connector/VERSION/
Version は、JAR ファイルのバージョンに置き換えます。
これは、JAR ファイルをデプロイするための推奨パスです。サイト管理者が選択したパスを使用することもできます。
次のコマンドを実行して、JAR ファイルが正しく転送されたことを確認します。
-t
オプションは JAR ファイルの内容を一覧表示します。jar -tvf JAR_FILE_NAME
JAR_FILE_NAME は、JAR ファイルの名前に置き換えます。
次の BQSH JCL プロシージャのコピーを作成し、次の変数を置き換えます。
BQSH JCL プロシージャで、
BQSH_ROOT_LOGGER=DEBUG
はデバッグ ロギングが有効であることを示します。デバッグ ロギングを無効にするには、行をコメントアウトするか、変数をDEBUG
以外に設定します。ロギング情報を Cloud Logging に書き込むように Mainframe Connector を構成するには、次の例に示すように
LOG_PROJECT
環境変数とLOG_ID
環境変数を設定します。Mainframe Connector でサポートされている環境変数の一覧については、環境変数をご覧ください。
- GKEY_FILE_PATH は、手順 3 で説明する JSON キーファイルへのパスに置き換えます。
- JAR_FILE_PATH は、JAR ファイルを含むディレクトリのパスに置き換えます。
- PROJECT_NAME は、Cloud Logging でログが作成されるプロジェクトに置き換えます。
- LOG_ID_NAME は、ログの名前に置き換えます。
//BQSH PROC //******************************************************************* //* //* Copyright 2022 Google LLC All Rights Reserved //* //* Licensed under the Apache License, Version 2.0 (the "License"); //* you may not use this file except in compliance with the License. //* You may obtain a copy of the License at //* //* http://www.apache.org/licenses/LICENSE-2.0 //* //* Unless required by applicable law or agreed to in writing, software //* distributed under the License is distributed on an "AS IS" BASIS, //* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //* See the License for the specific language governing permissions and //* limitations under the License. //* //******************************************************************* //BQSH EXEC PGM=JVMLDM86,REGION=0M, // PARM='/+I com.google.cloud.bqsh.Bqsh' //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //CEEDUMP DD SYSOUT=* //ABNLIGNR DD DUMMY //STDIN DD DUMMY //QUERY DD DUMMY //INFILE DD DUMMY //COPYBOOK DD DUMMY //KEYFILE DD DUMMY //STDENV DD *,SYMBOLS=EXECSYS # Service Account Keyfile # Edit the line below to specify a unix filesystem path where # the service account keyfile is stored. # The service account should be granted Storage, BigQuery and Logging permissions. export GKEYFILE="GKEY_FILE_PATH" # Path to directory containing google jar file # Edit this to set actual path selected for your site # it's recommended to have a path with a version identifier # and create a symlink to the directory of the latest version GOOGLE_DIR="JAR_FILE_PATH" GOOGLE_CLASSPATH="$GOOGLE_DIR/*" # Do not modify the 3 lines below # Collect system symbols from JES export JOBNAME=&JOBNAME export JOBDATE=&YYMMDD export JOBTIME=&HHMMSS # IBM JZOS JDK Location JH="/usr/lpp/java/J8.0_64" export JAVA_HOME="$JH" export PATH="/bin:$JH/bin" # Log Level export BQSH_ROOT_LOGGER=DEBUG # Cloud logging LOG_PROJECT="PROJECT_NAME" LOG_ID="LOG_ID_NAME" # Binary Data Sets # Uncomment the line below to set a default output bucket for scp. # The DSN of the input file is used as the object name. # this may greatly reduce effort across many job steps #export GCSDSNURI="gs://[BUCKET]/[PREFIX]" # Generational Data Sets # Uncomment the line below to set a default output bucket for scp GDG datasets. # The Cloud GDG feature emulates a GDG dataset in a versioned object. # Cloud Storage objects take precedence over local DSN when this is set. #export GCSGDGURI="gs://[BUCKET]/[PREFIX]" # Uncomment the line below to set a default output bucket for the gszutil command. #export GCSOUTURI="gs://[BUCKET]/[PREFIX]" # Mainframe Connector gRPC service # Uncomment and edit the lines below to set the Hostname or IP Address and # port of the gRPC data set transcoding service. # The gRPC service converts z/OS datasets to ORC format on VMs running in # Google Cloud VPC. This is strongly recommended when processing high volumes # of data. #export SRVREMOTE= #export SRVPORT= # Native Libraries JL="$JH/lib" LP="/lib:/usr/lib:$JH/bin:$JL/s390x:$JL/s390x/j9vm:$JH/bin/classic" export LIBPATH="$LP:/usr/lib/java_runtime64" # Java Classpath CP="$JL:$JL/ext:/usr/include/java_classes/*" export CLASSPATH="$CP:$GOOGLE_CLASSPATH" # JVM options IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true" export IBM_JAVA_OPTIONS="$IJO" export JZOS_MAIN_ARGS="" /* // PEND
TLS インターセプト プロキシで動作するように Mainframe Connector を構成するには、BQSH JCL プロシージャで次の Java システム プロパティを設定します。
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
https.proxyHost
https.proxyUser
https.proxyPassword
IBM_JAVA_OPTIONS
の Java システム プロパティを追加する前の BQSH JCL プロシージャは次のとおりです。# JVM options IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true" export IBM_JAVA_OPTIONS="$IJO" ``` The BQSH JCL procedure after adding the Java system properties for <code>IBM_JAVA_OPTIONS</code> is as follows. ```none # JVM options IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true" IJO="$IJO -Djavax.net.ssl.trustStore=/path/to/cacerts" IJO="$IJO -Djavax.net.ssl.trustStorePassword=notasecret" IJO="$IJO -Dhttp.proxyHost=proxy.example.com" IJO="$IJO -Dhttp.proxyUser=username" IJO="$IJO -Dhttp.proxyPassword=password" export IBM_JAVA_OPTIONS="$IJO" ```
デフォルトのトラストストア パスワード changeit を使用している場合は、
trustStorePassword
システム プロパティを設定する必要はありません。 プロキシ機能はApache HttpComponents HttpClient
によって提供されます。Mainframe Connector でサポートされている証明書トラストストア形式を使用する必要があります。証明書トラストストアは、次の形式で保存できます。
- PKCS12(.p12): 多くの証明書を含めることができ、パスワードが必要です。
- JKS(.jks): 多くの証明書を含めることができ、パスワードが必要です。
- PEM(.pem): base64 としてエンコードされた多くの証明書を含めることができます。
- バイナリ(.der): ファイルごとに 1 つの証明書が含まれます。
trustStore
システム プロパティがディレクトリへのパスである場合は、ディレクトリがスキャンされ、ディレクトリ内で検出される .pem および .pem 形式のすべての証明書が信頼できる証明書として追加されます。 PKCS12 証明書または JKS 証明書を手動で読み込む必要があります。
BQSH JCL プロシージャに変更を加える必要が生じた場合は、下位環境のプロシージャ ライブラリ(PROCLIB)に新しいバージョンをステージングできます。このライブラリはシステム ライブラリ SYSP.PROCLIB の前に追加されるため、SYSP.PROCLIB のプロシージャを更新する前に、下位環境に対して変更を検査できます。これにより、テスト中に新しい更新されたプロシージャを指すように JCL プロシージャを更新するのを回避できます。
BQSH JCL サンプル プロシージャ
以下に、BQSH JCL のサンプル プロシージャを示します。このプロシージャでは、ENV シンボリックを使用して Java スタンダード環境ステートメントを指定します。これは環境に固有のものです。 Google Cloud この場合、環境ごとに複数の BQSH プロシージャは必要ありません。特定の環境を変更する場合は、システム PARMLIB ライブラリのGoogle Cloud environment でその特定のメンバーを更新するだけです。たとえば、新しい JAR ファイルを作成したり、別の IBM Java バージョンを使用したり、環境ステートメントを使用して JSON キーファイルを変更したりします。
#BQSH PROC ENV=DEV
//
//******************************************************************
//*
//* Copyright 2022 Google LLC All Rights Reserved
//*
//* Licensed under the Apache License, Version 2.0 (the "License");
//* you may not use this file except in compliance with the License.
//* You may obtain a copy of the License at
//* http://www.apache.org/licenses/LICENSE-2.0
//* Unless required by applicable law or agreed to in writing , software
//* distributed under the License is distributed on as "AS IS" BASIS,
//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express of impl.
//* See the license for the specific language governing permissions and
//* limitations under the License.
//*
//******************************************************************
//BQSH EXEC PGM=JVMLDM86,REGION=0M,
// PARM='/+I com.google.cloud.bqsh.Bqsh'
//SYSPRINT DD SYSOUT = *
//SYSOUT DD SYSOUT = *
//STDOUT DD SYSOUT = *
//STDERR DD SYSOUT = *
//CEEDUMP DD SYSOUT = *
//ABNLIGNR DD DUMMY
//STDIN DD DUMMY
//QUERY DD DUMMY
//INFILE DD DUMMY
//COPYBOOK DD DUMMY
//KEYFILE DD DUMMY
//STDENV DD DISP=SHR,DSN=SYSP.PARMLIB(EDW&ENV)
// DD *,SYMBOLS=EXECSYS
# Do not modify the 3 lines below
# Collect system symbols from JES
export JOBNAME=&JOBNAME
export JOBDATE=&YYMMDD
export JOBTIME=&HHMMSS
次に、JSON キーファイルと Mainframe Connector ソフトウェアの JAR ファイルを参照する方法を示す DEV PARMLIB メンバーの例を示します。
# Service Account Keyfile
# Edit the line below to specify a unix filesystem path where
# the service account keyfile is stored.
# The service account should be granted Storage, BigQuery and Logging pe
GKPATH= "/opt/google/keyfile"
GKFILE= "prj-ent-edw-dev-landing-2451-f89d99af31e5.json"
export GKEYFILE= "$GKPATH/$GKFILE"
# Path to directory containing google jar file
# Edit this is set actual path selected for your site
# its recommended to have a path with a version identifier
# and create a symlink to the directory of the latert version
GOOGLE_DIR= "/opt/google/mainframe-connector/5.9.0"
GOOGLE_CLASSPATH= "$GOOGLE_DIR/*"
#IBM JZOS JDK Location
JH= "/usr/lpp/java/J8.0_64"
export JAVA_HOME= "$JH"
export PATH= "/bin:$JH/bin"
# Log Level
export BQSH_ROOT_LOGGER=DEBUG
次のステップ
- ローカルでコード変換されたメインフレーム データを Google Cloudに移動する
- メインフレームのデータをリモートでコード変換する Google Cloud
- 仮想テープ ライブラリを使用して、 Google Cloud に移動したメインフレーム データをコード変換する