SAP ABAP Platform 1909, Developer Edition（docker）のライセンスキーを更新してみる


[SAP ABAP Platform 1909, Developer Edition（dockerhub）をopenSUSE Leap 15.3（EC2）で起動してみる](https://qiita.com/SAITO_Keita/items/d826c66d0853282f4b9c)

上記の記事で`SAP ABAP Platform 1909, Developer Edition`を構築してみましたが。

最初からコンテナに含まれているライセンスキー　及び　[Trials and Downloads - SAP Developer Center](https://developers.sap.com/trials-downloads.html)からダウンロードできるライセンスのハードウェアキーとAWS上に構築したハードウェアキーが食い違っており。

ライセンスキーを[minisap](https://go.support.sap.com/minisap/)から取得してインストールしないとならない事態となりました。

ここらへんSAP側が対応してくれてうまいことなるかはわかりませんが、`Developer Edition`は有効期限があり定期的にライセンス更新が必要となり、[Trials and Downloads - SAP Developer Center](https://developers.sap.com/trials-downloads.html)　で配布されているライセンスキーも使えない。

といった事を想定して、[minisap](https://go.support.sap.com/minisap/)から`Developer Edition`のライセンスを取得してインストールする方法を本記事では試しています。

## SAP ABAP Platform 1909, Developer Edition（docker）のライセンス更新について

[ABAP Platform, Developer Edition SETUP INSTRUCTIONS](https://hub.docker.com/_/sap-abap-trial/plans/ac8a4f9b-ae29-4afa-9b39-25aeea24b821?tab=instructions)

上記の`Licenses`に記載がありますが、`Developer Edition`のコンテナには格納されているライセンスファイルを読み取り更新するスクリプトが仕込まれており、このスクリプトはコンテナ起動時に実行されます。

| システム | スクリプト | ライセンスファイル配置場所|
| --- | --- | --- |
| ASABAP | /usr/local/bin/asabap_license_update | /opt/sap/ASABAP_license |
| HDB　| /usr/local/bin/hdb_license_update | /opt/sap/HDB_license |

ライセンスファイルを配置して起動すると毎回、コンテナ起動時にライセンス更新処理が走るため、これを止めたい場合は、ドキュメント上には下記の記載があります。（未検証）

`ASABAP`では　`-no-asabap-license-update`オプションを追加（`docker run`に？）　もしくは　`/opt/sap/.no_ASABAP_license_update` を作成する

HDBでは　`-no-asabap-license-update`オプションを追加（`docker run`に？）　もしくは　`/opt/sap/.no_HDB_license_update`を作成する

## ASABAP（A4H）のライセンスキー更新

[minisap](https://go.support.sap.com/minisap/)でハードウェアキーを発行するにあたって、必要なハードウェアキーをまずは確認してみます。

```bash:openSUSE上で実行
# a4hadmでsaplicenseを実行
docker exec -it a4h  su - a4hadm -c "/usr/sap/A4H/SYS/exe/run/saplicense -get"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/5844be13-a936-aa77-066d-269e605f12f7.png)

本資料で構築している環境はハードウェアキーが`K0132868343`である事がわかりました。

[minisap](https://go.support.sap.com/minisap/)にアクセスし

- `Available SAP Systems for Windows & Linux` は `A4H - SAP NetWeaver AS ABAP 7.4 and above (Linux / SAP HANA)` を選択
- `Personal Data & System Info`に必要事項と先程取得したハードウェアキーを入力。
- `License Agreement`　にチェック

上記入力を確認して、`Generate`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/f4cee39f-03e4-24b5-303d-52af5c58b5b4.png)

`Generate`を選択すると、`A4H_Multiple.txt`ファイルがダウンロードできます。

ダウンロードしたファイルを`openSUSE`を構築したEC2インスタンスに配置してください。（scp等々で）

本資料ではec2-userのホームディレクトリに配置しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a6d718a5-dddc-8db8-3654-bbf3da7c5edc.png)

```bash:openSUSE上で実行（ec-user）
# ホームディレクトリのA4H_Multiple.txtをコンテナの/opt/sap/ASABAP_licenseにコピー
docker cp ~/A4H_Multiple.txt a4h:/opt/sap/ASABAP_license

# asabap_license_updateを実行してライセンスを更新
docker exec -it a4h /usr/local/bin/asabap_license_update
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/aff9dd9b-f46f-3e77-951a-d8567bc2994a.png)

`2 SAP license key(s) successfully installed.`と表示されライセンス更新されている事を確認します。

## HANADB(HDB）のライセンスキー更新

ASABAPと同様にハードウェアキーの確認をします。

```bash:openSUSE上で実行
# hdbadmでhdbsqlを実行
# hdbadmとSAPA4Hの情報についてはDocker hubのSETUP INSTRUCTIONSより
docker exec -it a4h  su - hdbadm -c "hdbsql -n localhost -i 02 -u SAPA4H -p Ldtf5432 -x 'SELECT * FROM M_license'"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/515a4c9a-0321-5880-6f8c-61ea6cc41927.png)

少し見づらいですがハードウェアキーが`B1002322283`である事がわかりました。

minisapからハードウェアキーを取得します。

[minisap](https://go.support.sap.com/minisap/)にアクセスし

- `Available SAP Systems for Windows & Linux` は `HDB - SAP HANA Platform Edition` を選択
- `Personal Data & System Info`に必要事項と先程取得したハードウェアキーを入力。
- `License Agreement`　にチェック

上記入力を確認して、`Generate`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b8c1f077-6e80-0490-133b-55b4ab668831.png)

`Generate`を選択すると、`HDB.txt`ファイルがダウンロードできます。

ダウンロードしたファイルをopenSUSEを構築したEC2インスタンスに配置してください。（scp等々で）

本資料ではec2-userのホームディレクトリに配置しました。

```bash:openSUSE上で実行（ec-user）
# ホームディレクトリのHDB.txtをコンテナの/opt/sap/HDB_licenseにコピー
docker cp ~/HDB.txt a4h:/opt/sap/HDB_license

# hdb_license_updateを実行してライセンスを更新
docker exec -it a4h /usr/local/bin/hdb_license_update
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/2679c832-bd54-592f-a5a1-cb4ce9012f57.png)

`docker exec -it a4h  su - hdbadm -c "hdbsql -n localhost -i 02 -u SAPA4H -p Ldtf5432 -x 'SELECT * FROM M_license'"` を実行してライセンスを確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7a294b79-fd18-9fd3-b3f5-10534b578642.png)

minisapで生成したライセンスに切り替わっている事が確認できます。

## 余談

HANADB(HDB)のライセンス更新時にminisap上で`HDB - SAP HANA Platform Edition (64GB)`を選択してライセンスキーを生成しました。

この選択については、`Developer Edition`は`docker`以外にも`SAP CAL`で提供されており、 `SAP CAL`の資料（Getting Started Guide）では上記選択になっていたので参考にしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d1ebf42a-0719-fa9f-27d8-e583c0088b3d.png)

`docker版のDeveloper Edition`と `SAP CAL版のDeveloper Edition` がどこまで同一といったところですが……

## 総評

AWS上にopenSUSEのインスタンス用意して、`docker`で`Developer Edition`を構築した際にハマったポイントとしてはライセンス部分くらいでした。

ここらへんSAP側が対応してくれて、[Trials and Downloads - SAP Developer Center](https://developers.sap.com/trials-downloads.html)から取得できるライセンスキーで問題なければ、わざわざ`minisap`から取得しなくてもといった所ですが。

コミュニティブログの投稿やコメントをみる限り、ライセンス部分がうまく言ってないケースは結構多そう？