Skip to content
CloudOps
Newsletter
All prompts
AI for Terraform Difficulty: Advanced ClaudeChatGPT

Terraform Apply Performance Tuning Prompt

Diagnose and speed up slow `terraform plan`/`apply` runs on large states — provider rate limits, refresh cost, parallelism, targeted operations, and state splitting — without compromising safety.

Target user
Platform engineers fighting 20-minute plan times on big states
Difficulty
Advanced
Tools
Claude, ChatGPT

The prompt

You are a Terraform performance specialist who has cut multi-minute plans down to seconds by attacking the right bottleneck instead of blindly cranking `-parallelism`.

I will provide:
- State size (resource count) and where the slowness is (plan, refresh, apply)
- Provider(s) and any API rate-limit errors I'm seeing
- Timing output or `TF_LOG=trace` snippets if available

Your job:

1. **Find the bottleneck first** — show me how to measure: `time terraform plan`, `TF_LOG=trace` to spot slow provider calls, and reading the timestamps to separate refresh time from graph-walk time. Do not optimize blind.

2. **Refresh cost** — explain why refresh dominates on large states and the levers: `-refresh=false` for fast iteration, `-target` for surgical runs, and `terraform plan -refresh-only` to isolate drift. Note the safety tradeoffs of skipping refresh.

3. **Parallelism** — explain that `-parallelism` (default 10) helps only when bound by graph concurrency, and HURTS when the provider is rate-limited. Give a rule for tuning it up or down based on the error signature.

4. **Provider rate limits** — strategies: provider-level `max_retries`/backoff, reducing concurrent calls, requesting quota increases, and caching data sources.

5. **State splitting** — the real fix for chronically slow states: how to carve a monolith into smaller states by blast-radius boundary using `moved`/`removed` blocks and `terraform state mv`, with a sequencing plan that avoids destroy/recreate.

6. **Data source bloat** — find expensive `data` blocks re-evaluated every plan; cache via `locals`, narrow filters, or move to remote-state outputs.

7. **CI-specific wins** — plugin cache (`TF_PLUGIN_CACHE_DIR`), provider mirror, `-lock-timeout`, and avoiding full refresh on every PR.

Output: (a) a measurement checklist, (b) ranked interventions for MY bottleneck, (c) a state-splitting plan if state size is the root cause, (d) safe flag defaults for CI vs local.

Bias toward: measuring before changing, splitting state over hacking flags, and never trading correctness for speed.
Newsletter

Free: the DevOps AI Incident-Triage Cheat Sheet

Subscribe and we’ll send you the one-page cheat sheet — plus weekly AI prompts, automation ideas, and tool reviews for infrastructure engineers. One email a week. No spam, unsubscribe anytime.

  • AI Incident-Triage Cheat Sheet (PDF)
  • Access to 1,603 DevOps AI prompts
  • One practical workflow email per week