怒られてDockerに引っ越した話 (SAP NW7.52 Dev. EditionをDockerにインストール)

図らずも、この記事の続きです。
deutschina.hatenablog.com

MacでSAPを使う環境を整えた数日後、とあるメールが届きました。簡単に言うと「きみのLaptopの中に、VirtualBox入っているみたいだけど、それうちの会社的にはダメだから」みたいな内容。Macで無料でやるにはVirtualBox一択なのに、これは参ったなと思ったものの、社畜なので本格的に怒られる前に自主規制することにしました。

対策を1分ほど考えたところ、Dockerを試してみることに。

先人の知恵を拝借

VirtualBoxのような仮想環境とDockerの違いみたいな話は、いろんなところで紹介されているのを斜め読み。今回やりたいのは、DockerにSAP Netweaver 7.52 Developer Editionをインストールすることなので、それに特化した記事を探してみる。英語だけでなく、日本語でもブログの記事を見つけたものの、今回は本家SAPのこの記事をベースにすることに。

Installing SAP NW ABAP into Docker | SAP Blogs

シリーズ記事になっていて、どうせならSAP Cloud ConnectorもDockerで入れちゃいなよということで、CCも入れてしまいました。自分のようなオンプレおじさんもクラウド対応待ったなしでございます。

いざ導入

新しいものを探したと言いつつ、上のブログの記事は2018年5月。その間にお試しNWも7.52 SP04と上がっていたりするので、そのままではうまく行かない状況に遭遇するのは、すでに織り込み済み。

幸いなことに、Githubの方は半年ほど前まで更新されていたので、主にこちらを見ながら作業します。
github.com

事前準備

Docker for Desktop

もちろん、Dockerを使うと言っている以上は、Dockerは必須だよねということで、Docker Desktop for Macはインストール済み。
www.docker.com

SAP Netweaver 7.52 SP04 Developer Edition

Dockerで環境作った後にSAPのインストールをするので、そのファイルはダウンロードしておいてねとのこと。自分の場合は、VirtualBoxに入れるときにダウンロードしたファイルたちが、まだDownloadsにいたので再利用。
developers.sap.com

Homebrewとunrar

SAP NWのダウンロードファイルは解凍(←古い言い方w)しておいてねということでunrarが必要。そのunrarをインストールするためにHomebrewが必要。
brew.sh
Homebrewのトップページ書いてあるコマンドをそのまま貼り付けて実行したら、続いてunrarのインストール。

$ brew install unrar

DockerのResources設定

SAP NWはDockerで扱うにしてはモノが大きいので、PreferenceのResource設定で、メモリを6GB、ストレージを100GB程度にしておく
f:id:deutschina:20200216115751p:plain

vm.max_map_countを1000000ぐらいに大きくしておいてねというのもあるが、Docker Desktopの場合のやり方は少し違うようなので後述。

導入開始

git cloneとSAP NWファイルの展開

ここからは、Githubに説明されている手順に沿って進めみた。クローンを置きたい場所に移動してからgit cloneする。

cd workspace
git clone https://github.com/nzamani/sap-nw-abap-trial-docker.git
cd sap-nw-abap-trial-docker

ダウンロードしてきたSAP NW 7.52 Developer editionのファイルを展開する。SP04ではファイル名が少し変わっているので注意。

$ mkdir sapdownloads
$ unrar x /Downloads/TD752SP04part01.rar ./sapdownloads

Dockerのビルド

git cloneしてきたファイルの中に、Dockerfileがいるので、そのままビルドが開始できる。

docker build -t nwabap:7.52 .

約15GBほどのファイルが転送されてビルドは完了。この記事では取り上げないけど、Dockerfileの中身を見るとビルドにあたってどんな処理が流れるかが見えるので興味深い。DockerhubでpullしたあとBuildする理由も頭の中で整理された感じ。

ビルドしたら、runする。(もし、これを読みながら進めている人がいたら、このコマンド実行はちょっと待って!)

