前提
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
で多分いける
- ドキュメントにしたがうと Core は
- あとは適当なディレクトリに .tf ファイル作って実行する。実行するときはビルドしたバイナリを直接指定する。例:
TF_LOG=TRACE /home/hoge/go/1.21.1/bin/terraform plan