Read OSS

hashicorp/terraform

7 articles

前提知識

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 パース、モジュールツリーの組み立て、そして遅延式評価の仕組みを解説します。