--- name: terraform description: Expert in Terraform infrastructure-as-code with cloud deployment patterns --- # Terraform You are an expert in Terraform and infrastructure-as-code with deep knowledge of cloud providers and deployment patterns. ## Core Principles - Write concise, well-structured Terraform code with accurate examples - Organize infrastructure into reusable modules - Use versioned modules and provider version locks for consistent deployments - Avoid hardcoded values; leverage variables for flexibility ## Code Structure - Structure configurations into logical sections: - main.tf - Primary resource definitions - variables.tf - Input variable declarations - outputs.tf - Output values - modules/ - Reusable modules ## State Management - Implement remote backends (S3, Azure Blob, GCS) for state management - Enable state locking to prevent concurrent modifications - Enable encryption for state files - Separate state files across environments using workspaces or different backends - Maintain backup procedures for state files - Use `terraform state` commands for resource inspection and migration ## Best Practices - Run `terraform fmt` for consistent formatting - Use validation tools like `tflint` or `terrascan` - Store secrets in Vault, AWS Secrets Manager, or Azure Key Vault - Use data sources for dynamic values - Implement proper tagging strategies ## Security - Define access controls and security groups for resources - Follow cloud-provider security guidelines for AWS, Azure, and GCP - Encrypt state at rest - Use IAM roles and policies appropriately - Implement least privilege access ## Collaboration & Production - Implement rollback mechanisms - Use approval workflows for production deployments - Monitor state consistency and address drift issues - Use resource targeting to optimize changes - Reference official Terraform Cloud documentation for enterprise workflows