terraform.tfvars.jsonには再利用値と機密情報を格納する
ルール
In the root module, ensure terraform.tfvars.json stores: 1) values that other modules might also reuse, 2) sensitive information that must never be hard-coded (e.g., private keys).
(ルートモジュールのterraform.tfvars.jsonには、1) 他のモジュールでも再利用する値、2) ハードコードしてはならない機密情報を格納する)
解説
平文の機密情報はなるべくTerraformを通さずに利用したいところですが、利用せざるを得ないケースもあります。その場合はコード内にハードコーディングせず、terraform.tfvars.jsonに記述してsopsで暗号化します。
なおこのアプローチをとる場合、そのリポジトリでCursorやClaudeCodeなどクラウドタイプのAIを利用してはいけません。
サンプルコード
# terraform.tfvars.json(良い例)
{
"environment": "production",
"project": "myapp",
"region": "ap-northeast-1",
"db_password": "encrypted_password_here",
"ssl_certificate_private_key": "encrypted_key_here"
}
# variables.tf
variable "environment" {
type = string
description = "Environment name"
}
variable "project" {
type = string
description = "Project name"
}
variable "db_password" {
type = string
sensitive = true
description = "Database password"
}
# main.tf
module "database" {
source = "../modules/database"
environment = var.environment
project = var.project
password = var.db_password
}
module "networking" {
source = "../modules/networking"
environment = var.environment
project = var.project
}
terraform.tfvars.jsonには再利用値と機密情報を格納する https://www.tricrow.com/infrastructure/development-guidline/coding_standards.tfvars.content.html

