hashicorp/terraform
7 articles
前提知識
- ›Goの基礎知識(インターフェース、パッケージ、ゴルーチン)
- ›Terraformの基本的な使用経験(リソース、プロバイダー、plan/applyのワークフロー)
01
Terraformのアーキテクチャ:コードベースの地図
TerraformのGoモノリスを俯瞰する:バイナリの起動方法、内部パッケージの構成、そしてコマンドがCLIからプロバイダープラグインへと流れる仕組み。
02
グラフエンジン:Terraform が依存関係グラフをどのように構築し、走査するか
汎用 DAG ライブラリ、並列ウォーカー、そして Terraform の plan・apply グラフを構築するトランスフォーマーパイプラインを徹底解剖する。
03
プランニングとアプライ: リソースインスタンスの変更ライフサイクル
Context.Plan() からグラフウォーク、プロバイダー呼び出し、Context.Apply() までリソースインスタンスを追いかけ、インフラ変更の全ライフサイクルを解説します。
04
プロバイダープラグインシステム:gRPC、プロトコル、プロバイダーのライフサイクル
Terraform がプロバイダープラグインをどのように検出・起動し、gRPC 経由で通信するか — Go インターフェースから protobuf のワイヤーフォーマットまでを解説します。
05
ステート管理とバックエンド:永続化、ロック、マイグレーション
Terraformの3層ステートアーキテクチャ、ステート保存先を抽象化するバックエンド、そして terraform init 実行時のステートマイグレーションの仕組みを解説します。
06
CLIレイヤー:コマンド、ビュー、診断システム
TerraformのCLIコマンドの構造、ビューレイヤーによる人間向け・JSON出力の切り替え、そしてtfdiagnsがGoの標準エラー処理をリッチな診断情報に置き換えるしくみを解説します。
07
設定ファイルの読み込みと式の評価:HCLから cty.Value へ
Terraform が .tf ファイルを実行可能なインフラ変更へと変換するプロセス——HCL パース、モジュールツリーの組み立て、そして遅延式評価の仕組みを解説します。