atmos terraform deploy
Use this command to deploy Terraform changes for an Atmos component in a stack with auto-approval. This combines plan and apply operations in a single command.
Usage
Execute the terraform deploy subcommand like this:
atmos terraform deploy <component> -s <stack>
-
atmos terraform deploycommand supports--deploy-run-init=true|falseflag to enable/disable runningterraform initbefore executing the command -
atmos terraform deploycommand automatically sets-auto-approveflag when runningterraform apply -
atmos terraform deploycommand supports--from-planflag. If the flag is specified, the command will use the planfile previously generated byatmos terraform plancommand instead of generating a new planfile, e.g.atmos terraform deploy <component> -s <stack> --from-plan. Note that in this case, the planfile name is in the format supported by Atmos and is saved to the component's folder -
atmos terraform deploycommand supports--planfileflag to specify the path to a planfile. The--planfileflag should be used instead of the planfile argument in the nativeterraform apply <planfile>command. For example, you can execute the commandatmos terraform plan <component> -s <stack> -out=<FILE>, which will save the generated plan to a file on disk, and then execute the commandatmos terraform deploy <component> -s <stack> --planfile <FILE>to apply the previously generated planfile
See all flags.
Run atmos terraform deploy --help to see all the available options
Configuration
Configure default behavior for terraform deploy in your atmos.yaml:
components:
terraform:
# Run 'terraform init' before deploy
deploy_run_init: true
# Auto-generate backend configuration
auto_generate_backend_file: true
These settings can also be controlled via environment variables:
export ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT=true
export ATMOS_COMPONENTS_TERRAFORM_AUTO_GENERATE_BACKEND_FILE=true
Examples
Simple Example
Deploy the top-level-component1 using the configuration specified in the tenant1-ue2-dev stack. This command explicitly targets a stack, which defines the environment and region settings for the deployment.
atmos terraform deploy top-level-component1 --stack tenant1-ue2-dev
Planfiles
Deploy top-level-component1 based on a previously generated execution plan. The -s flag specifies the tenant1-ue2-dev stack, and --from-plan indicates that the deploy should proceed with the plan that was previously created, ensuring that the deployment matches the plan's specifications.
atmos terraform deploy top-level-component1 -s tenant1-ue2-dev --from-plan
Or use -s for a specific execution plan file located at <path_to_planfile> to ensure precision in what is deployed.
atmos terraform deploy top-level-component1 -s tenant1-ue2-dev --planfile <path_to_planfile>
Targeting Specific Stages
This demonstrates how Atmos can be used to deploy infrastructure components, like a VPC, specifying the stack to ensure the deployment occurs within the correct environment and configuration context.
atmos terraform deploy infra/vpc -s tenant1-ue2-staging
atmos terraform deploy test/test-component -s tenant1-ue2-dev
atmos terraform deploy test/test-component-override-2 -s tenant2-ue2-prod
atmos terraform deploy test/test-component-override-3 -s tenant1-ue2-dev
Arguments
component(required)Atmos terraform component.
Flags
--stack(alias-s) (required)Atmos stack.
--dry-run(optional)Dry run.
atmos terraform deploy <component> -s <stack> --dry-run=true--deploy-run-init(optional)Enable/disable running
terraform initbefore executing the command.atmos terraform deploy <component> -s <stack> --deploy-run-init--from-plan(optional)If the flag is specified, use the
planfilepreviously generated by Atmos instead of generating a newplanfile. The planfile name is in the format supported by Atmos and is saved to the component's folder.atmos terraform deploy <component> -s <stack> --from-plan--planfile(optional)The path to a planfile. The
--planfileflag should be used instead of the planfile argument in the nativeterraform apply <planfile>command.atmos terraform deploy <component> -s <stack> --planfile <planfile>--process-templates(optional)Enable/disable Go template processing in Atmos stack manifests when executing terraform commands.
If the flag is not passed, template processing is enabled by default.
atmos terraform deploy <component> -s <stack> --process-templates=false--process-functions(optional)Enable/disable YAML functions processing in Atmos stack manifests
when executing terraform commands.If the flag is not passed, YAML function processing is enabled by default.
atmos terraform deploy <component> -s <stack> --process-functions=false--skip(optional)Skip processing a specific Atmos YAML function in Atmos stacks manifests when executing terraform commands.
To specify more than one function, use multiple
--skipflags, or separate the functions with a comma.atmos terraform deploy <component> -s <stack> --skip=eval --skip=include
atmos terraform deploy <component> -s <stack> --skip=terraform.output,include
Native Terraform Flags
The atmos terraform deploy command supports all native terraform apply options described
in Terraform apply options, with the exception that a planfile argument
can't be provided on the command line. To use a previously generated planfile, use the --from-plan or --planfile command-line flags.
See Terraform Planfiles for a comprehensive guide on working with planfiles in Atmos.
Multi-Component Operations
Execute terraform deploy across multiple components using filtering flags. Since deploy auto-approves, this is particularly powerful for automated deployments. All flags can be combined with --dry-run to preview what would be executed.
Multi-component deploy operations will auto-approve all changes. Use --dry-run first to verify which components will be affected.
Deploy All Components
# Deploy all components in all stacks
atmos terraform deploy --all
# Deploy all components in a specific stack
atmos terraform deploy --all --stack prod
atmos terraform deploy --stack prod
Deploy Affected Components
Deploy only components affected by changes in the current branch (requires git). Components are processed in dependency order:
# Deploy affected components in all stacks
atmos terraform deploy --affected
# Deploy affected components in a specific stack
atmos terraform deploy --affected --stack prod
# Include dependent components (components that depend on affected components)
atmos terraform deploy --affected --include-dependents
# Clone the target reference instead of checking it out
atmos terraform deploy --affected --clone-target-ref=true
Deploy Specific Components
# Deploy specific components in all stacks
atmos terraform deploy --components vpc,eks
# Deploy specific components in a specific stack
atmos terraform deploy --components vpc,eks --stack prod
Deploy Components by Query
Filter components using YQ expressions against component configuration:
# Deploy components where team tag equals "eks"
atmos terraform deploy --query '.vars.tags.team == "eks"'
# Deploy components in a specific account
atmos terraform deploy --query '.settings.context.account_id == 12345'
# Combine with stack filter
atmos terraform deploy --query '.vars.tags.team == "eks"' --stack prod
Multi-Component Flags
--all- Deploy all components in all stacks (or specified stack with
--stack). --affected- Deploy components affected by git changes in dependency order. Supports all flags from
atmos describe affected. --components- Deploy specific components by name (comma-separated or repeated flag).
--query- Deploy components matching a YQ expression. All Atmos sections are available:
vars,settings,env,metadata, etc. --include-dependents- With
--affected, also deploy components that depend on affected components, recursively. --ref- Git reference to compare against (branch or tag). Default:
refs/remotes/origin/HEAD. --sha- Git commit SHA to compare against.
--clone-target-ref- Clone the target reference instead of checking it out locally.
Related Commands
- terraform plan - Generate an execution plan
- terraform apply - Apply changes with confirmation
- terraform destroy - Destroy infrastructure