Configuration as Code
Configuration as Code
Manage Dynatrace configuration with Terraform and Monaco CLI โ version-controlled, repeatable, auditable.
Two Tools
Tool What It Does Best For
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ
Terraform Declarative state management (HCL) Greenfield deployment
Monaco CLI Dynatrace-native config as code (YAML) Brownfield export, CI/CD
Terraform Provider (v1.94.0)
# Setup
terraform {
required_providers {
dynatrace = {
source = "dynatrace-oss/dynatrace"
version = "~> 1.94"
}
}
}
# Configure via environment variables
export DYNATRACE_ENV_URL="https://ENV-ID.live.dynatrace.com"
export DYNATRACE_API_TOKEN="dt0c01.XXXX.YYYY"
# For workflows, dashboards, SLOs (require OAuth):
export DT_CLIENT_ID="dt0s02.XXXX"
export DT_CLIENT_SECRET="dt0s02.XXXX.YYYY"
export DT_ACCOUNT_ID="urn:dtaccount:UUID"
Export Existing Configuration
# After terraform init, the provider binary can export ALL config:
cd .terraform/providers/registry.terraform.io/dynatrace-oss/dynatrace/*/linux_amd64/
# Export everything (generates .tf files)
./terraform-provider-dynatrace -export
# Export specific resources with dependencies
./terraform-provider-dynatrace -export -ref dynatrace_alerting dynatrace_dashboard
# Export and import into Terraform state
./terraform-provider-dynatrace -export -import-state dynatrace_platform_slo
โ ๏ธ -import-state makes resources managed. On next terraform apply, anything in state but NOT in .tf files gets deleted.
Monaco CLI (v2.28.5)
# Export all config as YAML
monaco download --url https://ENV-ID.live.dynatrace.com \
--token-name DT_API_TOKEN --output-folder export/
# Deploy config
monaco deploy manifest.yaml --environment prod
# Dry run (preview changes)
monaco deploy manifest.yaml --environment prod --dry-run
๐ก Use Monaco for brownfield export (capture existing config), Terraform for greenfield deployment (define desired state). Many teams use both.
๐ Try it: Open Ctrl+K โ "Settings" โ browse any setting (try "Anomaly detection"). Notice the schema ID in the URL โ that's the same ID you'd use in Terraform's dynatrace_setting resource. Every UI setting has an API equivalent.
Terraform Export Utility
The Dynatrace TF provider binary can export existing config:
# Export all configs
./terraform-provider-dynatrace -export
# Export with dependencies + state import (brownfield adoption)
./terraform-provider-dynatrace -export -ref -import-state
# Export specific resource
./terraform-provider-dynatrace -export dynatrace_alerting
Flags: -ref (data sources), -import-state (init + import), -flat (no modules).