/var/log/study

つまり雑記

pipr,vcsim,govc,jqを組み合わせてクエリ構築を簡単にする

先日、piprというツールが紹介されていて、vSphere運用のワークフローを便利にする方法を思いついたので紹介

gihyo.jp

概要

vcsim + pipr + govc + jq を使うとインタラクティブにvCenter から情報を引き出す試行錯誤環境ができる。

pipr_vcsim_govc_jq

--no-isolation

piprはbubblewrapというツールを使って環境を保護するので、ファイルを書いたり消したりができないようになっているが、govcを使う際にsessionをファイルに書こうとするので、--noisolationオプションが必要。
ただ、自分が知らないだけで、何か--no-isolationオプションを使わない方法があるかもしれない。

govcに -persist-session=true Persist session to disk [GOVC_PERSIST_SESSION] があるのでそれを有効にすると pipr の --no-isolation は不要になる。上のgifもソレに合わせて作り直している

背景/改善ポイント

vSphereをそこそこの規模で運用していると、運用している全vCenter/ESXiからサッと情報を得て引き出して現状を確認したい、ということが多々ある。
大抵のケースではgovcとjqを組み合わせたら欲しい情報は引き出せて、普段は以下のようにしている。

  1. テスト用のvCから情報を引き出すgovcのコマンドを作る
  2. コマンドが作れたら、以降無駄にvCenterのAPIを叩かないように一旦jsonに書き出しておく
  3. 書き出したjsonを使って必要な情報に絞り込むjqのクエリを考える
  4. 1と3のコマンドを繋ぎ合わせてうまく動作するか確認する
  5. 組み立てたコマンドを複数vCenterに流す仕組みを作って実行する

ただ、vCenterから取得できる情報のjsonは人間が把握するには情報量が多く、jqのクエリを作り切るのにそこそこ試行錯誤が必要で、ステップ3をやっているうちにステップ1のコマンドがよくわからなくなり... みたいなことがよくあった。
そこでvcsimを用いてAPIを何度コールしても問題無い状況を作り、piprのインタラクティブな環境でjqのクエリを試行錯誤できるようにすると, 元々のステップ1,2,3,4を1つにまとめることができるのではないか?というのが今回の紹介でした。