<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic From Manual Clicks to Code: Managing Dynatrace Extension Configurations at Scale in AI</title>
    <link>https://community.dynatrace.com/t5/AI/From-Manual-Clicks-to-Code-Managing-Dynatrace-Extension/m-p/301267#M194</link>
    <description>&lt;H1&gt;The Problem Nobody Talks About&amp;nbsp;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;Every our Dynatrace tenant is a snowflake.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;When the Demoability team operates six Dynatrace environments — from playground-dev on the sprint ring to the customer-facing live tenant — each one carries a different set of active Extensions 2.0 monitoring configurations. One tenant monitors IBM MQ and Oracle SQL. Another runs three SNMP auto-discovery scanners across WAN and datacenter segments. A third tracks Salesforce event streams. Some extensions need nothing more than an AG group name; others require OAuth tokens, API keys, database passwords, and private RSA keys stored safely in AWS Secrets Manager.&lt;BR /&gt;Managing this by hand in the Dynatrace UI works — until it doesn't. A configuration drifts silently. A credential rotates and the extension stops collecting. Someone enables a feature set in one environment and forgets to replicate it to the others. There is no audit trail, no review process, no rollback.&lt;BR /&gt;The answer was obvious: manage it as code. The harder question was how.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;H1&gt;Terraform Is the Right Tool — and a Daunting One&amp;nbsp;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;The dynatrace-oss/dynatrace Terraform provider supports dynatrace_hub_extension_v2_config, which can declaratively manage monitoring configurations for every installed extension. In theory, this is clean. In practice, it surfaces a wall of complexity immediately.&lt;BR /&gt;The Dynatrace API replaces every stored credential in its GET responses with a 16-character hex placeholder. This means every terraform plan shows a perpetual diff on password fields — unless you engineer around it with ignore_changes and a dual-hash fingerprint that can distinguish real credential changes from API noise. Then there is version management: each extension has an active installed version per tenant, and version mismatches between state and the API cause silent re-pushes. Six environments × 20+ extension types × per-environment variation in feature sets, AG groups, device IP lists, and secret keys is not a configuration problem. It is a code generation problem.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;H1&gt;&lt;STRONG&gt;Where AI Becomes the Force Multiplier&lt;/STRONG&gt;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;Rather than manually inspecting each tenant's Dynatrace Hub and transcribing configs by hand, the team uses an AI agent equipped with a purpose-built dt-export skill. The skill knows how to locate the provider binary in the Terragrunt cache, set the required environment variables, and invoke the provider's built-in export CLI against a live tenant:&lt;/DIV&gt;&lt;PRE&gt;# Export all hub extension v2 configs from the tenant&lt;BR /&gt;export DYNATRACE_ENV_URL="https://{environmentid}.apps.dynatrace.com"&lt;BR /&gt;export DYNATRACE_CLIENT_ID="dt0s02...."&lt;BR /&gt;export DYNATRACE_CLIENT_SECRET="..."&lt;BR /&gt;export DYNATRACE_TOKEN_URL="https://{environmentid}.apps.dynatrace.com needs onboarding.&lt;BR /&gt;&lt;EM&gt;Export all existing extension configs, map them to deployment variables, &lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;create environments/xyz/terragrunt.hcl, and update SECRETS.md with the required secret keys.&lt;/EM&gt;&lt;/PRE&gt;&lt;P&gt;The export produces raw .tf files reflecting exactly what is deployed. The agent then reads these files, maps the field structure to the repo's module interface, and outputs ready-to-commit terragrunt.hcl configuration blocks — with credentials extracted into AWS Secrets Manager key references rather than plain values.&lt;/P&gt;&lt;P&gt;Example prompts that capture the full workflow:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;"Export the current extension monitoring configurations from the live3gen environment. Find any configs for SNMP auto-discovery that are not yet in Terraform state and add them to environments/live3gen/terragrunt.hcl following the existing patterns."&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Or&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;"A new Dynatrace environment &lt;A href="https://{environmentid}.apps.dynatrace.com" target="_blank"&gt;https://{environmentid}.apps.dynatrace.com&lt;/A&gt; needs onboarding. Export all existing extension configs, map them to deployment variables, create environments/xyz/terragrunt.hcl, and update SECRETS.md with the required secret keys."&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;The dynatrace-extensions skill provides the agent with the full module interface, variable schema, and credential-scrubbing rules — so it produces code that passes terragrunt validate on the first attempt rather than requiring manual correction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H1&gt;The Outcome&lt;/H1&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What previously required hours of UI inspection, manual JSON transcription, and trial-and-error Terraform authoring now takes minutes.&lt;/P&gt;&lt;P&gt;Features:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;New environments are onboarded with a single prompt.&lt;/LI&gt;&lt;LI&gt;Existing configs are versioned, reviewed, and deployed through a pull request.&lt;/LI&gt;&lt;LI&gt;Six tenants, fully reconciled, with terragrunt plan returning valid information what will be changes or not.&lt;/LI&gt;&lt;/UL&gt;</description>
    <pubDate>Fri, 26 Jun 2026 12:12:11 GMT</pubDate>
    <dc:creator>dczupryn-dt</dc:creator>
    <dc:date>2026-06-26T12:12:11Z</dc:date>
    <item>
      <title>From Manual Clicks to Code: Managing Dynatrace Extension Configurations at Scale</title>
      <link>https://community.dynatrace.com/t5/AI/From-Manual-Clicks-to-Code-Managing-Dynatrace-Extension/m-p/301267#M194</link>
      <description>&lt;H1&gt;The Problem Nobody Talks About&amp;nbsp;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;Every our Dynatrace tenant is a snowflake.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;When the Demoability team operates six Dynatrace environments — from playground-dev on the sprint ring to the customer-facing live tenant — each one carries a different set of active Extensions 2.0 monitoring configurations. One tenant monitors IBM MQ and Oracle SQL. Another runs three SNMP auto-discovery scanners across WAN and datacenter segments. A third tracks Salesforce event streams. Some extensions need nothing more than an AG group name; others require OAuth tokens, API keys, database passwords, and private RSA keys stored safely in AWS Secrets Manager.&lt;BR /&gt;Managing this by hand in the Dynatrace UI works — until it doesn't. A configuration drifts silently. A credential rotates and the extension stops collecting. Someone enables a feature set in one environment and forgets to replicate it to the others. There is no audit trail, no review process, no rollback.&lt;BR /&gt;The answer was obvious: manage it as code. The harder question was how.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;H1&gt;Terraform Is the Right Tool — and a Daunting One&amp;nbsp;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;The dynatrace-oss/dynatrace Terraform provider supports dynatrace_hub_extension_v2_config, which can declaratively manage monitoring configurations for every installed extension. In theory, this is clean. In practice, it surfaces a wall of complexity immediately.&lt;BR /&gt;The Dynatrace API replaces every stored credential in its GET responses with a 16-character hex placeholder. This means every terraform plan shows a perpetual diff on password fields — unless you engineer around it with ignore_changes and a dual-hash fingerprint that can distinguish real credential changes from API noise. Then there is version management: each extension has an active installed version per tenant, and version mismatches between state and the API cause silent re-pushes. Six environments × 20+ extension types × per-environment variation in feature sets, AG groups, device IP lists, and secret keys is not a configuration problem. It is a code generation problem.&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;H1&gt;&lt;STRONG&gt;Where AI Becomes the Force Multiplier&lt;/STRONG&gt;&lt;/H1&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;Rather than manually inspecting each tenant's Dynatrace Hub and transcribing configs by hand, the team uses an AI agent equipped with a purpose-built dt-export skill. The skill knows how to locate the provider binary in the Terragrunt cache, set the required environment variables, and invoke the provider's built-in export CLI against a live tenant:&lt;/DIV&gt;&lt;PRE&gt;# Export all hub extension v2 configs from the tenant&lt;BR /&gt;export DYNATRACE_ENV_URL="https://{environmentid}.apps.dynatrace.com"&lt;BR /&gt;export DYNATRACE_CLIENT_ID="dt0s02...."&lt;BR /&gt;export DYNATRACE_CLIENT_SECRET="..."&lt;BR /&gt;export DYNATRACE_TOKEN_URL="https://{environmentid}.apps.dynatrace.com needs onboarding.&lt;BR /&gt;&lt;EM&gt;Export all existing extension configs, map them to deployment variables, &lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;create environments/xyz/terragrunt.hcl, and update SECRETS.md with the required secret keys.&lt;/EM&gt;&lt;/PRE&gt;&lt;P&gt;The export produces raw .tf files reflecting exactly what is deployed. The agent then reads these files, maps the field structure to the repo's module interface, and outputs ready-to-commit terragrunt.hcl configuration blocks — with credentials extracted into AWS Secrets Manager key references rather than plain values.&lt;/P&gt;&lt;P&gt;Example prompts that capture the full workflow:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;"Export the current extension monitoring configurations from the live3gen environment. Find any configs for SNMP auto-discovery that are not yet in Terraform state and add them to environments/live3gen/terragrunt.hcl following the existing patterns."&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Or&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;"A new Dynatrace environment &lt;A href="https://{environmentid}.apps.dynatrace.com" target="_blank"&gt;https://{environmentid}.apps.dynatrace.com&lt;/A&gt; needs onboarding. Export all existing extension configs, map them to deployment variables, create environments/xyz/terragrunt.hcl, and update SECRETS.md with the required secret keys."&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;The dynatrace-extensions skill provides the agent with the full module interface, variable schema, and credential-scrubbing rules — so it produces code that passes terragrunt validate on the first attempt rather than requiring manual correction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H1&gt;The Outcome&lt;/H1&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What previously required hours of UI inspection, manual JSON transcription, and trial-and-error Terraform authoring now takes minutes.&lt;/P&gt;&lt;P&gt;Features:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;New environments are onboarded with a single prompt.&lt;/LI&gt;&lt;LI&gt;Existing configs are versioned, reviewed, and deployed through a pull request.&lt;/LI&gt;&lt;LI&gt;Six tenants, fully reconciled, with terragrunt plan returning valid information what will be changes or not.&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Fri, 26 Jun 2026 12:12:11 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/AI/From-Manual-Clicks-to-Code-Managing-Dynatrace-Extension/m-p/301267#M194</guid>
      <dc:creator>dczupryn-dt</dc:creator>
      <dc:date>2026-06-26T12:12:11Z</dc:date>
    </item>
  </channel>
</rss>

