Skip to main content

Planfile Storage

Planfile storage enables the plan-then-deploy workflow in CI. When configured, atmos terraform plan uploads planfiles to storage, and atmos terraform deploy downloads and verifies them before applying.

Experimental

Configuration

atmos.yaml

components:
terraform:
planfiles:
# Stores are tried in priority order
priority:
- "github"
- "s3"
- "local"

# Named stores
stores:
github:
type: github/artifacts
options:
retention_days: 7

s3:
type: aws/s3
options:
bucket: "my-terraform-planfiles"
prefix: "atmos/"
region: "us-east-1"

local:
type: local/dir
options:
path: ".atmos/planfiles"

Storage Backends

BackendTypeBest For
GitHub Artifactsgithub/artifactsGitHub Actions workflows (recommended)
S3aws/s3AWS-native environments, cross-provider workflows
Locallocal/dirTesting and development
tip

If components.terraform.planfiles is not configured, planfile storage operations are silently skipped. CI summaries and status checks still work without planfile storage.

How It Works

Plan Phase

When atmos terraform plan runs in CI mode with planfile storage configured:

  1. Terraform generates a binary planfile
  2. The planfile is bundled with the lock file into a tar archive
  3. SHA256 integrity checksums are computed
  4. The bundle is uploaded to the configured storage backend

Deploy Phase

When atmos terraform deploy runs:

  1. Downloads the stored planfile bundle from storage
  2. Verifies SHA256 integrity checksums
  3. Generates a fresh plan against current infrastructure
  4. Performs semantic comparison between stored and fresh plans
  5. If plans match: Applies the verified plan
  6. If plans differ: Fails with a drift detection error

This ensures that exactly what was reviewed during the plan phase gets applied, with no silent infrastructure drift.

Plan Verification

The deploy command uses semantic plan comparison — not naive text diff. It compares the JSON plan structures to detect meaningful differences while ignoring cosmetic changes.

If drift is detected, the deploy fails with a clear error showing what changed since the plan was created.

CLI Commands

Planfile Commands

Manage stored planfiles with upload, download, list, delete, and show commands.