docker run -p 8000:8000 -p 44300:44300 -p 3300:3300 -p 3200:3200 -p 50000:50000 -h vhcalnplci --name nwabap752 -it nwabap:7.52 /bin/bash

VirtualBoxでポートの設定したときと同じ番号が登場しているので、やっていることはイメージしやすいね。ここから、./install.shと行きたいところだけど、結構トラップがあった。

2020/2/22追記
触っていて、ポート番号50000のエラーが出ているのでパラメータに追加。

トラップたち

vm.max_map_count問題

このまますんなり行ければ、良かったんだけど、ここの設定で結構詰まった。
f:id:deutschina:20200216122552p:plain
ここに書いてある方法を試したけど、両方ダメだった。まずscreenを使う方は、日本語JISキーボードだと文字化けして使い物にならず(USキーボードではOK)。もう1つのdocker-machineは、入れてみたけどactiveなmachineがないよと言われて使えず。自分の場合、最近Dockerを入れたので今のDockerのバージョンでは、docker-machineに対応していないのではないかと想像。

その後、いろいろ探してみた結論としては、これで行けました。

$ docker run --privileged -p 8000:8000 -p 44300:44300 -p 3300:3300 -p 3200:3200 -h vhcalnplci --name nwabap752 -it nwabap:7.52 /bin/bash

まずは、--privilegedのオプション付きでrunをしてから、こんな感じで反映された。

# sysctl -w vm.max_map_count=1000000
sysctl vm.max_map_count=1000000

あとは、Githubで説明されているように、インストールを開始すればOK。

# /usr/sbin/uuidd
# ./install.exp

最後の敵は、、、

いよいよSAPのインストールが始まる!という最初のところで、Agreementに同意を求められるんだけど、そこでyesと入力した直後に処理が固まるという現象が発生。

f:id:deutschina:20200216105627p:plain

ブログの方にこんなことが書いてある。

Hint: According to the documentation this installation will take about 20-30 minutes, for me it took only 10-12 minutes. However, in 1 out of 10 cases the installation seems to hang for some reason which I can’t explain (I could reproduce that without Docker as well). In such cases you can simply kill your terminal session which will also stop the container. Then simply remove the docker container with docker rm nwabap751 before you execute the same docker run from above again and continue from there…

10回に1回ぐらいインストールがhangすることがあるけど、そんなときは1回docker containerをremoveしてやり直してみてねとさらっと書いてある。

f:id:deutschina:20200216105617p:plain

ちなみに、これが自分で試した時のrmの記録。10回に1回フリーズするんじゃなくて、フリーズしないのが10回に1回の間違いなのでは?いずれにしても、これは根気よく繰り返すしかないみたい。

この関門をクリアすると、ようやくSAPのインストールが始まり、特に問題がなければ無事にdockerへのお引っ越し完了。それにしても、一番時間かかったのが最後の「運試し」だったのは間違いない。

まとめと今後

ようやくDockerへの引っ越しが完了したので、オンプレおじさんとしては、もう少しクラウドにも手を出してきたいと思います。

ディクテーションチャレンジ

自分の中でのコンプレックスの話です。英語でも中国語でもそうなんだけど、自分より上手な人を見ると、なんとも羨ましい。

 

どちらの言語も仕事(英語)、サバイバル(中国語)で困らないレベルには何とか辿り着いたものの、そこからの上積みがなくて、彷徨える中級者から抜けられない。

 

何となく雰囲気で分かるからと甘えないで、「もう一段上がるには、きちんと聞き取らないと行けないな」という両方に共通の問題があるような気がしてきて、とりあえず英語でディクテーションを試してみることにしました。

 

お題目に選んだのはこの本。

The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data (English Edition)

The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data (English Edition)

  • 作者:Gene Kim
  • 出版社/メーカー: IT Revolution Press
  • 発売日: 2019/11/26
  • メディア: Kindle
 

この本を選んだ理由は、内容的に自分の業界に近いので、内容が取っ付きやすいのと、前作のThe Phoenix Projectが面白かったから。

 

