terraform-devlisted
Install: claude install-skill iamtatsuki05/dotfiles
# Terraform開発スキル
Terraformコードの実装、検証、リファクタリング、モジュール設計を効率的に行うためのガイド。
## 実装前の必須確認
**プロジェクト構成ファイルを必ず確認する。** Terraformバージョン、プロバイダ、バックエンド設定を把握する。
確認項目:
- `versions.tf` / `terraform.tf`: required_version, required_providers
- `backend.tf`: S3/GCS/Azure Blob等のバックエンド設定
- `.terraform-version`: tfenvで使用するバージョン
- `terragrunt.hcl`: Terragrunt使用時の設定
- `.tflint.hcl`: TFLint設定
- workspace / backend / state の場所、対象環境、production 影響
- `terraform plan` を安全に実行できる認証・変数・backend 初期化状態
`apply`、`destroy`、`import`、state 操作、production workspace への変更、リソース削除を含む plan は、対象環境・影響・戻し方を示してユーザー承認を取る。原則としてこの skill では plan までを標準にし、apply は明示依頼がある場合だけ行う。
### プロジェクト構造例
```
infrastructure/
├── environments/
│ ├── dev/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ │ └── terraform.tfvars
│ ├── staging/
│ └── production/
├── modules/
│ ├── vpc/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
│ ├── ecs/
│ └── rds/
└── shared/
└── backend.tf
```
## コーディング規約
### 基本スタイル
```hcl
# ローカル変数で共通値を定義
locals {
common_tags = {
Environment = var.environment
Project = var.project_name
ManagedBy = "terraform"
}
}
# リソース定義
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
enable_dns_hostnames = true
enable_dns_support = true
tags = merge(local.common_tags, {
Name = "${var.project_name}-vpc"
})
}
# データソース参照
data "aws_availability_zones" "available" {
state = "available"
}
# 条件付きリソース作成
resource "aws_eip" "nat" {