pipr,vcsim,govc,jqを組み合わせてクエリ構築を簡単にする
先日、piprというツールが紹介されていて、vSphere運用のワークフローを便利にする方法を思いついたので紹介
概要
vcsim + pipr + govc + jq を使うとインタラクティブにvCenter から情報を引き出す試行錯誤環境ができる。
--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を組み合わせたら欲しい情報は引き出せて、普段は以下のようにしている。
- テスト用のvCから情報を引き出すgovcのコマンドを作る
- コマンドが作れたら、以降無駄にvCenterのAPIを叩かないように一旦jsonに書き出しておく
- 書き出したjsonを使って必要な情報に絞り込むjqのクエリを考える
- 1と3のコマンドを繋ぎ合わせてうまく動作するか確認する
- 組み立てたコマンドを複数vCenterに流す仕組みを作って実行する
ただ、vCenterから取得できる情報のjsonは人間が把握するには情報量が多く、jqのクエリを作り切るのにそこそこ試行錯誤が必要で、ステップ3をやっているうちにステップ1のコマンドがよくわからなくなり... みたいなことがよくあった。
そこでvcsimを用いてAPIを何度コールしても問題無い状況を作り、piprのインタラクティブな環境でjqのクエリを試行錯誤できるようにすると, 元々のステップ1,2,3,4を1つにまとめることができるのではないか?というのが今回の紹介でした。