atmos terraform plan
Use this command to generate a Terraform execution plan for an Atmos component in a stack, showing what changes would be made to your infrastructure.
Usage​
Execute the terraform plan command like this:
atmos terraform plan <component> -s <stack> [options]
This command generates an execution plan that shows:
- Resources that will be created, modified, or destroyed
- Changes to resource attributes
- Data source reads that will be performed
By default, Atmos saves the plan to a file using a standardized naming convention: <context>-<component>.planfile. This planfile can later be used with atmos terraform apply --from-plan to ensure that only the reviewed changes are applied.
Run atmos terraform plan --help to see all the available options
Examples​
Basic Planning​
Generate a plan for the vpc component in the dev stack:
atmos terraform plan vpc -s dev
Custom Planfile Output​
Save the plan to a specific file using the -out flag (native Terraform flag):
atmos terraform plan vpc -s dev -out=my-custom.planfile
Skip Planfile Generation​
When using Terraform Cloud (which doesn't support the -out flag), skip planfile generation:
atmos terraform plan vpc -s dev --skip-planfile
Planning with Variable Overrides​
Pass additional variables to the plan:
atmos terraform plan vpc -s dev -var="instance_type=t3.large"
Targeted Planning​
Plan changes only for specific resources:
atmos terraform plan vpc -s dev -target=aws_subnet.private
Destroy Planning​
Generate a plan to destroy infrastructure:
atmos terraform plan vpc -s dev -destroy
Planfile Management​
Default Behavior​
When you run atmos terraform plan, Atmos automatically:
-
Generates a planfile with the naming pattern:
- Without folder prefix:
<context>-<component>.planfile - With folder prefix:
<context>-<folder_prefix>-<component>.planfile
- Without folder prefix:
-
Saves the planfile in the component's working directory
-
The planfile can be used later with:
atmos terraform apply <component> -s <stack> --from-plan
Custom Planfile Locations​
You can specify a custom planfile location using the standard Terraform -out flag:
# Absolute path
atmos terraform plan vpc -s dev -out=/tmp/my-plan.tfplan
# Relative path (relative to component directory)
atmos terraform plan vpc -s dev -out=plans/vpc.tfplan
Skipping Planfile Generation​
To run a plan without generating a planfile (useful for quick checks or when using Terraform Cloud):
atmos terraform plan vpc -s dev --skip-planfile
You can also configure this globally in atmos.yaml:
components:
terraform:
plan:
skip_planfile: true
Arguments​
component(required)Atmos component name to plan.
Flags​
--stack/-s(required)Atmos stack name where the component is defined.
--skip-planfile(optional)Skip writing the plan to a file. When set, Atmos will not pass the
-outflag to Terraform.This is useful when:
- Using Terraform Cloud (which doesn't support
-out) - Running quick plan checks without saving the output
- Running in CI/CD environments where planfiles aren't needed
atmos terraform plan vpc -s dev --skip-planfile- Using Terraform Cloud (which doesn't support
--affected(optional)Plan only affected components based on changes in the repository. This is a global operation that identifies and plans all components affected by recent changes across all stacks.
# Plan only affected components across all stacks
atmos terraform plan --affected--all(optional)Plan all components in all stacks (use with caution).
atmos terraform plan --all--dry-run(optional)Show what would be executed without actually running the plan.
atmos terraform plan vpc -s dev --dry-run--skip-init(optional)Skip running
terraform initbefore planning.atmos terraform plan vpc -s dev --skip-init--process-templates(optional)Enable/disable Go template processing in Atmos stack manifests.
Default:
trueatmos terraform plan vpc -s dev --process-templates=false
Native Terraform Flags​
The atmos terraform plan command supports all native terraform plan flags. To pass native Terraform flags, you have two options:
- Direct flags - Pass Terraform flags directly if they don't conflict with Atmos flags
- Double-dash separator - Use
--to explicitly separate Atmos flags from Terraform flags
The -- separator is a common Unix convention that indicates "end of options". Everything after -- is passed directly to Terraform without interpretation by Atmos. This is useful when:
- You want to ensure a flag is passed to Terraform, not Atmos
- You're using flags that might conflict with Atmos flags
- You want to be explicit about which tool receives which flags
Example:
atmos terraform plan vpc -s dev -- -refresh=false -out=my-custom.tfplan
Some commonly used native flags include:
-out=FILEWrite the plan to a file at the specified path. This is the standard Terraform flag for specifying a custom planfile location.
atmos terraform plan vpc -s dev -out=my-plan.tfplan-destroyCreate a plan to destroy all resources.
atmos terraform plan vpc -s dev -destroy-target=RESOURCEPlan only specific resources. Can be specified multiple times.
atmos terraform plan vpc -s dev -target=aws_subnet.private -target=aws_route_table.private-var 'NAME=VALUE'Set a variable value. Can be specified multiple times.
atmos terraform plan vpc -s dev -var="instance_count=3" -var="environment=staging"-refresh-onlyCreate a plan to update the state to match remote systems.
atmos terraform plan vpc -s dev -refresh-only
Related Commands​
atmos terraform apply- Apply the changes from a planatmos terraform deploy- Deploy with auto-approvalatmos terraform plan-diff- Compare two plan filesatmos terraform generate planfile- Generate a planfile in JSON/YAML format
Configuration​
Configure default behavior for terraform plan in your atmos.yaml:
components:
terraform:
plan:
# Skip generating planfiles by default (useful for Terraform Cloud)
skip_planfile: false
This can also be set using the environment variable:
export ATMOS_COMPONENTS_TERRAFORM_PLAN_SKIP_PLANFILE=true
See Terraform Planfiles for a comprehensive guide on working with planfiles in Atmos.