この記事は SAP Advent Calendar 2021 の 12/6 分の記事として執筆しています。
※ 元記事は Zenn にありますが、こちらにも移しました。
btp CLI とは
文字通りですが、SAP BTP をコマンドラインで操作するためのツールです。 これを使うことで、以下の操作ができるそうです。
- サブアカウントやディレクトリの作成
- 資格情報の管理
- ユーザーの管理 など
ちなみに、以前までは sapcp CLI として使われていたそうです。
私は sapcp CLI も知らなかったので、これまで SAP BTP を操作するとしたら画面からー、ユーザーを追加するのもポチポチするしかないー、と思ってましたが、 繰り返し行う操作はコマンドで実施したほうがラクしやすいので、ちょっとずつ btp CLI 、触っていきます。
ダウンロード、インストール
公式の方法
SAP development tools#Cloud から、ご利用の OS 用のファイルをダウンロード・インストールすれば完了です。
方法
公式記載の内容を転記しちゃいます。
- Download the latest version of the client from the table below
- 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>
- 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 全部に対応するのは現実的ではないのでやむなしですね。