Skip to main content

Reference and Selective Reading

You do not need to read the Terraform documentation front-to-back. Use the concept pages first, then the practice pages. Open these external references only when you need alternate exposition, a precise attribute name, or a deeper exercise lane.

This module is deliberately docs-first: the HashiCorp developer documentation is the source of truth. Local book chunks are peripheral and appear only where they help Cluster 4's PR-review mechanics.

Source Roles

SourceRoleWhy it is here
HashiCorp Terraform Developer DocsPrimaryAuthoritative on language, CLI, state, modules, and providers
Terraform Best Practices (terraform-best-practices.com)SecondaryCommunity-maintained conventions; opinionated but practical
Open Policy Agent docsPrimary (Cluster 5)Rego language and policy engine
HashiCorp Sentinel docsSecondary (Cluster 5)HCP Terraform's policy engine
tfsec (migrating to Trivy)Secondary (Cluster 5)Static Terraform scanner
Ansible docsSecondary (Cluster 5)Canonical config-management reference
AWS CDK v2 Developer GuideSecondary (Cluster 5)IaC in general-purpose languages (CDK)
Pulumi documentationSecondary (Cluster 5)IaC in general-purpose languages (Pulumi)
Pro Git / The Linux Command Line / Git from the bottom up (local chunks)PeripheralPR review mechanics and shell fluency only

Open Only If Stuck

Cluster 1: The IaC Mindset

Cluster 2: Terraform Core

Cluster 3: Modularity and Reuse

Cluster 4: Managing Change

Cluster 5: IaC Beyond Terraform

Optional Deep Dive

Concept-to-Source Map

Primary conceptBest source if stuckWhy this source
Declarative vs imperative infrastructureTerraform IntroDirect contrast with scripting
State: ground truth and its hazardsTerraform: StateAuthoritative on the state model
Idempotency and convergenceTerraform Intro + Resource syntaxModel + mechanism
Providers, resources, data sourcesTerraform Language: ProvidersAuthoritative
Variables, outputs, localsInput VariablesPrimary reference
Plan/apply lifecycle, driftCommand: terraform planAuthoritative on lifecycle commands
Reusable Terraform modulesTutorial: Create a moduleEnd-to-end worked example
Workspaces / envs / mono-polyWorkspaces + Best PracticesOfficial + community
Remote state and lockingBackendsAuthoritative
Plan review as PR cultureterraform planSaved-plan semantics
Refactoring with moved / importRefactoring + ImportTwo canonical docs
Blast radius and safe defaultslifecycle meta-argumentAuthoritative
Ansible boundaryAnsible: Getting startedCanonical
CDK / PulumiAWS CDK v2 guide + Pulumi conceptsVendor sources
Policy as codeOPA docsPrimary engine

External Community References

Use Rules

  • For any Terraform language question, open the relevant developer.hashicorp.com/terraform/language/... page before reading blog posts. Blog posts written before the moved block (Terraform 1.1) and the import block (Terraform 1.5) are actively misleading on refactoring.
  • For provider-specific attributes, open the Terraform Registry page for that provider.
  • For backends, read the specific backend page (/language/backend/s3, /language/backend/gcs, etc.) -- generic advice does not substitute for the backend's concrete attribute list.
  • For policy as code, read the OPA policy-language page and write a policy the same day. Reading alone does not build the muscle.
  • Book chunks stay peripheral here. If you find yourself reaching for Pro Git to answer a Terraform question, you have drifted from the source.