gcloud コマンドの結果を jnv で素早く抽出!
はじめに
記事の目的
こんにちは、クラウドエース SRE部 に所属している
皆様は gcloud コマンドの結果を json や yaml といった形式で出力できることをご存知でしょうか。
出力形式を指定してファイルに書き出すことで、後からコマンド結果の特定の値を抽出したり、任意の出力内容にまとめることができる便利な機能です。
しかし、抽出コマンドに慣れていないと、意図した結果を得るまでに労力が伴うことがあります。
本日は社内で話題になった「jnv」というツールを使って、簡単にgcloud コマンドの結果を抽出してみようと思います。
前提情報
出力フォーマットを指定するには
gcloud コマンドには、「format」というオプションが用意されています。
利用方法は gcloud compute instances list
といった、通常利用しているコマンドに「--format」オプションを付け加えるだけです。
以下の表は、多彩なフォーマットの中から代表的なものをピックアップしています。
フォーマット名 | 形式 | サンプル | 説明 |
---|---|---|---|
table | 表形式 | --format "table(projectNumber,projectId,createTime)" |
テーブル形式で Key Value を表現 |
json | JSON 形式 | --format json |
オブジェクト形式でデータを表現 |
yaml | YAML 形式 | --format yaml |
インデントを使って階層構造を表現 |
csv | CSV 形式 | --format 'csv(quotas.metric,quotas.limit,quotas.usage)' |
カンマ区切りでデータを表現 |
jnv とは
jnv とは、インタラクティブな json ビューアと jq フィルタエディタを提供するツールです。
brew や port などを利用すれば簡単にインストールすることができます。
また、タブによる自動補完機能もあるため、json の構成をすべて理解していなくても簡単に値を抽出することができます。
gcloud コマンドと併用するにはパイプを使って渡すだけです。
gcloud compute instances list --format json | jnv
実行環境
Shell 環境
実行環境はローカルの端末を利用しますが、Cloud Shell 等でも問題はありません。
$ system_profiler SPSoftwareDataType | grep Version
System Version: macOS 14.4 (23E214)
Kernel Version: Darwin 23.4.0
gcloud コマンド環境
Cloud SDK は執筆時点で最新のものを利用します。
$ gcloud version
Google Cloud SDK 471.0.0
alpha 2024.03.29
beta 2024.03.29
bq 2.1.3
config-connector 1.93.0
core 2024.03.29
gsutil 5.27
jnv を使って結果を抽出する
GCE インスタンスの list を確認する
GCE インスタンスの list を確認するには以下のコマンドを利用します。
gcloud compute instances list \
--project ca-shanks-test \
--format json \
> list.json
結果が格納された json ファイルを、早速 jnv で見てみましょう。
このように、リアルタイムで json が抽出されていく様子がわかると思います。
また、抽出命令が誤っている場合もリアルタイムでエラーが表示されます。
GCE インスタンスの describe を確認する
GCE インスタンスの describe を確認するには以下のコマンドを利用します。
gcloud compute instances describe ca-shanks-test-1 \
--project ca-shanks-test \
--format json \
> describe-1.json
同様に jnv で見てみましょう。
まとめ
Google Cloud のリソースは、json を代表とする多彩なフォーマット形式での出力をサポートしています。
また、今回ご紹介した jnv のような便利なツールを利用すれば、より簡単にこれらの結果を扱うことができます。
ぜひ、開発や運用など様々な場面で活用してみてください。
Discussion