$30 off During Our Annual Pro Sale. View Details »

継続的な改善のためのmodulesの適切な分割単位 - NIFTY Tech Talk #23

継続的な改善のためのmodulesの適切な分割単位 - NIFTY Tech Talk #23

イベント
これから始めるTerraform超入門! NIFTY Tech Talk #23
https://nifty.connpass.com/event/337326/

登壇者
ニフティ株式会社
島田 大徳

ニフティ株式会社

November 27, 2024
Tweet

Video

More Decks by ニフティ株式会社

Other Decks in Technology

Transcript

  1. 例えば # 開発環境.tf resource "aws_s3_bucket" "this" { bucket = "unique-dev"

    } resource "bastion" "this" {} # 本番環境.tf resource "aws_s3_bucket" "this" { bucket = "unique-prod" } # resource "bastion" "this" {} aws_s3_bucket.this のbucketはグローバルに一意 bastion.this は開発環境のみに必要 6
  2. tfbackend、tfvarsで分けるパターン . ├── backend.tf ├── dev.tfbackend ├── dev.tfvars ├── main.tf

    ├── prod.tfbackend ├── prod.tfvars ├── providers.tf ├── terraform.tf └── variables.tf moduleを自由に使うことができ重複が減る 基本同じリソースが作成されることが保証できる ファイル数が少なくて済む 9
  3. ディレクトリ+modulesで分けるパターン . ├── dev │ ├── backend.tf │ ├── main.tf

    │ ├── providers.tf │ ├── service1.tf │ └── terraform.tf └── modules └── service1 ├── main.tf ├── outputs.tf └── variables.tf より柔軟 reconfigureしなくていい (root moduleが分かれる) 10
  4. よく採用する構造について . ├── dev │ ├── api.tf │ ├── github.tf

    │ ├── main.tf │ └── web.tf ├── modules │ ├── api │ │ └── main.tf │ ├── github │ │ ├── api.tf │ │ └── main.tf │ └── web │ └── main.tf └── prod 柔軟にリソースを追加できる 12
  5. 結論 認知負荷を下げ、継続的に改善可能にする tfファイルが肥大化したら分割する import, mv, rm を活用する DRYを追求するより、分割単位を意識する Terraform Stacksに期待

    HCP Terraformでpublic beta提供 ただしコンポーネントの分割についてはこれまで通り 適切な単位を考える必要がありそう 14