environment-management
Environment Management with Acquia CLI
Use when:
- Creating or deleting Continuous Delivery Environments (CDEs)
- Making one environment identical to another (mirroring)
- Copying cron tasks between environments
- Installing SSL certificates
- Listing or inspecting environments
- Deploying code to an environment
List Environments
acli api:applications:environment-list
Shows all environments for an application (prod, staging, dev, and any CDEs).
Get Environment Details
acli env:info
Shows PHP version, database, last deployment, URLs, and status for the selected environment.
Create a Continuous Delivery Environment (CDE)
CDEs are on-demand environments — useful for testing feature branches before merging.
acli env:create "My Feature Branch" feature/my-branch
Arguments:
label(required) — Human-readable name for the new environmentbranch(optional) — The git branch to deploy; prompts if omitted
# Interactive (prompts for branch)
acli env:create "QA Review"
# Non-interactive
acli env:create "Sprint 42 Demo" release/sprint-42
Delete a CDE
acli env:delete
Prompts you to select the environment to delete. Only CDEs can be deleted; production and standard environments cannot.
Deploy Code to an Environment
acli api:environments:code-switch <environmentId> <branch>
Example:
acli api:environments:code-switch 112927-9454a2b1-cce0-475e-ae5f-5374dbca9b0a master
Returns a notification UUID you can track with acli app:task-wait <uuid>.
Mirror an Environment
Makes a destination environment identical to a source — copies code, database, files, and config.
acli env:mirror <source-environment> <destination-environment>
Use environment aliases in the format app-name.env:
acli env:mirror myapp.prod myapp.staging
Skip specific components:
acli env:mirror myapp.prod myapp.staging \
--no-code \ # -c: skip code
--no-databases \ # -d: skip databases
--no-files \ # -f: skip files
--no-config # -p: skip configuration
Warning: This overwrites the destination. All existing data in the destination environment is replaced.
Copy Cron Tasks Between Environments
Copy all cron tasks from one environment to another:
acli env:cron-copy <source_env> <dest_env>
Example:
acli env:cron-copy myapp.prod myapp.staging
Useful after mirroring an environment to ensure scheduled tasks match.
Install an SSL Certificate
acli env:certificate-create <certificate> <private-key>
Options:
acli env:certificate-create \
/path/to/cert.pem \
/path/to/private-key.pem \
--label="My SSL Cert" \
--ca-certificates=/path/to/ca-bundle.pem \
--legacy # Use legacy SSL (non-SNI)
To install from an existing CSR:
acli env:certificate-create cert.pem key.pem --csr-id=<csr-uuid>
Typical Workflows
Set up a CDE for a feature branch
# Create the environment
acli env:create "Feature: New Checkout" feature/new-checkout
# Mirror prod data to it
acli env:mirror myapp.prod myapp.<new-cde-id>
Refresh staging from production
acli env:mirror myapp.prod myapp.staging
Promote staging to prod
acli api:environments:code-switch <prod-env-id> main
Best Practices
- Mirror before testing — Always sync a CDE from prod or staging before QA.
- Clean up CDEs — Delete CDEs when done; they consume resources.
- Test deploys in staging first — Always deploy to staging before production.
- Copy crons after mirror — Run
env:cron-copyafter mirroring to keep scheduled tasks in sync.
Troubleshooting
"Environment not found"
Check available environments:
acli api:applications:environment-list
Mirror fails midway
Check logs and retry. Use --no-databases or --no-files to skip the component that failed:
acli env:mirror myapp.prod myapp.staging --no-files
Related Topics
- Pull & Push — Sync local and Cloud environments
- Application Management — Find application UUIDs
- Remote Access — SSH and Drush on environments
More from acquia/acquia-skills
application-management
Use when listing Acquia Cloud applications, linking or unlinking a local repo to an application, opening an app in browser, checking VCS/branch deployment status, or exporting a site archive.
44getting-started
Use when acli is not installed, authentication fails, or user needs to install and authenticate acli for the first time.
42troubleshooting
Use when acli commands fail, return unexpected errors, authentication breaks, or the CLI behaves unexpectedly.
37pull-push
Use when syncing code, database, or files between local and Acquia Cloud environments, or pulling a Cloud database/files locally.
37remote-access
Use when SSHing into a Cloud environment, running Drush commands remotely, or tailing live application logs.
37scripting
Use when running acli commands non-interactively in scripts, CI/CD pipelines, or automation where interactive prompts must be suppressed.
36