memo.log

技術情報の雑なメモ

Terraformの go-plugin 等のソースにデバッグログを仕込むメモ

github.com

前提

Terraform Core(親プロセス) と Provider(子プロセス) は RPC のサーバとクライアントという関係で動作する。RPCに関する処理は上述の go-plugin リポジトリのコード等で動作する。

ざっくり手順

  • go-plugin のソースを手元に clone する
  • デバッグ出力を入れたい箇所に logger.Debug("hogehgoe") 等を記載する(fmt.Println 等で直接出力しようとしても、親プロセスならおそらく出力されると思うが、子プロセスは出力されないようなので、 logger を介するといいようだ)
  • 親子(Terraform Core / Provider)それぞれの go.mod に上記リポジトリへのパスがあるが、手元のソースをみるように go mod edit -replace する
  • 親子それぞれビルドする
    • ドキュメントにしたがうと Core は go install . 、 Provider は make build で多分いける
  • あとは適当なディレクトリに .tf ファイル作って実行する。実行するときはビルドしたバイナリを直接指定する。例: TF_LOG=TRACE /home/hoge/go/1.21.1/bin/terraform plan