ABAP Platform, Developer EditionとAWS OpenSUSE+Dockerで、個人開発環境を構築した記録


サマリ

  • ABAP Platform, Developer EditionをAWSのEC2で構築することができ、個人用のOn-premise ABAP環境が得られた。
  • OSとしてSUSE Linuxを採用することで、環境設定や構築の手間はかなり省略することが可能であることが確認できた。

事前準備が必要なもの

SAP.com、Docker、AWSのアカウントと、Putty、7-Zipのインストールが必要です。取得方法やインストール方法について、本記事では触れません。

事前準備が必要なもの 必要な場面
SAP.comのアカウント AS ABAPとHDBのライセンスファイルを入手するのに必要
Docker Hubのアカウント インストールファイルをAWSのEC2にhub.docker.comからPullしてくるのに必要 
AWSのアカウント EC2にSUSE Linuxのサーバーを作成するのに必要
PuTTyのインストール EC2の操作、ライセンスファイルのファイル転送用
7-Zip等 ライセンスファイル、readmeファイルの解凍用

事前準備が必要ないもの

ローカルPCのディスク空きの確保
ローカルPCにはテキストファイル&PDFをダウンロードするだけです。ディスクサイズを気にする必要はほとんどの場合ないはずです。

仕様一覧

AWS EC2

残念ながら、無料の範疇にはありません。アタッチしたボリュームサイズは多すぎたかもしれません。

仕様 詳細
AMI名 SUSE Linux Enterprise Server for SAP Applications 15 SP2
OS SUSE Linux Enterprise Server 15 SP2
インスタンスタイプ t2.xlarge
アタッチしたボリュームサイズ 200GB
vCPUの数 4
リージョン ap-northeast-1

Docker

Dockerは無料のPlanで問題ありません。

仕様 詳細
Plan Free Plan

必要なハードウェアのスペック

Linuxの場合です。AWS EC2のインスタンスタイプを選ぶ基準となります。

  • 4 CPUs
  • 16GB RAM
  • 150GB Disk

手順概要

大まかな手順の概要は以下の通りです。

  1. ReadmeとLicenseのファイルをローカルPCにダウンロードする。
    https://developers.sap.com/trials-downloads.html?search=ABAP+Platform
    必要なもの:SAPのアカウント

  2. ReadMeに記載のHardware Requirementに記載のスペックで、AWSのEC2のインスタンスを起動(作成)する。OSはSUSE Linuxを用いる。必要なCPU数のインスタンスタイプを選び、ストレージをアタッチする。
    必要なもの:AWSのアカウント

  3. EC2のインスタンスにSSHログインし、Dockerをインストールの上、pullする。
    必要なもの:Dockerのアカウント

4.Dockerのコンテナにライセンスファイルを格納する。

5.hostsファイルに記載を追加する。

1. ReadMeとLicenseのファイルをローカルPCにダウンロードする

1-1. SAP Developers

SAP DevelopersのTrials and Downloadsにて検索文字列ABAP Platformで検索するか、以下のURLにアクセスすると、 ABAP Platform 1909 Developer Edition on SAP HANA 2.0 が見つけられます。readmeファイルと、ライセンスファイルをローカルPCに保存します。インストールファイルのダウンロードをこのWebページで行うわけではありません。ローカルPCのディスクサイズは気にしなくても大丈夫です。

https://developers.sap.com/trials-downloads.html?search=ABAP+Platform

1-2. ダウンロードしたファイルを展開する

readmeliecense.zipというファイルがダウンロードできるので、zipを展開します。その中に、Licenses.rarReadme.rarというファイルがあるので、やはりこれも展開します。

なお、ダウンロードしたZIPファイルのファイル名が license ではなく、 liecense となっているので、PSCPの際にはご注意ください。

1-3. readmeの記載事項を読む

readme.pdfには、ハードウェア要件から、起動したDockerコンテナの停止の方法まで記載されていますが、ローカルPCにインストールするかのような書き方になっていますので、EC2用に読み替えます。以下、readme.pdfの各節ごとにコメントを入れておきますが、Dockerのインストールの箇所をのぞけば、基本的にreadme.pdfの内容に従って進めることができます。

Docker account

Dockerアカウントは必要なので、読み替え不要です。

Download Docker

SUSE Linuxの場合、Dockerのダウンロードは必要ありませんが、インストール作業は必要です。後ほど出てきます。

Make sure Docker Engine is running
Login to Docker
Pull the image ABAP Platform 1909 DevEdition to your local PC
Check that the pull was successful
Create a container and start the ABAP system

上記は、今回使用するAWS EC2の場合でも必要です。