やり方としては、一文ごとこれ以上分からないというぐらい繰り返し聞いて、答え合わせをするというもの。KINDLEとAUDIBLEの2大ツールのおかげで、何でも教材にできるのは良い時代になったよね。

 

f:id:deutschina:20200210172717p:image

 

とか言いながら、悲しいかな1ページ進むのに30分以上かかって、しかも残酷なほど聞き取れていない部分が可視化される。あまり精神衛生上良くないので、1日1時間やるのが限界。


成果が出るのはだいぶ先かもしれないけど、ひとまず前に進むのみでございます。

 

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

 
The DevOps 逆転だ!

The DevOps 逆転だ!

 
英語耳[改訂・新CD版] 発音ができるとリスニングができる

英語耳[改訂・新CD版] 発音ができるとリスニングができる

 
[音声DL付]話す英語 実戦力徹底トレーニング

[音声DL付]話す英語 実戦力徹底トレーニング

 

 

 

MacでSAPを使う環境を整える話 2

この記事の続きです。
deutschina.hatenablog.com
SAP GUIを入れるところまでやったものの、SAP GUI for JAVAABAP EditorはWindows版と比べて見劣りするので、やっぱりEclipseを使いましょうという話と、関連して最近トラブったのでその話あたりを。

Eclipseを入れる

Eclipseのインストール

やり方はこのサイトに説明されているので、それに従えば良い。
tools.hana.ondemand.com
ひとまずABAPをやる想定で、Eclipse 2019-12をダウンロードして、指定されたサイトから関連するプラグインをインストールする。とりあえずSAP関連のものが5種類ほどあるので、とりあえず全部入れてみる。入れたら、促されるままEclipseを再起動すればOK。

接続テストをする

とりあえずABAPのプロジェクトを新しく作ってみる。その際にSAPシステムへの接続情報を入力して、システム接続できたら、念のためSAP GUIに接続するためのボタンを押して、こんな感じで表示されればJava FXの設定も含めてOKだったということになる。

f:id:deutschina:20200208212747p:plain

トラブル発生

ホントに書きたかったのはこのあたりからかも。

いきなりの悲劇

ある朝、アプリの更新通知が降ってきて、何の気なしにYesを推したところから悲劇が。。。更新通知をYesしたことすら忘れかけた頃、Eclipseを立ち上げようとしたら、こんなポップアップが出てきて立ち上がらず。
f:id:deutschina:20200208102010p:plain
※実際にはスクリーンショットを撮ってないのでこれは拾いものです

え?なんで?と思ってググり始めたところ、eclipse.iniという設定ファイルで起動するJVMを指定する-vmというパラメータがあって、この設定を直せば動くようになるらしいということが判明。何の前触れもなくいきなり動かなくなったという点についても、何かアプリをインストールしたときに環境変数が書き換わることがあるらしい。

いかにも、eclipse.iniならココを見なさいというサイトがあったので確認する。

https://wiki.eclipse.org/Eclipse.ini

自分の設定ファイルはどうなっているかを確認する手順は、こんな感じ。

  • Applicationsフォルダを開き、Eclipseのアイコンを右クリックして"Show package contents"を選択
  • 新しいFinderウィンドウが開いたら、Contents→Eclipseの中にあるeclipse.iniをエディタなどで開く

確か最初に開いた時には、-vmのセクション自体がなかったので、こんな感じで足せばいいんでしょ?と思い、

-vm
/Library/Java/JavaVirtualMachine/sapmachine-jdk-11.0.6.jdk/Contents/Home

このブロックを追加して保存してEclipseを再起動しても状況が変わらず。

悪いのはこの子なのか?

その後、ファイルの設定を少しずつ弄っては起動せずを繰り返したところで、とある事が頭をよぎりました。

先日設定した別のマシンでは問題なく動いていたので、それと設定を比べれば良いのでは?

別のマシンではEclipseが問題なく立ち上がることを確認した上で、設定を確認してみたところ、JavaVirtualMachinesのフォルダに入っている顔ぶれが違っていました。具体的にはsapmachine-jdk.11.0.6の代わりにjdk.11.0.6が入っています。

