
概要
前提知識
Multi Target Applicationプロジェクトにおけるビルド
Multi Target Applicationプロジェクトのビルドにおけるディスクリプタファイル
mta.yaml
mtad.yaml
hoge.mtaext
補足:mbt buildの詳細
使用例
Reshuffle_DBへの適用例
SAP-Samplesが提供するシンプルなmtaext例
参考URL
本ブログはMulti Target Applicationプロジェクトのデプロイ用ディスクリプタファイルであるmta.yamlをビルド時に拡張するための方法を示します。この方法を用いてデプロイ先環境ごとにmta.yamlの内容をビルド時に書き分けることなどができます。
“3. 使用例”で示すmtaextファイルの使用方法を理解するための前提知識として、mtaextファイルがかかわるMulti Target Applicationのビルドについて本セクションは取り扱います。
Multi Target Applicationのプロジェクト作成時、開発者は以下のコンテンツを用意してmbt buildコマンドによりビルドします。
.
├── アプリケーション本体
├── Multi Target Applicationプロジェクトのデプロイ用ディスクリプタファイル(mta.yaml)
ビルドの結果、下記のようにMulti Target Applicationアーカイブ(mtarファイル)が生成されます。開発者はcf deployコマンドを用いてこのアーカイブファイルを環境上にデプロイします。
.
├── アプリケーション本体
├── Multi Target Applicationプロジェクトのデプロイ用ディスクリプタファイル(mta.yaml)
└── mta_archives
└── Multi Target Applicationアーカイブ(mtarファイル)
生成されたmtarファイルはアプリケーション本体の他に実際のデプロイ時に使用するディスクリプタファイルであるmtad.yamlも持ちます。このファイルはデプロイ先の設定に適合させるためにmta.yamlから変換されたディスクリプタファイルであり、このファイルに記述された内容がデプロイ先に反映されます。
Multi Target Applicationが使用するディスクリプタファイルには次の3種類があります。
mta.yamlはプロジェクト開発時に使用するディスクリプタファイルです。このファイルは開発するMulti Target Applicationプロジェクトのルートディレクトリに慣例的には置かれます。プロジェクトのルートディレクトリに配置しない場合はmbt buildコマンドの実行時に"--source"オプションでmta.yamlのあるディレクトリを指定します。
mtad.yamlは環境上にデプロイするときに使用するディスクリプタファイルです。Multi Target Applicationの対応環境であるCF、NeoとXSAのそれぞれで同様のアプリケーションであっても要求するアプリケーションの設定タイプに差があります。mtad.yamlはこの設定タイプの差分吸収に利用されています。mta.yamlは環境ごとのアプリケーション設定タイプの差分を吸収した記述を許容させており、mbt buildが各環境にあわせた設定タイプに変換してmtad.yamlを生成しています。mtad.yamlは手書きで記述することも可能です。
hoge.mtaextはmbt buildコマンドによって利用されるmta.yamlの拡張ファイルです。このファイルを用いて開発者はmta.yamlの内容を上書きおよび追記することが可能です。mbt buildコマンドはmta.yamlを使ったmtad.yaml作成時にhoge.mtaextの内容を巻き込むことができます。このときmbt buildコマンドに"--extensions"オプションを付け加えます。--extensionsオプションで指定するmtaextファイル名に指定はなく、正規表現で指定した場合^.*\.mtaext$
であればよいです。
mbt buildコマンドは以下の3ステップを実行します。
mta.yaml内の各moduleのビルド
mta.yamlにおけるmoduleのtype情報の変換
下記構成にしたzipファイルをmtarとして生成
3ステップ目によって生成されたmtarファイルはjarのようにzip形式で格納されており、下記のような構成でMETA-INFを持ちます。
.
├── アプリケーション本体
└── META-INF
├── MANIFEST.MF
└── mtad.yaml
mtaextを使わない場合:デフォルトのHANA Cloudインスタンスを利用するHDIコンテナを作成
mtaextを使う場合:デフォルトの挙動を上書きし、特定のHANA Cloudインスタンスを利用するHDIコンテナを作成
GitHubよりReshuffle_DBをクローンします。このプロジェクトはHANA Cloudインスタンスに対してHDIコンテナ経由で3つのテーブルを作成するMulti Target Applicationです。プロジェクト構成は下記の通りである。dbディレクトリ配下に含まれるファイル群がこのMulti Target Applicationにおけるアプリケーション本体です。
.
├── README.md
├── db
│ ├── package.json
│ └── src
│ ├── candidate.hdbtable
│ ├── config.hdbtable
│ └── history.hdbtable
└── mta.yaml
mbt buildコマンドを用いてプロジェクトをビルドします。下記のようにプロジェクトのルートディレクトリにmta_archivesディレクトリとその配下にmtarファイルが作成されます。
.
├── README.md
├── db
│ ├── package.json
│ └── src
│ ├── candidate.hdbtable
│ ├── config.hdbtable
│ └── history.hdbtable
├── mta.yaml
└── mta_archives
└── Reshuffle_DB_0.0.1.mtar
Reshuffle_DB_0.0.1.mtarをzipファイルとして解凍し、META-INFディレクトリに含まれるmtad.yamlを確認します。mta.yamlに記述した通りのhdiコンテナの内容が記述されています。
GitHubよりReshuffle_DBをクローンします。
.
├── README.md
├── db
│ ├── package.json
│ └── src
│ ├── candidate.hdbtable
│ ├── config.hdbtable
│ └── history.hdbtable
└── mta.yaml
プロジェクトのルートディレクトリに開発環境用の拡張ディスクリプタファイルとしてdev.mtaextを作成し、下記の内容を記述します。
_schema-version: '2.1'
ID: Reshuffle_DB_ext
extends: Reshuffle_DB
version: 0.0.1
resources:
- name: hdi_db
parameters:
config:
database_id: hana_cloud_instance_id_for_dev_env
mbt buildコマンドを用いてプロジェクトをビルドします。ビルド時には"--extensions"オプションを指定してmbt build --extensions dev.mtaext
を実行します。下記のようにプロジェクトのルートディレクトリにmta_archivesディレクトリとその配下にmtarファイルが作成されます。
.
├── README.md
├── db
│ ├── package.json
│ └── src
│ ├── candidate.hdbtable
│ ├── config.hdbtable
│ └── history.hdbtable
├── mta.yaml
└── mta_archives
└── Reshuffle_DB_0.0.1.mtar
Reshuffle_DB_0.0.1.mtarをzipファイルとして解凍し、META-INFディレクトリに含まれるmtad.yamlを確認します。mta.yamlに記述したhdiコンテナの内容に加え、dev.mtaextの内容も書き加えられた内容が記述されています。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
16 | |
14 | |
13 | |
11 | |
11 | |
11 | |
10 | |
8 | |
7 | |
6 |