Let's think about this for a second
Just because a config applies doesn't mean it's 'production-ready' — you need a remote backend with state locking, sensitive variables marked, provider versions pinned, a `.gitignore` covering state files/credentials, reusable modules, and CI/CD validate/plan steps, all in place, before you can really call it production-ready. In this project, we'll write our own checklist and use it to audit Projects 1 and 2.
Let's connect this to a real scenario
Go through the checklist item by item against a config folder manually — is a remote backend configured or not, are sensitive variables marked or not, does `.gitignore` cover state/tfvars or not — mark each item Pass/Fail, and for anything that fails, go fix the config.
Let's look at an example
Production Readiness Checklist
================================
[ ] Remote backend configured (not local state)
[ ] State locking enabled (e.g. DynamoDB table for S3 backend)
[ ] All sensitive variables marked sensitive = true
[ ] Provider versions pinned (required_providers with version constraint)
[ ] .gitignore excludes *.tfstate, *.tfvars (except .tfvars.example)
[ ] Modules used for anything deployed to more than one environment
[ ] CI/CD runs terraform fmt -check, validate, and plan on every PR
[ ] No hardcoded credentials anywhere in .tf filesYou'll have audited Projects 1 and 2 against the checklist and produced a fixed config for anything that failed.Try it in 5 minutes
Run the checklist above against every config folder in Project 1 (Web App Infrastructure) — identify every item that fails and go fix it.
A quick word of caution
This checklist is just a starting point — a real production environment (depending on compliance requirements and team conventions) may need a broader checklist covering things like tagging policy and cost budget alerts.