ちなみにsapmachineというのは、Open JDKの1つで名前の通りSAP supportedなもの。SAP GUI for JAVAを入れれば同時に入ってくる(ハズ)。
SapMachine | An OpenJDK release maintained and supported by SAP

まさかと思い、事故が起きた環境でJavaVirtualMachinesの中身を見てみると、、、
f:id:deutschina:20200208095937p:plain
jdk.11.0.6はリカバリのために後で追加したもの

Eclipseが起動しなくなった日の9:24過ぎに、sapmachine-jdk.11.0.6が追加されていることが分かりました。この子が悪さしているのは間違いなさそうです。そこで、現在動いているマシンと同じ条件にするために、jdk.11.0.6を新たにインストールして、環境設定ファイルもこんな感じで書き換えてみました。

f:id:deutschina:20200208095948p:plain

※2020/02/10追記
下の赤枠の内容は直前のと重複しているので、本来不要なはず。

これでEclipseを再起動してみたところ、、、苦節2日(ずっとこれの対応をしていたわけじゃないけど)、ようやく元通りに動かせるようになりました。

こんなことも言いたくなる訳で。

これで、ひとまず環境は整ったので、いろいろ試していこうと思います。

MacでSAPを使う環境を整える話

このブログで書くのは初めてかもしれないSAPネタ。仕事用のマシンをMacにして以来、MacでSAPをいじりたいんだけどということで、環境を整えた話を書き残しておこうかなと。ちなみにここでいう「いじりたい」は、開発っぽいことをやりたいという意味。

SAP GUIのインストール

使うだけならブラウザだけでも何とかなるものの、やはりSAP GUIは入れておきたい。Macの場合はSAP GUI for JAVAを使うことになる。SAP GUI for Windowsと比べて多少の制約はあるものの、開発するという視点だとEclipseベースのツールを使えば、あまり不便は感じないはず。

ダウンロード

自身でSユーザを持っているなら、このあたりからダウンロード可能。リンクは見れるけど、ダウンロードできない場合は、管理者の人に相談するべし。

インストール

ダウンロードしてきたJARファイルをダブルクリックすればインストーラが起動するけど、その前にJavaFXもダウンロードしてインストールしておく必要がある。

gluonhq.com

ダウンロードして展開されたフォルダをまるごと、/Library/Java/JavaVirtualMachines の下あたりに置いておく。好きなところにおいて、PATHを通しておけばよいという考え方もあるけど、たまにPATHの内容が上書きされて迷子になったりするので、個人的には分かりやすいところに置いておく派。

ここまで準備ができたら、SAP GUIインストーラを起動する。具体的にはJARファイルをダブルクリックすればOK。基本的に流れに任せるままでいいんだけど、インストール先をルート直下の /Applications にするか、自分のユーザの下の /Users/user_name/Applications にするかを意識しておいた方がよい。自分の場合は無意識にUsersの下にインストールして、そのあとDock上のApplicationsを開いても「SAP GUIがいない!」と少し慌てたので。

あとは、Java FXのパスを入力するように求められるので、そこで先ほど自分が置いた場所を正確に入力する。
f:id:deutschina:20200208134630p:plain
この画面の中で簡易的にチェックしてくれているので、(おそらくjavafx.profilesが置いてある)場所を指定すると、こんな感じに画面表示が変わり、前に進める。
f:id:deutschina:20200208134623p:plain
インストールが完了したら、とりあえずSAP GUIを立ち上げてみよう。

アクセスするシステムの追加

GUIだけでは何も出来ないので、SAPシステムを追加する。SAP GUI for JAVAの場合システムを追加する方法がWindows版と違うので少し戸惑うはず。システム情報って、こんな感じで配布されてくるけど、

  • System ID (SID)
  • System 番号
  • サーバーアドレス

これをこんな文字列に変換して、

conn=/H/サーバーアドレス/S/32xx