2. ReadMeに記載のHardware Requirementに記載のスペックで、AWSのEC2のインスタンスを起動(作成)する。

すごく飛ばして、SSHでログインできたものとします。
ストレージをアタッチするとか、Elastic IPを設定するとか、セキュリティグループの設定をするとか、一通りの作業があります。

3. EC2のインスタンスにSSHログインし、Dockerをインストールの上、pullする。

3-1. Dockerパッケージのインストール

:~> sudo zypper install docker

3-2. Docker Daemonをブート時に起動するように設定

:~> sudo systemctl enable docker

3-3. Docker Daemonの開始

:~> sudo systemctl start docker

3-4. Dockerインストールの確認

:~> sudo docker run hello-world

(略)
Hello from Docker!
This message shows that your installation appears to be working correctly.
(略)

3-5. ログインユーザにdocker daemonにアクセスするための権限を付与

ログインしている ec2-user でdockerにアクセスしたいので、 ec2-user をdockerグループに所属させるように usermod します。また、再ログインを行います。

:~> sudo /usr/sbin/usermod -a -G docker ec2-user

3-6. Dockerにログイン

ここで、Dockerのアカウントが必要になります。

:~> docker login --username=yourhubusername -- [email protected]

3-7. docker pull (ABAP Platform 1909 Developer EditionをEC2のサーバにダウンロード)

:~> docker pull store/saplabs/abaptrial:1909

この作業は結構時間がかかります。

3-8. ホスト名を変更する

ホスト名が、vhcala4hciということが前提になっているようなので、ホスト名の設定ファイルを編集します。

:~> sudo vi /etc/hostname

viエディタで、ホスト名をvhcala4hciに書き換えます。

vhcala4hci
~
~
"/etc/hostname" 1L, 11C                                       1,10          All

リブートが必要なので、一度インスタンスを停止・再開をします。

3-9. ライセンスファイルをホームディレクトリに格納する

ローカルPCのライセンスファイルとして、A4H.txt と、HDB.txt をカレントディレクトリに配置して、PuTTYをインストールするとついてくるPSCPを使ってSSHプロトコルでライセンスファイルをEC2のサーバー側にファイルをコピーします。

> pscp -4 -P 22  -i ./my-key-pair.ppk -r readmeliecense/Licenses [email protected]:.

3-10. Docker run

Readmeに記載されているrunコマンドは以下なのですが、ライセンスの確認や、システム設定のチェック回避をするために、もう一つ下のコマンドを使いました。

Readmeに記載のrunコマンド
docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 store/saplabs/abaptrial:1909
実際に使っているrunコマンド
:~> docker run -v A4H.txt:/opt/sap/ASABAP_license -v HDB.txt:/opt/sap/HDB_license --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 store/saplabs/abaptrial:1909 -skip-limits-check -agree-to-sap-license
差分1

ライセンスファイルをEC2のサーバーのホームディレクトリに格納しておき、そのファイル名をそれぞれA4H.txt、HDB.txtとした場合、下記のオプションで指定します。runした後にdockerに入れることもできます。

-v A4H.txt:/opt/sap/ASABAP_license -v HDB.txt:/opt/sap/HDB_license
差分2

このオプションを入れることで、システムパラメータ設定チェックを回避することができます。

-skip-limits-check
差分3

このオプションを入れることで、インスタンス停止&開始した後にする、docker startコマンドの際に、Acceptとの入力待ちで、一時止まらなくなります。

 -agree-to-sap-license
補足

一度runをしたら、トラブルがない限り再度runをする必要はないのですが、今回セットアップ時には何度もrunをし直す必要が生じました。その際には、以下のコマンドでクリアする必要がありました。

:~> docker rm a4h

4. GUIでABAP Platformに接続する。

4-1. hostsファイルのファイルを編集

Windows10のローカルPC側で、下記のフォルダに格納されているファイルを編集し、AWS EC2へ、サーバー名でアクセスできるように以下を追記します。

C:\Windows\System32\drivers\etc

99.99.99.99 vhcala4hci      vhcala4hci.dummy.nodomain

99.99.99.99 は、EC2のElastic IPを指定することになります。

4-2. GUIの設定を追加する。

GUIの接続パラメータとして以下の設定をします。

項目 設定内容
システムID A4H
インスタンス番号 00
アプリケーションサーバー xxx.ap-northeast-1.compute.amazonaws.com (パブリックDNS)

これで、GUIで接続することができます。

5. 停止&再開の手順

インスタンス停止前に、docker stopをします。

:~> docker stop --time 7200 a4h

再開する際には、docker startをします。

:~> docker start -ai a4h