BTP をコマンドでいじりたい ~ CLI準備
この記事は SAP Advent Calendar 2021 の12/6分の記事として執筆しています。
btp CLI とは
文字通りですが、SAP BTP をコマンドラインで操作するためのツールです。
これを使うことで、以下の操作ができるそうです。
- サブアカウントやディレクトリの作成
- 資格情報の管理
- ユーザーの管理 など
ちなみに、以前までは sapcp CLI として使われていたそうです。
私は sapcp CLI も知らなかったので、これまで SAP BTP を操作するとしたら画面からー、ユーザーを追加するのもポチポチするしかないー、と思ってましたが、
繰り返し行う操作はコマンドで実施したほうがラクしやすいので、ちょっとずつ btp CLI 、触っていきます。
ダウンロード、インストール
公式の方法
から、ご利用の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 を使っているなら画面からいろいろするのではなく、コマンドでイントールまで済ませたいですよね。
ということで探したら楽する方法が用意されてました。助かります。
方法
詳細は 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