本記事ではSAP ABAP Platform 1909, Developer Edition
をSAP
がdockerhub
に公開しているイメージを使い構築します。
ABAP Platform, Developer Edition
こちらのイメージを利用すれば、SAP? エンタープライズのすごいやつ? みたいにSAPにまったく触れてきていなかった人でもABAP開発環境を構築できます。
(ABAPはSAPで利用される開発言語)
ここで構築した環境を利用することでABAPのコードを実行してみたり、ABAP開発のあれこれを体験できます。
今まではABAPのトライアル環境といえば、Trials and Downloads - SAP Developer Centerからファイルをダウンロードして、ドキュメントを読みながらインストール作業と構築をしていく流れでしたが。
Dokerイメージで公開された事により、手順がだいぶ簡素になったように思います。
それにしても、あのSAPがDeveloperEditionをDockerで公開してくるというのは、なんとも時代の流れを感じます。
SAP Cloud Appliance Library (CAL)にも登録されている
2021年6月14日にSAP Cloud Appliance Library (CAL)
にもSAP ABAP Platform 1909, Developer Edition
が追加されています。
ですので今回紹介するDocker
による構築ではなくCAL
を利用してAWS、Azure、Google Cloudにデプロイする事も簡単にできるかと思います。
※SAP Cloud Appliance Library (CAL)
はSAPの様々な製品が登録されており、その登録されている製品を所有するパブリッククラウドアカウント(AWS、Azure、Google Cloud Platform)に対して手軽にデプロイできるサービスです。
## 各種Webサイト
- SAP ABAP Platform 1909, Developer Edition: AVAILABLE NOW
- Setup Instructions※閲覧にはDockerHubアカウントが必要です
- Trials and Downloads - SAP Developer Center
- How to install a new license in your SAP ABAP Platform Developer Edition
-
SAP ABAP Platform 1909, Developer Edition, can't connect to HDB DB in Eclipse
SAP ABAP Platform 1909, Developer Edition on Docker: Tips and Tricks
事前準備
今回行う手順では下記が必要となるため事前に準備して下さい。
- SAP P-User もしくは S-User の準備
- DockerHubアカウント
SAP P-User もしくは S-User
上記サイトからSAPシステム
に接続するクライントであるSAP GUI
のダウンロード 及び トライアル環境のreadmeとライセンスを取得するためには、P-User もしくは S-Userと呼ばれるユーザIDが必要となります。
P-UserはSAP Communityから発行できるためこちらから発行して下さい。
SAP Communityにアクセスして、下記の赤枠の所から登録ができます。
所属している組織でS-Userを持っている人はそちらを使って下さい。
DockerHubアカウント
DockerHubアカウントについてはdockerhubから登録できるためコチラから登録して下さい。
SAP GUI for Windows と Readme and Licensesのダウンロード
上記ページからABAP Platfrom 1909 Developer Edition on SAP HANA 2.0を探してSAP GUI for Windows
とReadme and Licenses
をダウンロードして下さい。
この2つのファイルが取得できればOKです。
※2021年10月現在、Readme and Licenses
に含まれるライセンスは本手順では使えませんでした。
ですので、ライセンスキーについてはSAP License Keys for Preview, Evaluation and Developer Versionsから取得できるライセンスを利用しています。
Readme and Licensesを参照してみる。
ダウンロードしたReadme and Licensesにはreadme.pdf
とLicenses
が含まれています。
まずはreadme.pdf
を参照してみます。
結論を話すとreadme.pdf
にある情報だけだと断片的で構築は完了しません。
pdf中にリンクの記載がありますが、Setup Instructionsが手順の詳細となりコチラを参照して構築していく形になります。(あとSAPコミュニティのブログに参考になるブログがいくつもある)
ハードウェア要件について
readmeを読むとハードウェア要件については Setup Instructionsを参照と書いてあるのでコチラを確認します。
現状は下記のようです。
- Linux
- 4 CPUs
- 16GB RAM
- 150GB Disk
- Windows
- 4 CPUs for Docker Desktop
- 16GB for Docker Desktop
- 170GB disk for Docker Desktop
- macOS
- 4 CPUs for Docker Desktop
- 16GB for Docker Desktop
- 170GB disk for Docker Desktop
今回はAWS EC2でインスタンスを用意して利用していきます。
Linuxディストリビューションについては特に記載はありませんが、SAP
だったらSuSE
かRed Hat
かな? となんとなく思う所です。
コミュニティブログを読んでいると、下記のようなコメントを中の人がしていてopenSUSE
で試してるっぽいので今回はopenSUSE
を選択してみます。
We only tested it with 15.0.
I believe, at the time 7.52 SP04 was new, the latest version of openSUSE was 15.1 - with >which we DID have a problem - problem was solved when we reverted to 15.0 .
Therefore I recommend 15.0.
今回構築する環境について
ローカルPCにSAP GUIのインストール
SAPシステムに接続するGUIクライアントとであるSAP GUI for Windows
のインストールについて記載すると記事が長くなるので別記事に分けます。
SAP GUI for Windowsをインストール。SAP Logonに接続エントリを追加してSAPシステムにログインしてみる
EC2インスタンスの準備
今回は下記、MarketPlace
にあるopenSUSE Leap 15.3
のAMIを利用してEC2インスタンスを準備しました。
PrivateIPアドレス 10.10.10.182
InstanceType t3.xlarge( vcpu 4;Memeory 16GiB)
EBS 150GiB(gp3)
※今回構築しているEC2インスタンスについては、Privateサブネットに配置し(NATでインターネットには出れる)にVPN経由でsshに接続しています。
SAP-ABAP
Setup InstructionsのSAP GUI
項目にABAPシステムの情報が記載されています。
SID A4H
Please, add a custom specified system with the Application Server or localhost if you exposed the port 3200 (i.e. -p 3200:3200) or vhcala4hci if you updated your hosts file. Finally use Instance 00 and SID A4H.
The user name is DEVELOPER with the password Ldtf5432.
SAP-HANA
Setup InstructionsのSAP HANA Studio
項目にHANADBの情報が記載されています。
今回はHANADBに直接接続しませんが、記載しておきます。
SAP HANA Studio
Please, use or localhost if you exposed the port 30213 (i.e. -p 30213:30213) or vhcala4hci if you updated your hosts file. Finally use Instance 02 and MDC (the port 30213).
For the database SYSTEMDB, use the user SYSTEM with the password Ldtf5432.
For the database HDB, use the user SAPA4H with the password Ldtf5432.
パッケージアップデートからdocker pullまで
今回利用したAMI openSUSE Leap 15.3 については最初からdockerがインストール済みの状態となります。(Docker version 20.10.6-ce, build 8728dd246c3a)
sshで構築したEC2インスタンスにアクセスして、パッケージアップデートからdocker pull
までを実施します。
# とりあえずパッケージアップデート
sudo zypper update
# 自動起動設定
sudo systemctl enable docker
# dockerグループにec2-userを追加
sudo gpasswd -a ec2-user docker
# 設定反映させるため再起動
sudo reboot
# コマンド実行後ユーザ名とパスワード名を聞かれるのでdockerhubで取得したアカウントを入力
docker login
# ABAP Platform 1909 DevEdition を pull(かなり時間がかかります)
docker pull store/saplabs/abaptrial:1909
docker pull
はかなり時間がかかりますが、気長に待ちましょう。
docker run コマンド調整
Setup Instructions のRun
項目を読むとdocker run
コマンドを実行するにあたっての諸注意が記載されています。
- Linuxカーネルの制限チェックとオプション
- -pオプション;ポートの調整
- -agree-to-sap-licenseオプション
一つずつ解決していきます。
Linuxカーネルの制限チェック
Setup Instructions にはカネールパラメータについては下記のように記載されており、docker runに--sysctl
をつけて対応するモノとhost自体のsysctlに設定する値の二種類があります。
kernel.shmmax (allowed for docker run --sysctl) > 21474836480
kernel.shmmni (allowed for docker run --sysctl) > 32768
kernel.shmall (allowed for docker run --sysctl) > 5242880
kernel.msgmni (allowed for docker run --sysctl) > 1024
kernel.sem (allowed for docker run --sysctl) > 1250 256000 100 8192
Number of Opened File descriptors (RLIMIT_NOFILE, ulimit -n, docker run --ulimit nofile=1048576:1048576) > 1048576
vm.max_map_count (must be set on the host via sysctl on GNU/Linux) > 2147483647
fs.file-max (must be set on the host via sysctl on GNU/Linux) > 20000000
fs.aio-max-nr (must be set on the host via sysctl on GNU/Linux) > 18446744073709551615
must be set on the host via sysctl on GNU/Linux
と記載されている下記パラメータは/etc/sysctl.conf
に設定を行います。
vm.max_map_count=2147483647
fs.file-max=20000000
fs.aio-max-nr=18446744073709551615
残りのパラメータはdocker run
にパラメータを渡すことにより調整します。
--sysctl kernel.shmmax=21474836480 --sysctl kernel.shmmni=32768 --sysctl kernel.shmall=5242880 --sysctl kernel.msgmni=1024 --sysctl kernel.sem="1250 256000 100 8192" --ulimit nofile=1048576:1048576
# vim で /etc/sysctl.confを編集して末尾に下記を追加
#vm.max_map_count=2147483647
#fs.file-max=20000000
#fs.aio-max-nr=18446744073709551615
sudo vim /etc/sysctl.conf
# 更新した/etc/sysctl.conf から読み込み
sudo sysctl -p
-agree-to-sap-licenseについて
docker run
実行時にYou have to accept SAP Developer Center Software Developer License Agreement before you can conitue.
とLicense Agreementに同意するかプロンプトでAccept
の入力を求められます。
-agree-to-sap-license
をつけるとこの確認をバイパスする事ができます。
ポートの調整
docker run
で公開するポートを調整します。
Setup Instructions にはポート30215
について記述がありませんが、どうやら追加しないとHDBに接続できないらしいので追加しておきます。
本手順ではHANA Studio
を利用してHANADB
に直接アクセスしないのであまり関係ありませんが一応設定しておきます。
参考ブログ:SAP ABAP Platform 1909, Developer Edition, can't connect to HDB DB in Eclipse
#3200: SAPGUI Instance 00
#3300: RFC Instance 00
#8443: SAP Cloud Connector
#30213: SAP HANA MDC Database
#30215: SAP HANA HDB
#50000: AS ABAP HTTP
#50001: AS ABAP HTTPS
# docker runに追加するパラメータ
-p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 30215:30215 -p 50000:50000 -p 50001:50001
docker runコマンドを実行
最終的には下記のようなコマンドになりました。
docker run \
--stop-timeout 3600 \
--sysctl kernel.shmmax=21474836480 \
--sysctl kernel.shmmni=32768 \
--sysctl kernel.shmall=5242880 \
--sysctl kernel.msgmni=1024 \
--sysctl kernel.sem="1250 256000 100 8192" \
--ulimit nofile=1048576:1048576 \
-p 3200:3200 \
-p 3300:3300 \
-p 8443:8443 \
-p 30213:30213 \
-p 30215:30215 \
-p 50000:50000 \
-p 50001:50001 \
-i --name a4h -h vhcala4hci store/saplabs/abaptrial:1909 \
-agree-to-sap-license
コマンドを実行すると最終的に画像のようなメッセージがでてくるため、こちらが表示されたら起動完了です。
SAP GUIで接続してみる
ローカル端末にインストールしたSAP GUI
を起動して接続エントリを追加します。
本記事では利用した接続情報の紹介だけで、エントリの追加方法については別記事に分けます。
SAP GUI for Windowsをインストール。SAP Logonに接続エントリを追加してSAPシステムにログインしてみる
SAPシステムにログインしてみる
手順にあるよう、DEVELOPER
ユーザとそのパスワードでクライアント001にログインしてみます。
2021年10月にAWS上の構築した本環境ではLogon not possible(error in license check)
と表示されログインできませんでした。
Logon not possible(error in license check)
と表示されているのでライセンスがおかしい。
コミュニティブログのコメントで中の人がDEVELOPER
と同様のパスワードでSAP*
という特権ユーザでアクセスできると記載があったので試してみます。
※SAP*
はライセンス関係なくログインできる。なお一般的には通常ログインできないように調整されていたりします
SAP*
でCLI001
にログインできました。
SLICENSEでライセンスの確認
左上の入力ボックス(コマンドフィールド)にslicense
と入力し実行します。
SAPシステムにインストールされているライセンス情報が表示されますが、どうやら本手順にてAWS上に構築した環境についてはハードウェアキーがインストールされているライセンスキーのハードウェアキーから変更になっていて、ライセンスが有効になっていないように見えます。
minisapでライセンスの取得
SAPのトライアル環境で利用するライセンスキーについては、下記サイトから取得できるためこちらからダウンロードを実施します。
SAP License Keys for Preview, Evaluation and Developer Versions
Description
は A4H - SAP NetWeaver AS ABAP 7.4 and above (Linux / SAP HANA)
を選択。
Hardware key
にはslicense
画面で確認した、Active Hardware Key
を入力
必要情報を入力してことを確認してGenerate
を選択
A4H_Multiple.txt
というライセンスがダウンロードできました。
minisapで取得したライセンスファイルをdocker cpでコピー
現在、SAPシステムについてはdocker run
で起動したままになっているかと思うので、ssh
で画面からCTRL-c
で一旦停止します。
先程ローカルにダウンロードした、A4H_Multiple.txt
をEC2上にコピーし、ホームディレクトリに配置します(scp等で)
docker cp ~/A4H_Multiple.txt a4h:/opt/sap/ASABAP_license
docker startで起動
docker start -ai a4h
#起動メッセージがでるまでしばらく待ちます
起動したらSAP GUI
で接続し、DEVELOPER
でログインします。
ログインできました。
修正後のslicenseを確認してみる
修正後のslicenseの画面を確認してみます。
ハードウェアキーとインストールされているライセンスのハードウェアキーが一致しており、ステータスもグリーンになっている事が確認できます。
また有効期限が2022.1.17
となっているため3ヶ月後にはライセンスが切れます。
ライセンスが切れる間際にはまた、SAP License Keys for Preview, Evaluation and Developer Versionsからライセンスをダウンロードしてインストールして下さい。
docker runで表示されていたメッセージについて
docker run
コマンドの実行時に表示されているメッセージについて流しましたが、あとから確認してみると実は色々と情報が含まれていました。
ABAPのライセンスについてはインストールされてないけど、/opt/sap/ABAP_license
に格納されてるライセンスで差替は成功したと出ている。
が、もともとも/opt/sap/ABAP_license
に格納されているライセンスを確認するとすでに期限が切れているしハードウェキーが異なっている。(下記のコマンドで、コンテナ内の/opt/sap/ASABAP_license
を確認するとライセンスキーが違う事が確できます。)
docker exec -it a4h less /opt/sap/ASABAP_license
また下記ファイルにupdateしたログが残っており現行のハードウェキーが取得できました。
docker exec -it a4h /usr/local/bin/asabap_license_update
本手順ではSAP*
でログインしてハードウェキーを確認していましたが、docker run
の実行結果を注意深くみていればライセンスがおかしい事に気がつけたかもしれません。
今回構築したEC2の料金
24/365でずっと起動させてるケースで月額 $173 ほどかと思います。
参考:AWS Pricing Calculator - ABAP Platform Developer Edition On openSUSE 24/365稼働
土日を停止するだったり、日中のみ稼働する等に限定すれば更に金額お安くなるかと思います。
(平日に8時間稼働のケースだとだいたい月額 $42 ほど)
[参考AWS Pricing Calculator - ABAP Platform Developer Edition On openSUSE 平日8時間稼働]
(https://calculator.aws/#/estimate?id=38e661f245ae0bdf59a08cbdd8ac6a4381a39cba)
総評
構築にあたり、ライセンスの所に少し難はありました。
本手順ではABAP側のライセンスを調整して、HDB側のライセンスは問題なかったので特に処置はしませんでしたが、構築時期によってはHDB側のライセンスが失効してしまう事もあるのかも?
(今回利用したDockerイメージを2021-08-09以降に利用したらそんな事もあるかも)
ただし、これを加味してもわりとさっくりと環境構築は完了しました。
手軽にABAP開発環境が手に入るのはとても素晴らしい事かと思います。
なお、現状、SAP ABAP Platform 1909, Developer Edition
についてはDockerイメージ以外ではSAP CALでしか提供していないように思います。
最近、Docker Desktop
の有料化が始まりましたが、SAPからDockerイメージ以外での提供方法が今後増えるのかどうかが少し気になる所かと思います。