SAP BTP 開発環境を Lima と WSL2 で作ってみる

2022/12/13に公開

この記事は SAP Advent Calendar 2022 の12月14日分の記事として執筆しています。

仕事用の Mac(M1) の他、普段使っている Windows11 それぞれの環境で 同じ BTP 開発体験を得たいなーと思ったため、Lima と WSL2 を使って環境を作ってみます。
なお、BTP 開発環境は btp-setup-automator を使用してラクします。
また、 Lima や WSL2 もほぼ初期設定のままで進めてみますので、細かな設定等を施したい場合は個々のより詳細な記事や公式資料をご確認ください。

Lima と WSL2 のセットアップ

Lima

公式に従い、brew でインストールします。

brew install lima

VM インスタンスの生成

Lima の VM インスタンスを作るにはいろいろな方法があるのですが、とりあえず動かすならテンプレートを使用するのが一番簡単です。

テンプレートの一覧

limactl start --list-templates

出力結果

almalinux-8
almalinux-9
… 中略
docker
… 中略
ubuntu
vmnet

今回は Docker を使いたいので、 docker テンプレート(中身は Ubuntu )を指定します。

limactl start --name=default template://docker

また、 btp cli も cf cli も aarch64 には対応していないよう[1]なので、アーキテクチャを "x86_64" に指定します。
arch: "x86_64" を yaml に事前設定、または構築時に “Open an editor to review or modify the current configuration” を選択して記載すれば良いです)
なお、特にメモリサイズ等を指定しない場合のデフォルト定義は以下となるようです。

The current default spec:
OS: Ubuntu 22.10 (Kinetic Kudu)
CPU: 4 cores
Memory: 4 GiB
Disk: 100 GiB
Mounts: ~ (read-only), /tmp/lima (writable)
SSH: 127.0.0.1:60022

正常にインスタンス生成が完了した場合、以下のようなログが出力されます。

613.25 MiB / 613.25 MiB [-----------------------------------] 100.00% 8.80 MiB/s
INFO[0121] Downloaded the image from "https://cloud-images.ubuntu.com/releases/22.04/release-20221018/ubuntu-22.04-server-cloudimg-arm64.img"
... 中略
INFO[0309] READY. Run `lima` to open the shell.
INFO[0309] Message from the instance "default":
To run `docker` on the host (assumes docker-cli is installed), run the following commands:
------
docker context create lima-default --docker "host=unix:///Users/user/.lima/default/sock/docker.sock"
docker context use lima-default
docker run hello-world
------

作成したインスタンスを確認する

$ limactl list

NAME       STATUS     SSH                ARCH      CPUS    MEMORY    DISK      DIR
default    Running    127.0.0.1:60022    x86_64    4       4GiB      100GiB    /Users/user/.lima/default

VM へ接続

インスタンス作成時に指定した名前を使用し、接続することが出来ます。

$ limactl shell default

WSL2

こちらも公式の手順通りにインストール。
ディストリビューションは、Lima と同じ Ubuntu にします。

wsl --install -d Ubuntu

ユーザー名とパスワードを設定すれば、インストールは完了です。

Systemd を有効化

WSL の Version 0.67.6からサポートされるようになったので、有効にする

{
cat <<EOF
[boot]
systemd=true
EOF
} | sudo tee /etc/wsl.conf

WSL の再起動をわすれずに

wsl --shutdown

Docker のインストール

公式に準拠して進めます。

  1. GPG key を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. リポジトリのセットアップ
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. パッケージのインデックスファイルを更新してからの、Docker インストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 動作チェック
sudo docker run hello-world

以下のような結果が得られれば、インストール完了です。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:faa03e786c97f07ef34423fccceeec2398ec8a5759259f94d99078f264e9d7af
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

ついでに、毎回 sudo とするのは面倒なので、docker グループにユーザーを追加

sudo usermod -aG docker $USER

wsl を再起動させて、先程の hello-world を実行することができれば、完了です。

docker run --rm -it hello-world

BTP 開発環境構築

冒頭に記載した、btp-setup-automator を使用します。

# 名前は任意
docker container run --rm -itd --name "btp-setup-automator" "ghcr.io/sap-samples/btp-setup-automator:latest"

これだけで、BTP 開発環境構築終了です。

いろいろ 動作確認

$ btp --version
SAP BTP command line interface (client v2.24.0)

$ cf --version
cf version 8.4.0+b4c083e.2022-06-02

$ cds --version
@sap/cds: 6.3.2
@sap/cds-compiler: 3.4.4
@sap/cds-dk: 6.3.2
@sap/cds-dk (global): 6.3.2
@sap/cds-foss: 4.0.0
@sap/cds-mtx: -- missing --
@sap/eslint-plugin-cds: 2.6.0
Node.js: v16.17.1
home: /usr/local/lib/node_modules/@sap/cds-dk/node_modules/@sap/cds

$ mbt --version
Cloud MTA Build Tool version 1.2.18

開発に必要なツール群が一気に使えるようになりました。

最後に

今回は Lima や WSL2 上の Docker を用いた開発環境を構築する方法を試してみました。
それぞれテンプレートや、ツールのセットアップまで実施してくれるイメージが用意されているため、あっさり BTP 開発環境を用意することができました。
開発を始めるまでの敷居が低くなってありがたい限りです。
冒頭お断りさせていただいた通り、ほぼ初期設定のまま進めたため、このまま実務に使うには諸々過不足があるかと思いますが、それも設定次第でクリアできるはずですので、活用してみてほしいです。

脚注
  1. ちゃんとは調べられてませんが、たとえば btp cli だと amd64 版しか提供されていないみたいです。 ↩︎

Discussion