※xxはSystem番号

この文字列をAdvancedタブの中に、こんな感じで入れてあげる。

f:id:deutschina:20200208175741p:plain

これでSAPシステムにログインできるようになれば、ひとまずOK。

SAP NW Developer Editionのインストール(マニア向け)

今のところアクセスできるSAPシステムがなかったり、寝ても覚めてもABAPに触れていたいみたいな場合は、このブログの記事にならってローカルにSAP NetWeaver Developer Editionをインストールしてしまうというのもあり。
blogs.sap.com
Macの場合、無料で済ませたいならVirtualBox一択になるのかなと。中にVirtualBoxを使ってのセットアップ方法が、ステップバイステップで書かれているので、この通りに従えばだいたいトラブルなく導入できるはず。

個人的に唯一ハマったのは、Leapのパスワードを簡単にし過ぎて、インストール中にパスワードWarningが出てSAPインストールが中断したぐらい。パスワードは、大文字小文字+数字の組み合わせにすること(特殊文字は必須ではない)。難しく考えずにLeapのインストール中にパスワードを決める時に警告が出なければOK。

これでコードは書けるけど・・・

ひとまずSAP GUIからログオンして、SE80などからコードは書けるけど、SAP GUI for JAVAの場合はABAP Editorが貧相なので、ここはEclipseをインストールして、、、という話は別記事に改めて書こうかと思います。

母艦交換

 

何故か、この子が我が家にやってくることに。 

Apple Mac mini (3.0GHz 6コアIntel Core i5プロセッサ, 256GB)

Apple Mac mini (3.0GHz 6コアIntel Core i5プロセッサ, 256GB)

  • 発売日: 2018/11/07
  • メディア: Personal Computers
 

多少盛って、メモリ32GBのCPUは6コアのi7にしたのもありますが、最近のMacはお高くなったなぁという印象しかございません。

 

我が家の母艦は、長い間MacBook Pro 13" 2013だったのですが、こちらは前回購入時にモリモリにしたためか、まだまだ普段使いではサクサク動いてくれています。あえて言えば、バッテリがヘタって1回交換したのと、512GBのディスクの容量がギリギリになってきたぐらい。 なのでリプレイスという判断にはなりづらい訳です。

 

と言いながら自分で伏線を張っていた

1ヶ月近く前の話ですが、会社のマシンがMacになったので、オフィスで作業する時に外付けキーボードが欲しいなということで、こいつらを調達していました。

Magic Keyboard - 英語(US)

Magic Keyboard - 英語(US)

  • 発売日: 2015/10/14
  • メディア: Personal Computers
 

 

Apple Magic Trackpad 2 - シルバー

Apple Magic Trackpad 2 - シルバー

  • 発売日: 2015/10/14
  • メディア: Personal Computers
 

ところが、オフィスに持って行って使ってみると、デスクが手狭になり何だかしっくり来ない。 ということで仕方なく自宅へ回送。自宅のデスクには、MacBook Pro "13とMac mini 2009があるので、組み合わせて使うなら埃をかぶっていたMac miniの方かなと思って接続をしてみたら、こんな事になりました。

 

 

2009年のMac miniでは、El Capitanまでしか上げることができません。それでもサクサク動いてくれれば何の不満もないのですが、

 

 

これだと用途も限られてしまうなぁ、はいお気づきですね。いつのまにかMac miniを置き換えようと自分の頭の中での議論がすり替わっていました。

 

置き換えるからには母艦にしよう!

ということで、注文してから約1週間。現物がやってきました。せっかくディスク容量が倍の1TBになり、メモリも4倍(32GB)と潤沢になったので、これからはMac miniを母艦として使うことにしました。自由に場所を動かせないので、自宅のデスク以外で作業するときは、MBP "13を使い続けることになりますが、家の中なら「画面共有」を使えば、外見はそのままにしてあたかもマシン自体がパワーアップした体(てい)にすることもできます。

 

さすがに外から接続することはないと思いますが、あれやこれやいろいろ試したい今日この頃です。