What Is New in Terraform 0.3
Terraform 0.3 introduces foundational features that establish the core workflow we know today. This release is all about making multi-resource deployments predictable and manageable.
| Category | Key Changes |
|---|---|
| New Features | Plan and Apply workflow, State file locking |
| Improvements | Remote state storage, Enhanced CLI output |
| Core Changes | Introduction of the terraform binary |
How does the new plan and apply workflow change deployment?
The plan and apply separation is the single biggest workflow improvement. You now run terraform plan to preview changes before executing them with terraform apply.
This creates a safety net, preventing accidental infrastructure modifications. In practice, this became the standard way to review and approve changes in team environments.
Why is state file locking critical for teams?
State locking prevents multiple users from modifying the same infrastructure simultaneously, which could corrupt the state file. The lock is acquired during operations that write state.
This matters because without it, concurrent runs could overwrite each other's changes. The backend (e.g., S3) must support atomic locking for this to work effectively.
What are the benefits of remote state storage?
Remote state allows teams to share a single source of truth for their infrastructure's state. It moves the state file from a local terraform.tfstate to a shared remote backend like S3.
This enables collaboration and ensures everyone operates with the latest state. It also provides a secure, centralized location for state management instead of relying on local files.
FAQ
Does the plan command actually modify my infrastructure?
No. terraform plan is a read-only operation that generates an execution plan. It shows what would happen but makes no actual changes to your resources.
What happens if a state lock isn't released properly?
You might need to manually force-unlock the state using terraform force-unlock. This is a last resort if the lock mechanism fails, like after a crashed process.
Can I still use local state files with version 0.3?
Yes, local state is still the default. You must explicitly configure a backend block in your configuration to use remote state storage.
How does this affect my existing Terraform configurations?
The core configuration language remains the same. The main change is adopting the new CLI commands (plan, apply) instead of the previous single-command approach.
Is the state file format different in this version?
The state file structure evolves over time, but 0.3 maintains backward compatibility for reading existing state while writing in the new format.