🐯

gcloud コマンドの結果を jnv で素早く抽出!

2024/04/05に公開

はじめに

記事の目的

こんにちは、クラウドエース SRE部 に所属している\textcolor{red}{赤髪}がトレードマークの Shanks です。

皆様は 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

https://github.com/ynqa/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 で見てみましょう。

list

このように、リアルタイムで json が抽出されていく様子がわかると思います。
また、抽出命令が誤っている場合もリアルタイムでエラーが表示されます。

GCE インスタンスの describe を確認する

GCE インスタンスの describe を確認するには以下のコマンドを利用します。

gcloud compute instances describe ca-shanks-test-1 \
  --project ca-shanks-test \
  --format json \
  > describe-1.json

同様に jnv で見てみましょう。

describe

まとめ

Google Cloud のリソースは、json を代表とする多彩なフォーマット形式での出力をサポートしています。
また、今回ご紹介した jnv のような便利なツールを利用すれば、より簡単にこれらの結果を扱うことができます。
ぜひ、開発や運用など様々な場面で活用してみてください。

参考記事

Discussion