#IaC
9 件の記事
Terraform 基礎 #8 モジュール基礎 — リソースのまとまりの再利用とレジストリモジュール
すべての Terraform ディレクトリがすでにモジュールであるという事実から出発し、変数を入力に output を出力に持つ子モジュールを自分で作って module ブロックで呼び出す方法を整理します。レジストリの実績あるモジュールをバージョン固定と一緒に使う方法、そしてモジュールを分ける基準と過剰な分割の境界まで扱います。
Terraform 基礎 #7 リソースのライフサイクル制御 — 置き換えの条件、create_before_destroy、prevent_destroy
どの属性の変更が update で済み、どの変更がリソースの置き換えを強制するのかを plan から読み取る方法を整理します。置き換えの順序を逆転させて中断を減らす create_before_destroy、本番リソースの削除を防ぐ prevent_destroy、コードの外の変更を無視する ignore_changes、そして -replace フラグで置き換えを強制する方法まで扱います。
Terraform 基礎 #6 依存関係と繰り返し — depends_on、count と for_each、dynamic ブロック
参照がそのまま依存関係になり、作成順序が決まる仕組みと、depends_on が必要になる例外的な場面を整理します。count でリソースを複製するときにリストの途中削除が引き起こす再作成の落とし穴、キーベースだから安全な for_each との使い分けの基準、そしてネストしたブロックを繰り返す dynamic ブロックまで扱います。
Terraform 基礎 #5 state の正体 — tfstate ファイルの構造と plan が変更を計算する仕組み
terraform.tfstate ファイルを実際に開いて構造を確認し、plan がコード、state、実際のインフラの 3 つを比較して変更を計算する仕組みを整理します。state に機密情報が平文で残る問題とコミット禁止のルール、state list と show、mv、rm といった操作コマンド、state を失ったときに起きることまで扱います。
Terraform 基礎 #4 データソースと式 — 作らずに読み取る、条件式と for
Terraform が作っていない既存リソースの情報を読み取る data ブロックを、最新 AMI の検索を例に扱います。条件式で環境ごとの分岐を作り、for 式とスプラットでリストとマップを加工する方法も整理します。よく使う組み込み関数と、式の実験場である terraform console まで扱います。
Terraform 基礎 #3 変数・出力・ローカル値 — ハードコーディングを取り除く 3 つの道具
variable ブロックで値をコードの外に切り出す方法と、tfvars ファイル、-var フラグ、環境変数という 4 つの入力パスの優先順位を整理します。validation で誤った値を入り口で止め、output で結果を取り出し、locals で内部の計算に名前を付けるところまで、同じコードで複数の環境を作る土台を固めます。
Terraform 基礎 #2 HCL の基本文法 — ブロック、引数、リソースアドレスと変更の 3 つの形
HCL の骨格であるブロックと引数の構造、aws_s3_bucket.hello のようなリソースアドレスの意味と、リソース同士を参照する文法を整理します。plan 出力の記号を読みながら create、update、replace という変更の 3 つの形を区別し、fmt と validate でコードを整える習慣まで扱います。
Terraform 基礎 #1 IaC と Terraform — コンソールクリック運用の限界、インストールと初めての apply
コンソールのクリックで作ったインフラが、再現不能、履歴の不在、レビューの不在によって崩れていく過程を整理し、あるべき状態をコードで宣言する IaC がこの問題をどう解決するのかを説明します。CloudFormation、CDK、Pulumi の中で Terraform が占める位置を比較し、インストールから S3 バケットを init、plan、apply で作成して destroy で削除する最初のサイクルまで扱います。
AWS実践 #4 IaC — Terraform 入門
なぜ IaC か、Terraform の provider / resource / state の形、S3 + DynamoDB backend でチーム協業、モジュールで環境分離、そして #1~#3 のインフラを 1 行ずつコード化する流れまで。