🔧

BTP をコマンドでいじりたい ~ CLI準備

2021/12/05に公開

この記事は SAP Advent Calendar 2021 の12/6分の記事として執筆しています。
https://adventar.org/calendars/6252

btp CLI とは

文字通りですが、SAP BTP をコマンドラインで操作するためのツールです。
これを使うことで、以下の操作ができるそうです。

  • サブアカウントやディレクトリの作成
  • 資格情報の管理
  • ユーザーの管理 など

ちなみに、以前までは sapcp CLI として使われていたそうです。

私は sapcp CLI も知らなかったので、これまで SAP BTP を操作するとしたら画面からー、ユーザーを追加するのもポチポチするしかないー、と思ってましたが、
繰り返し行う操作はコマンドで実施したほうがラクしやすいので、ちょっとずつ btp CLI 、触っていきます。

ダウンロード、インストール

公式の方法

SAP development tools#Cloud
https://tools.hana.ondemand.com/#cloud

から、ご利用のOS用のファイルをダウンロード・インストールすれば完了です。

方法

公式記載の内容を転記しちゃいます。

  1. Download the latest version of the client from the table below
  2. Extract the client executable from the tar.gz archive
    • Linux: Use the terminal to extract the tar.gz archive with tar -vxzf <tar.gz name>
    • macOS: Open the tar.gz file with a double click
    • Windows: Use powershell to extract the tar.gz archive with tar -vxzf <tar.gz name>
  3. Run btp from within the extracted folder or ensure that it's in your PATH.

コマンドで実施するには

しかしせっかく CLI を使うなら、または WSL2 を使っているなら画面からいろいろするのではなく、コマンドでイントールまで済ませたいですよね。

ということで探したら楽する方法が用意されてました。助かります。
https://github.com/ctapisab/sap-tech-bytes/tree/2021-09-01-btp-cli-installation

方法

詳細は GitHub の README 記載のブログに任せるとして、ここではコマンドだけ抜粋します。

getbtpcli をダウンロード。

> curl --remote-name --location --url "https://raw.githubusercontent.com/SAP-samples/sap-tech-bytes/2021-09-01-btp-cli/getbtpcli" && chmod +x getbtpcli

getbtpcli を実行することで、インストール。

> ./getbtpcli

Proceed (with Enter) only if you accept the SAP Developer Licence 3.1  
(see https://tools.hana.ondemand.com/developer-license-3_1.txt) ...  
Version is 2.10.0

$HOME/bin に実行ファイル等配置されるため、PATH に追加して使えるようにしましょう。
※ fishでの例です。config.fish等、起動時に読み込まれるファイルに記載してください。

set PATH $HOME/bin $PATH

ここまでの操作を dotfiles に入れたらもっとラクできそうです。

実行後の確認

helpを叩いて確認してみましょう。

> btp --help

Connecting to CLI server at https://cpcli.cf.eu10.hana.ondemand.com...  
SAP BTP command line interface (client v2.10.0)  
  
Usage: btp [OPTIONS] ACTION [GROUP/OBJECT] [PARAMS]  
  
General actions  
login Log in to a global account of SAP BTP  
logout Log out from SAP BTP  
target Set the default context for commands to the global account, a directory, or a subaccount  
enable autocomplete Enable command autocompletion  
disable autocomplete Disable command autocompletion  
  
Actions for accounts/available-environment ...

ログイン

ヘルプが得られるだけでは試せた!とは言い切れないので、ログインまで実施します。

btp login

まず聞かれるのが

CLI server URL [https://cpcli.cf.eu10.hana.ondemand.com]>

これは、 btp CLI の サーバーのURLで、上記の通り確認は入りますが、この1つのサーバー以外には存在しないとのことなので、Enter を押下して受け入れます。

次に聞かれるのが、以下ログイン情報です。

Global account subdomain>
User>
Password>

以上でログインまでできるはずです。

Login successful
We stored your configuration file at: /xxxx/xxxxx/.cache/.btp/config.json

(config が store されたということは、次回からはログインスキップされるのかな?)

まとめ

ログインまで、なので btp CLI の本領発揮とはいってないですが、まずはここまでにします。
次回は btp CLI でできることを help からざざっと追ってみたいと思います。

やってみてわかった注意点

bashとgrepのバージョン

bash

特に Mac を使っている場合、デフォルトのバージョンが"3.2.57"あたりになっていると思います。
しかしこのバージョンでは、${parameter,pattern} という変数展開に対応していないため、getbtpcli の以下の箇所で失敗しますので、バージョンアップする必要があります。

declare -r ARCH="${PLATFORM,,}-amd64"

Mac なら、brew で bash を install すると簡単です。

grep

同じく Mac を使っている場合 grep もバージョンによっては -P オプションが使えずに以下の箇所で失敗してしまいます。

grep -P -o '(?<=v)\d+\.\d+\.\d+'

こちらも brew で install すれば良いのですが、そのままでは ggrep になるため、PATH への追記が必要です。
※ fishの例です。

set PATH /opt/homebrew/opt/grep/libexec/gnubin $PATH

fish shell 向けのオートコンプリート機能が無い

btp CLI が提供するいろいろなコマンド、オプションを覚えるのは大変だよね。ということで autocomplete が提供されているのですが、対応しているのが以下の shell のみとのこと、、、

  • Bash
  • PowerShell
  • Zsh

まぁ、数ある shell 全部に対応するのは現実的ではないのでやむなしですね。

Discussion