<?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>Azure Tools Blog articles</title>
    <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/bg-p/AzureToolsBlog</link>
    <description>Azure Tools Blog articles</description>
    <pubDate>Sat, 18 Apr 2026 06:19:07 GMT</pubDate>
    <dc:creator>AzureToolsBlog</dc:creator>
    <dc:date>2026-04-18T06:19:07Z</dc:date>
    <item>
      <title>Azure CLI Windows MSI Upgrade Issue: Root Cause, Mitigation, and Performance Improvements</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-windows-msi-upgrade-issue-root-cause-mitigation-and/ba-p/4491691</link>
      <description>&lt;H1&gt;Azure CLI on Windows MSI Upgrade Issue&lt;/H1&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;About six months ago, some Windows users experienced an Azure CLI crash after upgrading via the MSI installer from Azure CLI 2.76.0 (or earlier) to 2.77.0 (or later). The failure occurred immediately on startup with: “ImportError: DLL load failed while importing win32file: The specified module could not be found.” This post explains what happened, why upgrades were affected (while clean installs typically worked), and what you can do to recover.&lt;/P&gt;
&lt;H2&gt;Who is affected?&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;You are likely affected if:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You installed Azure CLI using the Windows MSI installer.&lt;/LI&gt;
&lt;LI&gt;You upgraded from Azure CLI 2.76.0 (or earlier) to 2.77.0 (or later) without fully uninstalling first.&lt;/LI&gt;
&lt;LI&gt;After the upgrade, any az command fails with the win32file ImportError on startup.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Symptoms&lt;/H2&gt;
&lt;P&gt;Typical error output (Azure CLI/Azure PowerShell):&lt;/P&gt;
&lt;P&gt;ImportError: DLL load failed while importing win32file: The specified module could not be found.&lt;/P&gt;
&lt;H2&gt;Immediate recovery&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Upgrade to the latest version &lt;A href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest&amp;amp;pivots=msi" target="_blank" rel="noopener"&gt;2.83.0&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;If you want to install other versions of Azure CLI, perform a clean reinstall by uninstalling Microsoft Azure CLI from Windows Settings → Apps, deleting any remaining install folder (such as the CLI2 directory), reinstalling the latest Azure CLI using MSI or winget, and then verifying the installation with az --version.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Root cause analysis&lt;/H2&gt;
&lt;P&gt;During an affected MSI upgrade, the Azure CLI installation directory ended up missing a set of native Python extension files (.pyd files) required by the Windows integration layer. MSI logging showed components being blocked with messages indicating MSI believed the existing (older) key file was “newer” than the incoming one.&lt;/P&gt;
&lt;P&gt;The root cause was an interaction between Windows Installer file versioning rules and a third‑party dependency packaging change. Azure CLI 2.76.0/2.77.0 consumed pywin32 311, whose .pyd binaries were missing Windows version resource metadata. When upgrading from a previous Azure CLI build that contained version-stamped pywin32 binaries (e.g., pywin32 306), MSI could treat the older versioned files as higher priority than the incoming non-versioned files. As a result, MSI could remove the old files during upgrade but skip installing the new ones, leaving the install incomplete.&lt;/P&gt;
&lt;H2&gt;Version mapping observed&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Azure CLI version&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Python&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;pywin32&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;pywin32 .pyd version resource&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;≤ 2.75.0&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3.12&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;306&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Present (e.g., 3.12.306.0)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;2.76.0&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3.12&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;311&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Missing / empty&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;2.77.0+&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3.13&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;311&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Missing / empty&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;If you need to collect MSI logs （for support）&lt;/H2&gt;
&lt;P&gt;Run the installer with verbose logging （example）:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;msiexec /i "azure-cli-2.77.0.msi" /l*vx "C:\temp\azure-cli-install.log"&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-cli/issues/32045#issuecomment-3669161120" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-cli/issues/32045#issuecomment-3669161120&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Windows MSI Upgrade Performance Optimization&lt;/H1&gt;
&lt;P&gt;The MSI upgrade process for Azure CLI on Windows has been significantly improved.&lt;/P&gt;
&lt;P&gt;Previously, Windows Installer performed per‑file version comparisons—particularly expensive for Python runtime files—which made upgrades slow and sometimes inconsistent.&lt;/P&gt;
&lt;P&gt;With the new logic, which skips the comparison and performs an overwrite installation. Upgrades now use a streamlined clean‑install process, resulting in faster and more reliable MSI upgrades.&lt;/P&gt;
&lt;H2&gt;Performance Improvements&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Before&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;After&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Improvement&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Fresh Install&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Baseline&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;~5% faster&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;5% faster&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Upgrade&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Long due to file-by-file version comparison&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;~23% faster&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;23% faster&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;This update makes upgrades noticeably faster and more reliable by removing old files first and skipping slow per‑file version checks.&lt;/P&gt;
&lt;P&gt;For more details, please refer to: &lt;A href="https://github.com/Azure/azure-cli/pull/32678" target="_blank" rel="noopener"&gt;[Packaging] Optimize MSI upgrade performance by simplifying file replacement logic by wangzelin007 · Pull Request #32678 · Azure/azure-cli&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We encourage you to upgrade to the latest version of the Azure CLI. This will not only resolve the issue but also improve installation performance. Here is our &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cli/azure/release-notes-azure-cli?view=azure-cli-latest" target="_blank"&gt;release note&lt;/A&gt;.&lt;BR /&gt;If you encounter any problems, please feel free to report them on &lt;A href="https://github.com/Azure/azure-cli/issues" target="_blank" rel="noopener"&gt;Azure CLI GitHub&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 04 Feb 2026 07:41:52 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-windows-msi-upgrade-issue-root-cause-mitigation-and/ba-p/4491691</guid>
      <dc:creator>Alex-wdy</dc:creator>
      <dc:date>2026-02-04T07:41:52Z</dc:date>
    </item>
    <item>
      <title>Release of Bicep Azure Verified Modules for Platform Landing Zone</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/release-of-bicep-azure-verified-modules-for-platform-landing/ba-p/4487932</link>
      <description>&lt;P&gt;After months of collaboration and invaluable community feedback, we're thrilled to announce that Azure Verified Modules for Platform Landing Zone using Bicep is now generally available!&lt;/P&gt;
&lt;P&gt;This release represents a significant milestone in the evolution of Azure Landing Zones. Bicep customers can now leverage the same modular, flexible, and battle-tested approach that our Terraform community has been using, all built on the foundation of Azure Verified Modules.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Why Azure Verified Modules?&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://azure.github.io/Azure-Verified-Modules/" target="_blank" rel="noopener"&gt;Azure Verified Modules (AVM)&lt;/A&gt; represent Microsoft's unified approach to Infrastructure as Code. Born from the need to eliminate fragmentation across Microsoft's infrastructure-as-code (IaC) ecosystem, AVM provides consistent module standards, rigorous testing frameworks, and clear contribution guidelines.&lt;/P&gt;
&lt;P&gt;The ALZ Bicep implementation now leverages AVM exclusively. Every resource you deploy uses verified &lt;A href="{{AVM-Registry-URL}}" target="_blank" rel="noopener"&gt;resource or pattern modules from the AVM registry&lt;/A&gt;. This means you're building on modules that follow consistent engineering practices and are backed by official Microsoft support.&lt;/P&gt;
&lt;P&gt;Based on your feedback, we've completely refactored the framework into a truly modular architecture, giving you the flexibility to compose your Platform Landing Zone exactly the way you need it.&lt;/P&gt;
&lt;H3&gt;New to Azure Verified Modules?&lt;/H3&gt;
&lt;P&gt;Azure Verified Modules is Microsoft's "One Microsoft" approach to IaC modules. It consolidates previously fragmented efforts across the organization into a single, unified library with consistent standards, testing, and support.&lt;/P&gt;
&lt;P&gt;Explore the full catalog at &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Verified-Modules/indexes/bicep/" target="_blank" rel="noopener"&gt;azure.github.io/Azure-Verified-Modules&lt;/A&gt;.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;What's New with this Framework?&lt;/H2&gt;
&lt;H3&gt;Complete Customization&lt;/H3&gt;
&lt;P&gt;You asked for full control over every aspect of your deployment. We listened.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Every component is now customizable&lt;/STRONG&gt;, from management group hierarchies to individual resource names and configurations.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;Module Architecture: 19 Modules Working Together&lt;/H4&gt;
&lt;P&gt;The Bicep AVM starter module composed of &lt;STRONG&gt;19 separate Azure Verified Modules&lt;/STRONG&gt;: 16 resource modules and 3 pattern modules. Each module is independently versioned, tested, and maintained.&lt;/P&gt;
&lt;P&gt;Here's how they work together:&lt;/P&gt;
&lt;H5&gt;Core - Governance (Management Groups)&lt;/H5&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Path&lt;/th&gt;&lt;th&gt;AVM Module&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Int-Root MG&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/governance/mgmt-groups/int-root/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Platform MG&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/governance/mgmt-groups/platform/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;├─ Connectivity&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;platform/platform-connectivity/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;├─ Identity&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;platform/platform-identity/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;├─ Management&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;platform/platform-management/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;└─ Security&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;platform/platform-security/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Landing Zones MG&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/governance/mgmt-groups/landingzones/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;├─ Corp&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;landingzones/landingzones-corp/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;└─ Online&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;landingzones/landingzones-online/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Sandbox MG&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/governance/mgmt-groups/sandbox/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Decommissioned MG&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/governance/mgmt-groups/decommissioned/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;avm/ptn/alz/empty&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H5&gt;Core - Logging&lt;/H5&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Path&lt;/th&gt;&lt;th&gt;AVM Module&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Resource Group&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/logging/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/resources/resource-group" target="_blank" rel="noopener"&gt;avm/res/resources/resource-group&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Log Analytics Workspace&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/logging/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/operational-insights/workspace" target="_blank" rel="noopener"&gt;avm/res/operational-insights/workspace&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Monitoring Agent&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;core/logging/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/ama" target="_blank" rel="noopener"&gt;avm/ptn/alz/ama&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H5&gt;Networking - Hub and Spoke&lt;/H5&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Path&lt;/th&gt;&lt;th&gt;AVM Module&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Resource Groups&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/resources/resource-group" target="_blank" rel="noopener"&gt;avm/res/resources/resource-group&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Virtual Networks&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-network" target="_blank" rel="noopener"&gt;avm/res/network/virtual-network&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/azure-firewall" target="_blank" rel="noopener"&gt;avm/res/network/azure-firewall&lt;/A&gt;, &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/firewall-policy" target="_blank" rel="noopener"&gt;avm/res/network/firewall-policy&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Bastion&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/bastion-host" target="_blank" rel="noopener"&gt;avm/res/network/bastion-host&lt;/A&gt;, &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/network-security-group" target="_blank" rel="noopener"&gt;avm/res/network/network-security-group&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;VPN Gateway&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-network-gateway" target="_blank" rel="noopener"&gt;avm/res/network/virtual-network-gateway&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;ExpressRoute Gateway&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-network-gateway" target="_blank" rel="noopener"&gt;avm/res/network/virtual-network-gateway&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Route Tables&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/route-table" target="_blank" rel="noopener"&gt;avm/res/network/route-table&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;DDoS Protection&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/ddos-protection-plan" target="_blank" rel="noopener"&gt;avm/res/network/ddos-protection-plan&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Private DNS&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/network/private-link-private-dns-zones" target="_blank" rel="noopener"&gt;avm/ptn/network/private-link-private-dns-zones&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;DNS Private Resolver&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/hubnetworking/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/dns-resolver" target="_blank" rel="noopener"&gt;avm/res/network/dns-resolver&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H5&gt;Networking - Virtual WAN&lt;/H5&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Path&lt;/th&gt;&lt;th&gt;AVM Module&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Resource Groups&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/resources/resource-group" target="_blank" rel="noopener"&gt;avm/res/resources/resource-group&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Virtual WAN&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-wan" target="_blank" rel="noopener"&gt;avm/res/network/virtual-wan&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Virtual Hubs&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-hub" target="_blank" rel="noopener"&gt;avm/res/network/virtual-hub&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;ExpressRoute Gateway&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/express-route-gateway" target="_blank" rel="noopener"&gt;avm/res/network/express-route-gateway&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;VPN Gateway (S2S)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/vpn-gateway" target="_blank" rel="noopener"&gt;avm/res/network/vpn-gateway&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;VPN Gateway (P2S)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/p2s-vpn-gateway" target="_blank" rel="noopener"&gt;avm/res/network/p2s-vpn-gateway&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Sidecar VNet&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/virtual-network" target="_blank" rel="noopener"&gt;avm/res/network/virtual-network&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/azure-firewall" target="_blank" rel="noopener"&gt;avm/res/network/azure-firewall&lt;/A&gt;, &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/firewall-policy" target="_blank" rel="noopener"&gt;avm/res/network/firewall-policy&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Bastion&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/bastion-host" target="_blank" rel="noopener"&gt;avm/res/network/bastion-host&lt;/A&gt;, &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/public-ip-address" target="_blank" rel="noopener"&gt;avm/res/network/public-ip-address&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;DDoS Protection&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/ddos-protection-plan" target="_blank" rel="noopener"&gt;avm/res/network/ddos-protection-plan&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Private DNS&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/network/private-link-private-dns-zones" target="_blank" rel="noopener"&gt;avm/ptn/network/private-link-private-dns-zones&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;DNS Private Resolver&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;networking/virtualwan/&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/network/dns-resolver" target="_blank" rel="noopener"&gt;avm/res/network/dns-resolver&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Resource&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;HR /&gt;
&lt;H4&gt;What This Means for You&lt;/H4&gt;
&lt;P&gt;The move to AVM delivers tangible benefits:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;End-to-end customization:&lt;/STRONG&gt; Configure every aspect of your Platform Landing Zone without limitations&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Name everything your way:&lt;/STRONG&gt; Apply your naming conventions to all resources and management groups&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Flexible hierarchy:&lt;/STRONG&gt; Restructure management groups with minimal effort as your organization evolves&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Minimal hardcoded values:&lt;/STRONG&gt; Just about every property is now configurable&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Faster innovation:&lt;/STRONG&gt; Multiple module owners means features and fixes arrive faster than ever&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;Azure Deployment Stacks&lt;/H3&gt;
&lt;P&gt;We've integrated &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deployment-stacks?tabs=azure-powershell" target="_blank" rel="noopener"&gt;Azure Deployment Stacks &lt;/A&gt;and it's a game changer for lifecycle management for Bicep.&lt;/P&gt;
&lt;H4&gt;What are Deployment Stacks?&lt;/H4&gt;
&lt;P&gt;Deployment Stacks track the resources that should exist based on your templates and automatically clean up anything that's no longer defined. It's somewhat similar to Terraform's state management, but native to Azure and built into the platform so you don't have to manage a state file.&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Key Benefits&lt;/H4&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Benefit&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;No Manual Cleanup&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;No more manual cleanup required&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Consistent State&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Ensures consistency between your templates and deployed resources&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Safe Deletion&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Only removes resources managed by the deployment stack&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Deployment History&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Each deployment stack maintains its own history, separate from subscription/management group deployment history&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;NOTE: &lt;/STRONG&gt;Drift detection currently relies on the what-if operator with a non-deployment stack approach. We will transition to deployment stack-based drift detection once it becomes generally available.&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;Modern Parameter Files&lt;/H3&gt;
&lt;P&gt;We've upgraded from JSON to &lt;STRONG&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/parameter-files?tabs=Bicep" target="_blank" rel="noopener"&gt;.bicepparam files&lt;/A&gt;&lt;/STRONG&gt;, a breath of fresh air for developer experience:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;IntelliSense support:&lt;/STRONG&gt; Real-time autocomplete and validation in VS Code&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Function support:&lt;/STRONG&gt; Use Bicep functions directly (no more workarounds!)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Variables:&lt;/STRONG&gt; Define once, reuse everywhere&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Comments:&lt;/STRONG&gt; Document your configuration inline for better team collaboration&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;Deployment with the ALZ Accelerator&lt;/H3&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Landing-Zones/accelerator/" target="_blank" rel="noopener"&gt;Azure Landing Zones IaC Accelerator&lt;/A&gt; remains your fastest path to a production-ready Platform Landing Zone.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Bicep AVM is now the default starter module&lt;/STRONG&gt; and the focus of all future development. It implements enterprise best practices out of the box for both Azure Pipelines and GitHub Actions.&lt;/P&gt;
&lt;H4&gt;Configuration Made Simple&lt;/H4&gt;
&lt;P&gt;Previously, customization was limited to a handful of parameters like &lt;CODE&gt;location&lt;/CODE&gt; and &lt;CODE&gt;network_type&lt;/CODE&gt;. Those days are over.&lt;/P&gt;
&lt;P&gt;The new &lt;STRONG&gt;&lt;CODE&gt;platform-landing-zone.yaml&lt;/CODE&gt;&lt;/STRONG&gt; configuration file gives you quite a bit more control (and more is planned in the near term):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Management group structure:&lt;/STRONG&gt; Customize the entire hierarchy with your naming and organization&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resource naming:&lt;/STRONG&gt; Apply consistent naming patterns across all resource groups&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Network architecture:&lt;/STRONG&gt; Choose between Hub &amp;amp; Spoke (&lt;CODE&gt;hubNetworking&lt;/CODE&gt;), Virtual WAN (&lt;CODE&gt;vwanConnectivity&lt;/CODE&gt;), or no networking (&lt;CODE&gt;none&lt;/CODE&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure regions:&lt;/STRONG&gt; Deploy to any combination of regions for your requirements&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Example Configuration&lt;/H4&gt;
&lt;PRE class="language-yaml" tabindex="0" contenteditable="false" data-lia-code-value="## Platform Landing Zone Azure Regions
starter_locations: [&amp;quot;eastus&amp;quot;, &amp;quot;westus2&amp;quot;]

# Management Groups - Full customization of naming
management_group_id_prefix: &amp;quot;contoso&amp;quot;
management_group_int_root_id: &amp;quot;alz&amp;quot;
management_group_int_root_name: &amp;quot;Contoso Landing Zones&amp;quot;

# Resource Groups - Consistent naming patterns
resource_group_logging_name_prefix: &amp;quot;rg-alz-logging&amp;quot;
resource_group_hub_networking_name_prefix: &amp;quot;rg-alz-conn&amp;quot;
resource_group_dns_name_prefix: &amp;quot;rg-alz-dns&amp;quot;

# Networking - Choose your architecture
network_type: &amp;quot;hubNetworking&amp;quot;  # Options: hubNetworking, vwanConnectivity, none
"&gt;&lt;CODE&gt;## Platform Landing Zone Azure Regions
starter_locations: ["eastus", "westus2"]

# Management Groups - Full customization of naming
management_group_id_prefix: "contoso"
management_group_int_root_id: "alz"
management_group_int_root_name: "Contoso Landing Zones"

# Resource Groups - Consistent naming patterns
resource_group_logging_name_prefix: "rg-alz-logging"
resource_group_hub_networking_name_prefix: "rg-alz-conn"
resource_group_dns_name_prefix: "rg-alz-dns"

# Networking - Choose your architecture
network_type: "hubNetworking"  # Options: hubNetworking, vwanConnectivity, none
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;We plan to add more specific options that can be overridden prior to bootstrapping as well. &lt;STRONG&gt;Comment below if you think anything in particular should be provided&lt;/STRONG&gt; – maybe whether or not DDoS should be enabled... 😁&lt;/P&gt;
&lt;HR /&gt;
&lt;H3&gt;Independent Policy Management with the ALZ Library&lt;/H3&gt;
&lt;P&gt;Like the Terraform implementation, Bicep AVM now leverages the &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Landing-Zones-Library/" target="_blank" rel="noopener"&gt;Azure Landing Zones Library.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The key innovation?&lt;/STRONG&gt; Decoupled update cycles. The Library separates policy data from deployment logic, which means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Update the module to get bug fixes &lt;STRONG&gt;without touching policies&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Refresh policies to the latest ALZ Library version &lt;STRONG&gt;without updating other components&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;No more forced coupling between infrastructure changes and policy updates&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Landing-Zones/bicep/howtos/modifyingpolicyassets/" target="_blank" rel="noopener"&gt;ALZ Bicep specific Library documentation&lt;/A&gt; provides full details. Our vision is to make this the single source of truth for policies across all ALZ implementations: Portal, Terraform, and Bicep.&lt;/P&gt;
&lt;H4&gt;Custom Policies Without the Upgrade Pain&lt;/H4&gt;
&lt;P&gt;We've heard your frustrations about "upgrade hell" when customizing policies in classic ALZ-Bicep. The new approach aims to solve or at least improve considerably:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Direct library integration:&lt;/STRONG&gt; Leverage the ALZ library directly in your deployments&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Clean separation:&lt;/STRONG&gt; Your custom policies stay separate from ALZ defaults&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Built-in customization:&lt;/STRONG&gt; Each management group module includes dedicated properties for your custom policies&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Update ALZ defaults independently from your custom policies without merge conflicts or upgrade headaches.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;The Future of ALZ-Bicep Classic&lt;/H2&gt;
&lt;P&gt;With Bicep AVM now generally available and set as the default in the ALZ Accelerator for Bicep, we're beginning the deprecation process for classic ALZ-Bicep.&lt;/P&gt;
&lt;H3&gt;Timeline&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Action&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Now&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Bicep - Azure Verified Modules for Platform Landing Zone (ALZ) is the default starter module&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;February 16th, 2026&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Bicep (Classic) starter module removed from Accelerator&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;February 16th, 2027&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;ALZ-Bicep repository archived&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Currently, ALZ-Bicep is still supported in the Accelerator as &lt;STRONG&gt;"Bicep Classic - Complete"&lt;/STRONG&gt; (&lt;A href="{{Bicep-Classic-Docs-URL}}" target="_blank" rel="noopener"&gt;documentation&lt;/A&gt;), but this will be removed in entirety on &lt;STRONG&gt;February 16th, 2026&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Although it will be removed from the Accelerator, the ALZ-Bicep repository will still be supported in terms of:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Bug fixes&lt;/LI&gt;
&lt;LI&gt;Security patches&lt;/LI&gt;
&lt;LI&gt;Policy refreshes&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;...for a period of &lt;STRONG&gt;12 months&lt;/STRONG&gt; after that date. After February 16th, 2027, the ALZ-Bicep repository will be archived and no longer supported.&lt;/P&gt;
&lt;H3&gt;Migration Support&lt;/H3&gt;
&lt;P&gt;A &lt;STRONG&gt;comprehensive migration guide&lt;/STRONG&gt; is coming soon to help you transition from classic ALZ-Bicep to Bicep AVM. We'll provide step-by-step instructions and tooling to make the process as smooth as possible. Stay tuned!&lt;/P&gt;</description>
      <pubDate>Mon, 02 Feb 2026 09:29:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/release-of-bicep-azure-verified-modules-for-platform-landing/ba-p/4487932</guid>
      <dc:creator>ztrocinski</dc:creator>
      <dc:date>2026-02-02T09:29:21Z</dc:date>
    </item>
    <item>
      <title>Gaining Confidence with Az CLI and Az PowerShell: Introducing What if &amp;  Export Bicep</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/gaining-confidence-with-az-cli-and-az-powershell-introducing/ba-p/4472147</link>
      <description>&lt;P&gt;Ever hesitated before hitting&amp;nbsp;&lt;STRONG&gt;Enter&lt;/STRONG&gt; on a command, wondering what changes it might make? You’re not alone. Whether you’re deploying resources or updating configurations, the fear of unintended consequences can slow you down. That’s why we’re introducing new powerful features in Azure CLI and Azure PowerShell to preview the changes the commands may make: the What if and Export Bicep features.&lt;/P&gt;
&lt;P&gt;These capabilities allow you to preview the impact of your commands and allow you to export them as Bicep templates, all before making any changes to your Azure environment. Think of them as your safety net: you can validate actions, confirm resource changes, and even generate reusable infrastructure-as-code templates with confidence.&lt;/P&gt;
&lt;P&gt;Currently, these features are in &lt;STRONG&gt;private preview&lt;/STRONG&gt;, and we’re excited to share how you can get early access.&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;Why This Matters&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Reduce risk:&lt;/STRONG&gt; Avoid accidental resource deletions or costly misconfigurations.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Build confidence:&lt;/STRONG&gt; Understand exactly what your command will do before execution.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Accelerate adoption of IaC:&lt;/STRONG&gt; Convert CLI commands into Bicep templates automatically.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Improve productivity:&lt;/STRONG&gt; Validate scripts quickly without trial-and-error deployments.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;How It Works&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H5&gt;&lt;STRONG&gt;What if preview of commands&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;All you have to do is add the `--what-if` parameter to Azure CLI commands and then the `-DryRun` command to Azure PowerShell commands like below.&lt;/P&gt;
&lt;P&gt;Azure CLI:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 106.204%; height: 67px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr style="height: 69px;"&gt;&lt;td style="height: 69px;"&gt;
&lt;PRE&gt;az storage account create --name "mystorageaccount" --resource-group "myResourceGroup" --location "eastus" &lt;STRONG&gt;--what-if&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Azure PowerShell:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 103.889%; height: 59px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;PRE&gt;New-AzVirtualNetwork -name MyVNET -ResourceGroupName MyResourceGroup -Location eastus -AddressPrefix "10.0.0.0/16" &lt;STRONG&gt;-DryRun&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H5&gt;&lt;STRONG&gt;Exporting commands to Bicep&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;To generate bicep from the command you will have to add the `&lt;STRONG&gt;--export-bicep&lt;/STRONG&gt;` command with the -&lt;STRONG&gt;-what-if&lt;/STRONG&gt; parameter to generate a bicep file. The bicep code will be saved under the `~/.azure/whatif` directory on your machine. The command will specific exactly where the file is saved on your machine.&lt;/P&gt;
&lt;P&gt;Behind the scenes, &lt;STRONG&gt;AI translates your CLI command into Bicep code&lt;/STRONG&gt;, creating a reusable template for future deployments. After generating the Bicep file, the CLI automatically runs a &lt;STRONG&gt;What-If analysis on the Bicep template&lt;/STRONG&gt; to show you the expected changes before applying them.&lt;/P&gt;
&lt;P&gt;Here is a video of it in action!&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Here is another example where there is delete, modify and create actions happening all together.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Private Preview Access&lt;/H2&gt;
&lt;P&gt;These features are available in &lt;STRONG&gt;private preview&lt;/STRONG&gt;. To sign up:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Visit the &lt;A class="lia-external-url" href="http://aka.ms/PreviewSignupPSCLI" target="_blank"&gt;aka.ms/PreviewSignupPSCLI&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Submit your request for access.&lt;/LI&gt;
&lt;LI&gt;Once approved, you’ll receive instructions to download the preview package.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Supported Commands (Private Preview)&lt;/H2&gt;
&lt;P&gt;Given these features are in a preview we have only added support for a small set of commands for the time being. Here’s a list of commands that will support these features during the private preview:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure CLI&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Az vm create&lt;/LI&gt;
&lt;LI&gt;Az vm update&lt;/LI&gt;
&lt;LI&gt;az storage account create&lt;/LI&gt;
&lt;LI&gt;az storage container create&lt;/LI&gt;
&lt;LI&gt;az storage share create&lt;/LI&gt;
&lt;LI&gt;az network vnet create&lt;/LI&gt;
&lt;LI&gt;az network vnet update&lt;/LI&gt;
&lt;LI&gt;az storage account network-rule add&lt;/LI&gt;
&lt;LI&gt;az vm disk attach&lt;/LI&gt;
&lt;LI&gt;az vm disk detach&lt;/LI&gt;
&lt;LI&gt;az vm nic remove&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Azure PowerShell&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;New-AzVM&lt;/LI&gt;
&lt;LI&gt;Update-AzVM&lt;/LI&gt;
&lt;LI&gt;New-AzStorageAccount&lt;/LI&gt;
&lt;LI&gt;New-AzRmStorageShare&lt;/LI&gt;
&lt;LI&gt;New-AzRmStorageContainer&lt;/LI&gt;
&lt;LI&gt;New-AzVirtualNetwork&lt;/LI&gt;
&lt;LI&gt;Set-AzVirtualNetwork&lt;/LI&gt;
&lt;LI&gt;Add-AzStorageAccountNetworkRule&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;Next Steps&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Sign up for the private preview.&lt;/LI&gt;
&lt;LI&gt;Install the packages using the upcoming script.&lt;/LI&gt;
&lt;LI&gt;Start using --what-if, -DryRun, and --export-bicep to make safer, smarter decisions and accelerate your IaC journey.&lt;/LI&gt;
&lt;LI&gt;Give us feedback on what you think of the feature! At &lt;A href="https://aka.ms/PreviewFeedbackWhatIf" target="_blank"&gt;https://aka.ms/PreviewFeedbackWhatIf&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Thanks so much!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Steven Bucher&lt;/P&gt;
&lt;P&gt;PM for Azure Client Tools&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Nov 2025 18:39:06 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/gaining-confidence-with-az-cli-and-az-powershell-introducing/ba-p/4472147</guid>
      <dc:creator>stevenbucher</dc:creator>
      <dc:date>2025-11-21T18:39:06Z</dc:date>
    </item>
    <item>
      <title>Azure CLI and Azure PowerShell Ignite 2025 Announcement</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-ignite-2025-announcement/ba-p/4471182</link>
      <description>&lt;P&gt;In 2025, the key investment areas for Azure CLI and Azure PowerShell are quality and security. We have also made significant efforts to improve the overall user experience. Meanwhile, AI remains a central theme.&lt;/P&gt;
&lt;P&gt;At Microsoft Ignite 2025, we are pleased to announce several new features related to these priorities:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;In terms of security: MFA enforcement&lt;/LI&gt;
&lt;LI&gt;Azure CLI Upgrade and Python 3.13 Compatibility explanation&lt;/LI&gt;
&lt;LI&gt;New feature: Azure CLI and Azure PowerShell -&lt;STRONG&gt;&lt;EM&gt;What-If&lt;/EM&gt;&lt;/STRONG&gt; and &lt;STRONG&gt;&lt;EM&gt;-export bicep&lt;/EM&gt;&lt;/STRONG&gt; parameter&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Extending our coverage&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We’ve rolled out significant updates across Azure CLI and Azure PowerShell to enhance functionality:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure CLI and Azure PowerShell Upgrades&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Services updated: ACR, ACS, AKS, App Config, App Service, ARM, ARO, Backup, Batch, Cloud, Compute, Consumption, Container, Container app, Core, Cosmos DB, Cognitive Services, DMS, Eventhub, HDInsight, Identity, IoT, Key Vault, MySQL, NetAppFiles, Network, Packaging, Profile, RDBMS, Service Fabric, SQL, Storage.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;New Extensions for Azure CLI and Azure PowerShell&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Extensions added: arize-ai,connectedmachine,containerapp,lambda-test,migrate,neon,pscloud,sftp,site,storage-blob-preview.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;New GA Modules for Azure CLI and Azure PowerShell&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Modules are now generally available: DeviceRegistry, DataMigration, FirmwareAnalysis,LoadTesting,StorageDiscovery , DataTransfer, ArizeAI, Fabric, StorageAction, Oracle&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;For detailed release notes:  &amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure CLI: &lt;A href="https://learn.microsoft.com/cli/azure/release-notes-azure-cli" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/cli/azure/release-notes-azure-cli&lt;/A&gt; &amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Azure PowerShell:  &lt;A href="https://learn.microsoft.com/powershell/azure/release-notes-azureps" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/powershell/azure/release-notes-azureps&lt;/A&gt;  &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Azure CLI Upgrade and Python 3.13 Compatibility Notes&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure CLI has been upgraded from version &lt;STRONG&gt;2.76 to 2.77&lt;/STRONG&gt; primarily to address several security vulnerabilities (CVE), including issues related to remote code execution risks and certificate validation flaws in underlying dependencies, ensuring compliance with the latest security standards.&lt;/P&gt;
&lt;P&gt;This upgrade requires Python to move from &lt;STRONG&gt;3.12 to 3.13&lt;/STRONG&gt;, which introduces a significant change:&lt;BR /&gt;Python 3.13 enforces stricter SSL verification rules, causing failures for users running behind proxies that intercept HTTPS traffic.&lt;BR /&gt;Solution: Update your proxy certificate to comply with strict mode. For instance, Mitmproxy fixed this in version v10.1.2 (reference: &lt;EM&gt;https://github.com/Azure/azure-cli/issues/32083#issuecomment-3274196488&lt;/EM&gt;).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more Python3.13 details, see &lt;A class="lia-external-url" href="https://docs.python.org/3/whatsnew/3.13.html" target="_blank" rel="noopener"&gt;What’s New In Python 3.13&lt;/A&gt; .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Handling Claims Challenges for MFA in Azure CLI and Azure PowerShell&lt;BR /&gt;&lt;BR /&gt;&lt;/H2&gt;
&lt;P&gt;Claims challenges appear when ARM begins enforcing MFA requirements. If a user performs create, update, or delete operations without the necessary MFA claims, ARM rejects the request and returns a claims challenge, indicating that higher-level authentication is required before the API call can proceed. This mechanism is designed to ensure sensitive operations are performed only by users who have completed MFA.&lt;/P&gt;
&lt;P&gt;The challenge arises because Azure CLI and Azure PowerShell can only acquire MFA claims during the login phase, and only if the user’s account is configured to require MFA. Changing this setting affects all services associated with the account, and many customers are reluctant to enable MFA at the account level. As a result, when a claims challenge occurs, Azure CLI and Azure PowerShell cannot automatically trigger MFA in the same way Azure Portal does.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure CLI example:&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "&amp;lt;claims-challenge-token&amp;gt;"&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For more details, see:&lt;/P&gt;
&lt;P&gt;Azure CLI&lt;A href="https://learn.microsoft.com/en-us/entra/identity/authentication/concept-mandatory-multifactor-authentication?tabs=dotnet#application-ids-and-urls" target="_blank" rel="noopener"&gt;:&lt;/A&gt; &lt;A class="lia-external-url" href="https://learn.microsoft.com/cli/azure/use-azure-cli-successfully-troubleshooting#troubleshooting-multifactor-authentication-mfa" target="_blank" rel="noopener"&gt;Troubleshooting Azure CLI | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure PowerShell example:&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Connect-AzAccount -Tenant yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyy -Subscription zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzz -ClaimsChallenge &amp;lt;claims-challenge-token&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For more details, see:&lt;/P&gt;
&lt;P&gt;Azure PowerShell: &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/azure/troubleshooting#troubleshooting-multifactor-authentication-mfa" target="_blank" rel="noopener"&gt;Troubleshooting the Az PowerShell module | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Advanced cloud analysis capabilities, involving capacity insights or forecasting in Azure CLI&lt;/H2&gt;
&lt;P&gt;With this update, Azure CLI now uses the latest ARM API version (2022-09-01) for endpoint discovery during cloud registration and updates, replacing the older API versions previously used. This ensures more accurate and up-to-date service endpoints, simplifies the configuration of custom Azure clouds, and improves reliability when retrieving required endpoints. By adopting the new API, Azure CLI stays aligned with the latest Azure platform capabilities, increasing both compatibility and forward-compatibility. As a result, users benefit from more accurate endpoint discovery and improved support for new Azure features and service endpoints as they become available.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more details about managing cloud environments in Azure CLI, please refer to the official documentation: &amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cli/azure/manage-clouds-azure-cli" target="_blank" rel="noopener"&gt;Azure cloud management with the Azure CLI | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Azure PowerShell - Add Pagination Support for 'Invoke-AzRestMethod' via '-Paginate' parameter&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Invoke-AzRest&lt;/STRONG&gt;&lt;STRONG&gt;Method&lt;/STRONG&gt; is a flexible fallback for calling Azure Management APIs, returning raw HTTP responses from underlying endpoints, but it currently lacks built-in pagination, forcing users to implement custom logic when working with large datasets. Since pagination was not part of the original design, changing the default behavior could break existing scripts that depend on the current response format and &lt;STRONG&gt;&lt;EM&gt;nextLink&lt;/EM&gt;&lt;/STRONG&gt; handling. To address this without disruption, we plan to introduce pagination as an optional opt-in feature, enabling users to retrieve complete datasets through server-driven pagination without writing custom code while preserving the current behavior by default for full backward compatibility.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more details, see the official documentation for &lt;STRONG&gt;Invoke-AzRestMethod&lt;/STRONG&gt;: &lt;A href="https://learn.microsoft.com/powershell/module/az.accounts/invoke-azrestmethod" target="_blank" rel="noopener"&gt;Invoke-AzRestMethod (Az.Accounts) | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Introducing Azure CLI and Azure PowerShell -&lt;STRONG&gt;&lt;EM&gt;What-If&lt;/EM&gt;&lt;/STRONG&gt; and &lt;STRONG&gt;&lt;EM&gt;-export bicep&lt;/EM&gt;&lt;/STRONG&gt; parameter&lt;/H2&gt;
&lt;P&gt;&lt;BR /&gt;We’re introducing two new features in both Azure CLI and Azure PowerShell: the &lt;EM&gt;What-If &lt;/EM&gt;and &lt;EM&gt;Export Bicep&lt;/EM&gt; parameters. The &lt;EM&gt;What-If &lt;/EM&gt;parameter gives you an intelligent preview of which resources will be created, updated, or deleted before a command runs, helping you catch issues early and avoid unexpected changes. The &lt;EM&gt;Export Bicep&lt;/EM&gt; parameter generates the corresponding Bicep templates to streamline your infrastructure-as-code workflows. Both features leverage AI to assist with command interpretation and template generation. If you’d like to try these capabilities in Azure CLI and Azure PowerShell, you can sign up through our &lt;A class="lia-external-url" href="https://aka.ms/PreviewSignupPSCLI" target="_blank" rel="noopener"&gt;form&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please stay tuned for more updates.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Breaking Changes &amp;nbsp;&lt;/H2&gt;
&lt;P&gt;The latest breaking change guidance documents can be found at the links below. To read more about the breaking changes migration guide, ensure your environment is ready to install the newest version of Azure CLI and Azure PowerShell.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure CLI:&amp;nbsp; &lt;A href="https://learn.microsoft.com/cli/azure/release-notes-azure-cli" target="_blank" rel="noopener"&gt;Release notes &amp;amp; updates – Azure CLI | Microsoft Learn&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure PowerShell: &lt;A href="https://learn.microsoft.com/powershell/azure/migrate-az-15.0.0" target="_blank" rel="noopener"&gt;Migration guide for Az 15.0.0 | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Milestone timelines:&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-cli/milestones" target="_blank" rel="noopener"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Azure CLI Milestones&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell/milestones" target="_blank" rel="noopener"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Azure PowerShell Milestones&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thank you for using the Azure command-line tools. We look forward to continuing to improve your experience. We hope you enjoy Ignite and all the great work released this week. We'd love to hear your feedback, so feel free to reach out anytime.  &amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GitHub:&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; o&amp;nbsp;&amp;nbsp; &lt;A href="https://github.com/Azure/azure-cli" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-cli&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; o&amp;nbsp;&amp;nbsp; &lt;A href="https://github.com/Azure/azure-powershell" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-powershell&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Let's be in touch on X (Twitter) : &lt;A href="https://twitter.com/azureposh" target="_blank" rel="noopener"&gt;@azureposh&lt;/A&gt;   &lt;A href="https://twitter.com/azurecli" target="_blank" rel="noopener"&gt;@AzureCli &lt;/A&gt; &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Nov 2025 19:13:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-ignite-2025-announcement/ba-p/4471182</guid>
      <dc:creator>Alex-wdy</dc:creator>
      <dc:date>2025-11-19T19:13:15Z</dc:date>
    </item>
    <item>
      <title>Accelerating Infrastructure as Code: Introducing Game-Changing Terraform Features for Azure</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/accelerating-infrastructure-as-code-introducing-game-changing/ba-p/4457341</link>
      <description>&lt;P&gt;We're thrilled to announce a suite of powerful new features from the Terraform on Azure Team that will revolutionize how you build, manage, and deploy infrastructure. These enhancements deliver an unprecedented end-to-end experience that makes Terraform on Azure more accessible, intelligent, and comprehensive than ever before.&lt;/P&gt;
&lt;H1&gt;Seamless Code Generation to Deployment Experience&lt;/H1&gt;
&lt;H3&gt;&lt;EM&gt;Public Preview: October 2025&lt;/EM&gt;&lt;/H3&gt;
&lt;P&gt;Say goodbye to starting from scratch. Our new integrated workflow transforms how you create and deploy Terraform configurations through a streamlined journey that begins right in the Azure portal.&lt;/P&gt;
&lt;P&gt;With Copilot in Azure, you can now describe your infrastructure requirements in natural language and watch as production-ready Terraform code materializes before your eyes. This AI-powered assistant understands your intent and generates optimized HCL code that follows best practices—no more hunting through documentation or wrestling with syntax.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The experience seamlessly transitions to VS Code for the web, where you can view, refine, and iterate on your generated code in a familiar development environment. Make adjustments, test configurations, and collaborate with your team—all without leaving your browser. When you're satisfied with your infrastructure definition, deploy with confidence using either HCP Terraform or Azure for state management, ensuring your infrastructure remains consistent and trackable.&lt;/P&gt;
&lt;H1&gt;Unified VS Code Extension: Your Complete Terraform Toolkit&lt;/H1&gt;
&lt;H3&gt;&lt;EM&gt;Public Preview: Available Now&lt;/EM&gt;&lt;/H3&gt;
&lt;P&gt;We've consolidated the Terraform development experience into a single, powerful VS Code extension from Microsoft that serves as your command center for all things Terraform from Microsoft.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;IntelliSense support for all Microsoft providers brings intelligent code completion, parameter hints, and inline documentation directly to your fingertips, dramatically reducing errors and accelerating development. No more context switching to check resource schemas or argument names—everything you need appears as you type.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jump-start your projects with Code Samples that provide fully functional, production-ready templates for common Azure architectures. Whether you're building a microservices platform, data pipeline, or enterprise network, these samples give you a solid foundation to build upon.&lt;/P&gt;
&lt;P&gt;The game-changing Export Terraform feature allows you to reverse-engineer your existing Azure infrastructure into clean HCL code directly from VS Code. This bridges the gap between manually created resources and Infrastructure as Code, making it easier than ever to adopt Terraform for existing environments.&lt;/P&gt;
&lt;P&gt;Perhaps most importantly, the Policy/Preflight validation capability goes beyond traditional terraform plan by leveraging Azure's preflight system. This advanced validation catches configuration issues, policy violations, and potential deployment problems before they impact your environment. Validate against organizational policies, compliance requirements, and Azure best practices—all before a single resource is created.&lt;/P&gt;
&lt;H1&gt;MS Graph Provider: Extending Terraform Beyond Infrastructure&lt;/H1&gt;
&lt;H3&gt;&lt;EM&gt;Public Preview: Available Now&lt;/EM&gt;&lt;/H3&gt;
&lt;P&gt;Infrastructure doesn't exist in isolation, and neither should your Terraform configurations. The new MS Graph provider brings the same declarative power you love about the Azure provider to the entire Microsoft ecosystem.&lt;/P&gt;
&lt;P&gt;Built with an AzAPI-like architecture for day-zero support of new features, this provider enables you to manage resources across the Microsoft platform including Microsoft 365 configurations, Windows settings, Enterprise Mobility + Security policies, and Dynamics 365 customizations. Manage users, groups, applications, and security policies alongside your Azure infrastructure—all in the same Terraform configuration.&lt;/P&gt;
&lt;P&gt;This unified approach means you can now define your entire organizational IT landscape as code, from the Azure resources powering your applications to the Microsoft 365 settings governing user productivity and security policies protecting your data.&lt;/P&gt;
&lt;H1&gt;Ready to Transform Your Infrastructure Journey?&lt;/H1&gt;
&lt;P&gt;These features represent our commitment to making Terraform a first class tool for managing Azure and Microsoft resources. Whether you're new to Infrastructure as Code or a seasoned practitioner, these enhancements will accelerate your workflow and expand what's possible with Terraform.&lt;/P&gt;
&lt;P&gt;Get started today by updating your VS Code extension and exploring the new Copilot experience in the Azure portal. The future of infrastructure automation on Azure is here—and it's more powerful than ever.&lt;/P&gt;
&lt;P&gt;Visit our documentation to learn more and join our community to share feedback and connect with other Terraform on Azure users. Together, we're building the future of cloud infrastructure.&lt;/P&gt;
&lt;P&gt;Terraform on Azure Product Group&lt;/P&gt;</description>
      <pubDate>Fri, 26 Sep 2025 15:53:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/accelerating-infrastructure-as-code-introducing-game-changing/ba-p/4457341</guid>
      <dc:creator>stevenjma</dc:creator>
      <dc:date>2025-09-26T15:53:50Z</dc:date>
    </item>
    <item>
      <title>Announcing MSGraph Provider Public Preview and the Microsoft Terraform VSCode Extension</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-msgraph-provider-public-preview-and-the-microsoft/ba-p/4443614</link>
      <description>&lt;P&gt;We are thrilled to announce two exciting developments in the Microsoft ecosystem for Terraform infrastructure-as-code (IaC) practitioners: the public preview of the Terraform Microsoft Graph (MSGraph) provider and the release of the Microsoft Terraform Visual Studio Code (VSCode) extension. These innovations are designed to streamline your workflow, empower your automation, and make managing Microsoft cloud resources easier than ever.&lt;/P&gt;
&lt;H1&gt;Public Preview: Terraform Microsoft Graph (MSGraph) Provider&lt;/H1&gt;
&lt;P&gt;The &lt;A href="https://techcommunity.microsoft.com/t5/learn.microsoft.com/graph/templates/terraform" target="_blank" rel="noopener"&gt;Terraform MSGraph provider&lt;/A&gt; empowers you to manage &lt;A href="https://github.com/MicrosoftDocs/msgraph-terraform-docs-pr/blob/main/entra/id-governance/privileged-identity-management/pim-apis" target="_blank" rel="noopener"&gt;Entra APIs like privileged identity management&lt;/A&gt;&amp;nbsp;as well as&amp;nbsp;&lt;A href="https://github.com/MicrosoftDocs/msgraph-terraform-docs-pr/blob/main/graph/api/resources/sharepoint" target="_blank" rel="noopener"&gt;M365 Graph APIs like SharePoint sites&lt;/A&gt; from day 0 by leveraging the power and flexibility of HashiCorp Configuration Language (HCL) in Terraform.&lt;/P&gt;
&lt;LI-CODE lang="hcl"&gt;resource "msgraph_resource" "application" {
   url = "applications"
   body = {
     displayName = "My Application"
   }
   response_export_values = {
     all    = "@"
     app_id = "appId"
   }
 }

 output "app_id" {
   value = msgraph_resource.application.output.app_id
 }

 output "all" {
   // it will output the whole response
   value = msgraph_resource.application.output.all
 }&lt;/LI-CODE&gt;
&lt;P&gt;Historically, Terraform users could utilize the `azuread` provider to manage Entra features like users, groups, service principals, and applications. The new `msgraph` provider also supports these features and extends functionality to all beta and v1 Microsoft Graph endpoints.&lt;/P&gt;
&lt;H2&gt;Querying role assignments for a service principal&lt;/H2&gt;
&lt;P&gt;The below example shows how to use the `msgraph` provider to grant app permissions to a service principal:&lt;/P&gt;
&lt;LI-CODE lang="hcl"&gt;locals {
  MicrosoftGraphAppId = "00000003-0000-0000-c000-000000000000"

  # AppRoleAssignment
  userReadAllAppRoleId = one([for role in data.msgraph_resource.servicePrincipal_msgraph.output.all.value[0].appRoles : role.id if role.value == "User.Read.All"])
  userReadWriteRoleId  = one([for role in data.msgraph_resource.servicePrincipal_msgraph.output.all.value[0].oauth2PermissionScopes : role.id if role.value == "User.ReadWrite"])

  # ServicePrincipal
  MSGraphServicePrincipalId         = data.msgraph_resource.servicePrincipal_msgraph.output.all.value[0].id
  TestApplicationServicePrincipalId = msgraph_resource.servicePrincipal_application.output.all.id
}

data "msgraph_resource" "servicePrincipal_msgraph" {
  url = "servicePrincipals"
  query_parameters = {
    "$filter" = ["appId eq '${local.MicrosoftGraphAppId}'"]
  }
  response_export_values = {
    all = "@"
  }
}

resource "msgraph_resource" "application" {
  url = "applications"
  body = {
    displayName = "My Application"
    requiredResourceAccess = [
      {
        resourceAppId = local.MicrosoftGraphAppId
        resourceAccess = [
          {
            id   = local.userReadAllAppRoleId
            type = "Scope"
          },
          {
            id   = local.userReadWriteRoleId
            type = "Scope"
          }
        ]
      }
    ]
  }
  response_export_values = {
    appId = "appId"
  }
}

resource "msgraph_resource" "servicePrincipal_application" {
  url = "servicePrincipals"
  body = {
    appId = msgraph_resource.application.output.appId
  }
  response_export_values = {
    all = "@"
  }
}

resource "msgraph_resource" "appRoleAssignment" {
  url = "servicePrincipals/${local.MSGraphServicePrincipalId}/appRoleAssignments"
  body = {
    appRoleId   = local.userReadAllAppRoleId
    principalId = local.TestApplicationServicePrincipalId
    resourceId  = local.MSGraphServicePrincipalId
  }
}&lt;/LI-CODE&gt;
&lt;H2&gt;SharePoint &amp;amp; Outlook Notifications&lt;/H2&gt;
&lt;P&gt;With your service principals properly configured, you can set up M365 endpoint workflows such an outlook notification template list as shown below. The actual service principal setup has been omitted from this code sample for the sake of brevity, but you will need Sites.Manage.All, Sites.ReadWrite.All, User.Read, and User.Read.All permissions for this example to work:&lt;/P&gt;
&lt;LI-CODE lang="hcl"&gt;data "msgraph_resource" "sharepoint_site_by_path" {
  url = "sites/microsoft.sharepoint.com:/sites/msgraphtest:"
  response_export_values = {
    full_response = "@"
    site_id = "id || ''"
  }
}

resource "msgraph_resource" "notification_templates_list" {
  url = "sites/${msgraph_resource.sharepoint_site_by_path.output.site_id}/lists"
  body = {
    displayName = "DevOps Notification Templates"
    description = "Centrally managed email templates for DevOps automation"
    template = "genericList"
    columns = [
      {
        name = "TemplateName"
        text = {
          allowMultipleLines = false
          appendChangesToExistingText = false
          linesForEditing = 1
          maxLength = 255
        }
      },
      {
        name = "Subject"
        text = {
          allowMultipleLines = false
          appendChangesToExistingText = false
          linesForEditing = 1
          maxLength = 500
        }
      },
      {
        name = "HtmlBody"
        text = {
          allowMultipleLines = true
          appendChangesToExistingText = false
          linesForEditing = 10
          maxLength = 10000
        }
      },
      {
        name = "Recipients"
        text = {
          allowMultipleLines = true
          appendChangesToExistingText = false
          linesForEditing = 3
          maxLength = 1000
        }
      },
      {
        name = "TriggerConditions"
        text = {
          allowMultipleLines = true
          appendChangesToExistingText = false
          linesForEditing = 5
          maxLength = 2000
        }
      }
    ]
  }
  response_export_values = {
    list_id = "id"
    list_name = "displayName"
    web_url = "webUrl"
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;The MSGraph provider is to AzureAD as the AzAPI provider is to AzureRM. Since support for resource types is automatic, you can access the latest features and functionality as soon as they're released via the provider. AzureAD will continue to serve as the convenience layer implementation of a subset of Entra APIs.&lt;/P&gt;
&lt;P&gt;We invite you to try the new provider today:&lt;/P&gt;
&lt;P&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A class="lia-external-url" href="https://learn.microsoft.com/graph/templates/terraform/quickstart-create-terraform" target="_blank" rel="noopener"&gt;Deploy your first msgraph resources&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A class="lia-external-url" href="https://registry.terraform.io/providers/microsoft/msgraph/latest" target="_blank" rel="noopener"&gt;Check out the registry page&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A class="lia-external-url" href="https://github.com/Microsoft/terraform-provider-msgraph" target="_blank" rel="noopener"&gt;Visit the provider GitHub&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Introducing the Microsoft Terraform VSCode Extension&lt;/H1&gt;
&lt;P&gt;The new official Microsoft Terraform extension for Visual Studio Code consolidates AzureRM, AzAPI, and MSGraph VSCode support into a single powerful extension. The extension supports exporting Azure resources as Terraform code, as well as IntelliSense, syntax highlighting, and code sample generation. It replaces the Azure Terraform and AzAPI VSCode extensions and adds some new features.&lt;/P&gt;
&lt;H2&gt;Installation &amp;amp; Migration&lt;/H2&gt;
&lt;P&gt;New users can install the extension by searching “Microsoft Terraform” within Visual Studio Marketplace or their “Extensions” tab. &lt;A href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform" target="_blank" rel="noopener"&gt;Users can also click this link to the Visual Studio marketplace.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Users of the “Azure Terraform” extension can navigate to “Extensions” tab and selecting the old extension. Select the “Migrate” button to move to the new extension.&lt;/P&gt;
&lt;P&gt;Users of the “Terraform AzAPI Provider” extension will be directed to the new extension:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;New Features&lt;/H2&gt;
&lt;H3&gt;Export Azure Resources As Terraform&lt;/H3&gt;
&lt;P&gt;This feature allows you to export existing Azure resources as Terraform configuration blocks using Azure Export for Terraform. This helps you migrate existing Azure resources to Terraform-managed infrastructure.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the Command Palette (Command+Shift+P&amp;nbsp;on macOS and&amp;nbsp;Ctrl+Shift+P&amp;nbsp;on Windows/Linux).&lt;/LI&gt;
&lt;LI&gt;Search for and select the command&amp;nbsp;Microsoft Terraform: Export Azure Resource as Terraform.&lt;/LI&gt;
&lt;LI&gt;Follow the prompts to select the Azure subscription and resource group containing the resources you want to export.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;OL&gt;
&lt;LI&gt;Select the&amp;nbsp;azurerm&amp;nbsp;provider or the&amp;nbsp;azapi&amp;nbsp;provider to export the resources.&lt;/LI&gt;
&lt;LI&gt;The extension will generate the Terraform configuration blocks for the selected resources and display them in a new editor tab.&amp;nbsp;&lt;img /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Support for MSGraph&lt;/H3&gt;
&lt;P&gt;The new extension comes fully equipped with intellisense, code completion, and code samples just like the AzAPI provider. See the next section for recorded examples of these features within the AzureRM &amp;amp; AzAPI providers.&lt;/P&gt;
&lt;H2&gt;Preexisting Features&lt;/H2&gt;
&lt;P&gt;Intelligent Code Completion:&lt;/P&gt;
&lt;P&gt;Benefit from context-aware suggestions, like property names or resource types.&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Code Samples:&lt;/H3&gt;
&lt;P&gt;Quickly insert code samples for your resources:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;img /&gt;&lt;img /&gt;&lt;/DIV&gt;
&lt;H3&gt;Paste as AzAPI:&lt;/H3&gt;
&lt;P&gt;Copy your existing resource JSON or ARM Templates into VSCode with the Microsoft Terraform extension, and it will automatically convert your code into AzAPI. The below example takes a resource JSON from the Azure Portal and pastes it into VSCode as AzAPI:&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Migrate AzureRM to AzAPI:&lt;/H3&gt;
&lt;P&gt;Move existing AzureRM code to the AzAPI provider whenever you wish to. Read more in the &lt;A class="lia-external-url" href="https://registry.terraform.io/providers/Azure/azapi/latest/docs/guides/feature_migrate_from_azurerm" target="_blank" rel="noopener"&gt;Guide to migrate AzureRM resources to AzAPI&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;Feedback&lt;/H1&gt;
&lt;P&gt;We value your feedback! You can share your experience with the Microsoft Terraform extension by running the command&amp;nbsp;Microsoft Terraform: Show Survey&amp;nbsp;from the Command Palette. Your input helps us improve the extension and better serve your needs.&lt;/P&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;Whether you are managing traditional Azure resources, modern Microsoft Graph environments, or a combination of both, the new MSGraph provider and Microsoft Terraform VS Code extension are designed to help you deliver robust, reliable infrastructure—faster and with greater confidence.&lt;/P&gt;
&lt;P&gt;Stay tuned for further updates, workshops, and community events as we continue to evolve these offerings. Your feedback and participation are invaluable as we build the next generation of infrastructure automation together.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Aug 2025 17:56:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-msgraph-provider-public-preview-and-the-microsoft/ba-p/4443614</guid>
      <dc:creator>stevenjma</dc:creator>
      <dc:date>2025-08-14T17:56:30Z</dc:date>
    </item>
    <item>
      <title>Terraform Azure Verified Modules for Platform Landing Zone (ALZ) Migration Guidance and Tooling</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/terraform-azure-verified-modules-for-platform-landing-zone-alz/ba-p/4432035</link>
      <description>&lt;P&gt;We are very pleased to announce that migration guidance and tooling to aid Terraform import is now moving from public preview to being generally available.&lt;/P&gt;
&lt;H2&gt;Where to find it&lt;/H2&gt;
&lt;P&gt;Head over to &lt;A class="lia-external-url" href="https://aka.ms/alz/tf/migrate" target="_blank" rel="noopener"&gt;aka.ms/alz/tf/migrate&lt;/A&gt; to read our guidance and find our tooling.&lt;/P&gt;
&lt;H2&gt;What does it do&lt;/H2&gt;
&lt;P&gt;The migration guidance talks you through the procedure to migrate Terraform state from the classic &lt;A class="lia-external-url" href="https://github.com/Azure/terraform-azurerm-caf-enterprise-scale" target="_blank" rel="noopener"&gt;CAF Enterprise Scale&lt;/A&gt; module to the &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/starter/avm-plz" target="_blank" rel="noopener"&gt;Terraform Azure Verified Modules for Platform Landing Zone (ALZ)&lt;/A&gt; modules. The guidance and tooling helps you generate a set of &lt;A class="lia-external-url" href="https://developer.hashicorp.com/terraform/language/import" target="_blank" rel="noopener"&gt;Terraform import blocks&lt;/A&gt; to import the state of your existing platform landing zones into the Azure Verified Modules (AVM).&lt;/P&gt;
&lt;P&gt;Once those blocks have been generated, you can raise a pull request, test and merge then apply with your continuous delivery tool to import the state. From there forwards, you will be managing the platform landing zone with the AVM.&lt;/P&gt;
&lt;H2&gt;How does it work&lt;/H2&gt;
&lt;P&gt;The migration tool aids in mapping your deployed Microsoft Azure resources against the Azure Verified Modules. It maps on name or other available attributes.&lt;/P&gt;
&lt;P&gt;The tool follows a 3 stage process:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Setup&lt;/LI&gt;
&lt;LI&gt;Resource Mapping&lt;/LI&gt;
&lt;LI&gt;Resource Attribute Mapping&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Setup&lt;/H3&gt;
&lt;P&gt;This stage involves you configuring the target Terraform module by using the &lt;A class="lia-external-url" href="http://aka.ms/alz/acc" target="_blank" rel="noopener"&gt;ALZ IaC Accelerator&lt;/A&gt; or composing your own module for advanced use cases. You will also need to identify your existing management group hierarchy and platform subscriptions in this stage.&lt;/P&gt;
&lt;H3&gt;Resource Mapping&lt;/H3&gt;
&lt;P&gt;During this stage you will run the migration tool. The tool will attempt to match all resources in the target subscriptions and / or management groups against the Azure Verified Module planned resources. For anything it can't match on, it will provide details in a file called &lt;EM&gt;issues.csv&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;You'll review &lt;EM&gt;issues.csv&lt;/EM&gt; and correct any resource names in the target module to ensure they match your existing resource names. You'll then run the tool again and repeat until you have matched everything you can. We provide example &lt;A class="lia-external-url" href="https://github.com/Azure/alz-terraform-accelerator/tree/main/templates/platform_landing_zone/examples/migration" target="_blank" rel="noopener"&gt;tfvars files and lib folder&lt;/A&gt; to make this easier, they are commented with things you'll likely need to change.&lt;/P&gt;
&lt;P&gt;Once you have updated all the names you can, if you still have any issues left in &lt;EM&gt;issues.csv&lt;/EM&gt;, you'll need to specify what you want to do with them. You can either:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ignore them&lt;/LI&gt;
&lt;LI&gt;Destroy and Recreate them&lt;/LI&gt;
&lt;LI&gt;Destroy them&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You'll add the action against each row in the CSV and then save the CSV file as &lt;EM&gt;resolved-issues.csv&lt;/EM&gt; ready for the next stage.&lt;/P&gt;
&lt;H3&gt;Resource Attribute Mapping&lt;/H3&gt;
&lt;P&gt;Now you've mapped the resources themselves, you'll need to check that the attributes of the resources also match your existing configuration where they need to. To help with this you'll run the tool again, this time supplying your &lt;EM&gt;resolved-issues.csv&lt;/EM&gt; as an input. This will prompt the tool to generate the Terraform import blocks and run a Terraform plan. The tool outputs a simplified plan file that only includes the changes you need to care about, namely &lt;EM&gt;update &lt;/EM&gt;and&lt;EM&gt; destroy and recreate&lt;/EM&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You'll review the simplified plan file and determine if anything in there requires an update to your target module. If it does, you can update it and re-run the tool. You can repeat this until all unwanted changes are handled.&lt;/P&gt;
&lt;P&gt;You'll run the tool one last time to generate the final set of imports and now you are ready to apply the Terraform via your standard CI / CD process.&lt;/P&gt;
&lt;H2&gt;Limitations&lt;/H2&gt;
&lt;P&gt;At this time our guidance only supports resources that can be deployed by the classic &lt;A href="https://github.com/Azure/terraform-azurerm-caf-enterprise-scale" target="_blank" rel="noopener"&gt;CAF Enterprise Scale&lt;/A&gt; module. The tooling can technically support importing any resources, but we don't provide support or guidance for that scenario.&lt;/P&gt;
&lt;P&gt;The documentation of the tool for advanced scenarios is currently limited and we assume usage for this use case only at this time.&lt;/P&gt;
&lt;H2&gt;Tooling&lt;/H2&gt;
&lt;P&gt;This migration guidance uses a generic tool called &lt;A class="lia-external-url" href="https://aka.ms/tf/migrate/tool" target="_blank" rel="noopener"&gt;Terraform State Importer&lt;/A&gt; . This tool can be used to migrate state for any Azure Resource Manager Terraform resources to a new Terraform module. We provide specific configuration files and settings for this use case, but you could modify them for more advanced scenarios.&lt;/P&gt;
&lt;P&gt;The tool does not look at any existing module or Terraform state file, it directly queries Azure using KQL queries to identify your deployed resources, as such it could also be used to import resources deployed via ClickOps, ARM or Bicep too.&lt;/P&gt;
&lt;H2&gt;Thanks&lt;/H2&gt;
&lt;P&gt;Thanks to the following people for making this happen:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Matt White and Jack Tracey for technical guidance and validation&lt;/LI&gt;
&lt;LI&gt;Paul Grimley and Charlie Grabiaud for keeping it on track&lt;/LI&gt;
&lt;LI&gt;Haflidi Fridthjofsson (Microsoft) and Aidan Hughes (Servent) for the comprehensive and very valuable testing and feedback&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 10 Jul 2025 16:29:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/terraform-azure-verified-modules-for-platform-landing-zone-alz/ba-p/4432035</guid>
      <dc:creator>jaredfholgate</dc:creator>
      <dc:date>2025-07-10T16:29:00Z</dc:date>
    </item>
    <item>
      <title>Azure Verified Modules: Support Statement &amp; Target Response Times Update</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-verified-modules-support-statement-target-response-times/ba-p/4421489</link>
      <description>&lt;P&gt;We are announcing an update to the &lt;A class="lia-external-url" href="https://aka.ms/avm" target="_blank" rel="noopener"&gt;Azure Verified Modules (AVM)&lt;/A&gt; &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Verified-Modules/help-support/module-support/#support-statements" target="_blank" rel="noopener"&gt;support statement&lt;/A&gt;. This change reflects our commitment to providing clarity alongside timely and effective support for our community and AVM module consumers.&lt;/P&gt;
&lt;P&gt;These changes are in preparation to allow us to enable AVM modules to be published as V1.X.X modules (future announcement on this soon 🥳 &lt;A class="lia-external-url" href="https://aka.ms/AVM/CommunityCall" target="_blank" rel="noopener"&gt;sign up to the next AVM Community Call on July 1st 2025&lt;/A&gt; to learn more).&lt;/P&gt;
&lt;H2&gt;What is the new support statement?&lt;/H2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;You can find the support statement on the AVM website here: &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Verified-Modules/help-support/module-support/#support-statements" target="_blank" rel="noopener"&gt;https://azure.github.io/Azure-Verified-Modules/help-support/module-support/#support-statements&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;For bugs/security issues&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;5&amp;nbsp;business&amp;nbsp;days for a triage, meaningful response, and ETA to be provided for fix/resolution by module owner (which could be past the 5 days)
&lt;UL&gt;
&lt;LI&gt;For issues that breach the 5 business days, the AVM core team will be notified and will attempt to respond to the issue within an additional 5 business days to assist in triage.&lt;/LI&gt;
&lt;LI&gt;For security issues, the Bicep or Terraform Product Groups may step in to resolve security issues, if unresolved, after a further additional 5 business days.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;For feature requests&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;15 business days for a meaningful response and initial triage to understand the feature request. An ETA may be provided by the module owner if possible.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Key changes from the previous support statement&lt;/H2&gt;
&lt;P&gt;In short its two items:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Increasing response time targets from:
&lt;UL&gt;
&lt;LI&gt;3 to 5 business days for issues
&lt;UL&gt;
&lt;LI&gt;And from 3 to 5 business days for AVM core team escalation&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Handling bugs/security issues separately from feature requests
&lt;UL&gt;
&lt;LI&gt;Feature requests now have a 15 business day target response time&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The previous support statement outlined a more rigid structure for issue triage and resolution. It required module owners/contributors to respond within 3 business days, with the AVM core team stepping in if there was no response within a further 24 hours. In the event of a security issue being unaddressed after 5 business days, escalation to the product group (Bicep/Terraform) would occur to assist the AVM core team. There was also no differentiation between bugs/security issues and feature requests, which there now is.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;You can view the git diff of the support statement &lt;A class="lia-external-url" href="https://github.com/Azure/Azure-Verified-Modules/commit/c3bbafca3032137b377826aad15854b5f0539d42" target="_blank" rel="noopener"&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Why the changes?&lt;/H2&gt;
&lt;P&gt;Being honest, we weren't meeting the previous support statement 100% of the time, which we are striving for, across all the AVM modules. And we heard from you that, that wasn't ideal and we agree whole heartedly.&lt;/P&gt;
&lt;P&gt;Therefore, we took a step back, reflected, looked at the data available and huddled together to redefine what the new AVM support statement and targets should be.&lt;/P&gt;
&lt;H3&gt;"Yeah, but why can't you just meet the previous support statement and targets?"&lt;/H3&gt;
&lt;P&gt;This is a very valid question that you may have or be wondering. And we want to be honest with you so here are the reasons why this isn't possible today:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Module owners are not 100% dedicated to only supporting their AVM modules; they also have other daily roles and responsibilities in their jobs at Microsoft.
&lt;UL&gt;
&lt;LI&gt;Sometimes this also means conflicting priorities for module owners and they have to make a priority call.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;We underestimated the impact of holidays, annual leave, public holidays etc.&lt;/LI&gt;
&lt;LI&gt;The AVM core teams responsibility is not to resolve all module issues/requests as they are smaller team driving the AVM framework, specs, tooling and tests.
&lt;UL&gt;
&lt;LI&gt;They will of course step in when needed, as they have done so far today 👍&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;We don't get as many &lt;A class="lia-external-url" href="https://aka.ms/avm/contribute" target="_blank" rel="noopener"&gt;contributions&lt;/A&gt; from the open-source community as we expected and would still love to see 😉
&lt;UL&gt;
&lt;LI&gt;For clarity we always love to see a Pull Request to help us add new features or resolve bugs and issues, even for simple things like typos. It really does help us go faster 🏃‍➡️&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;"How are you going to try and avoid changing (increasing) the support statement and targets in the future?"&lt;/H2&gt;
&lt;P&gt;Again another very valid ask! And we reflected upon this when making these changes to the support statement we are announcing here.&lt;/P&gt;
&lt;P&gt;To avoid this potential risk we are also taking the following actions today:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Building new internal tooling and dashboards for module owners to discover, track and monitor their issues and pull requests across various modules they may own, across multiple languages. (already complete and published 👍)
&lt;UL&gt;
&lt;LI&gt;This tooling will also help the AVM core team track issues and report on them more easily to help module owners avoid non-compliance with the targets.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Continue to push for, promote, and encourage open-source community contributions&lt;/LI&gt;
&lt;LI&gt;Prevent AVM modules being published as V1.X.X if they are unable to prove compliance with the new support statement and targets (sneak peek into V1.X.X requirements)&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Looking further into the future we are also investigating the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Building a dedicated AVM team, separate from the AVM core team, that will triage, work on, and fix/resolve issues that are nearing or breaching the support statement and targets.
&lt;UL&gt;
&lt;LI&gt;Also they will look into feature requests as and where time allows or are popular/upvoted heavily where module owners are unable to prioritize in the near future due to other priorities.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Seeing where AI and other automation tooling can assist with issue triage and resolution to reduce module owner workload.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;We hope that this provides you with a clear understanding of the changes to the AVM support statement and targets and why we are making these. We also hope you appreciate our honesty on the situation and can see we are taking action to make things better while also reflecting and amending our support statements to be more realistic based on the past 2 years of launching and running AVM to date.&lt;/P&gt;
&lt;P&gt;Finally we just want to reassure everyone that we remain committed to AVM and have big plans for the rest of the calendar year and beyond! 😎&lt;/P&gt;
&lt;P&gt;And with this in mind we want to remind you to &lt;A href="https://aka.ms/AVM/CommunityCall" target="_blank" rel="noopener"&gt;sign up to the next AVM Community Call on July 1st 2025&lt;/A&gt; to learn more and ask any questions on this topic or anything else AVM related with the rest of the community 👍&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;
&lt;P&gt;The AVM Core Team&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 09 Jun 2025 16:18:14 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-verified-modules-support-statement-target-response-times/ba-p/4421489</guid>
      <dc:creator>jtracey93msft</dc:creator>
      <dc:date>2025-06-09T16:18:14Z</dc:date>
    </item>
    <item>
      <title>Announcement of migrating to Azure Linux 3.0 for Azure CLI</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcement-of-migrating-to-azure-linux-3-0-for-azure-cli/ba-p/4419582</link>
      <description>&lt;P&gt;Azure CLI 2.74.0 is the final version available on Azure Linux (Mariner) 2.0 and will not receive further updates. We recommend migrating to Azure Linux 3.0 to access newer versions of Azure CLI and continue receiving updates.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A warning message will appear when using Azure CLI on Azure Linux 2.0. To suppress this message, set the AZURE_CLI_DISABLE_AZURELINUX2_WARNING environment variable to any value.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We value the experiences of our Azure CLI users, especially when lifecycle changes might cause disruptions. Our goal is to provide clear communication and as much advance notice as possible.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Quoting our internal partner, the Azure Linux team, as follows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Azure Linux 2.0 will reach its End of Life (EOL) on July 2025. After this date, it will no longer receive updates, security patches, or support, which may put your systems at risk. From today, we will not be entertaining package upgrade requests for Azure Linux 2.0.&lt;/P&gt;
&lt;P&gt;To ensure continued support, security, and performance, we strongly recommend upgrading to Azure Linux 3.0 by June 2025. Azure Linux 3.0 comes with enhanced features, better performance, and longer support, making it better choice for your infrastructure moving forward. Learn more about 3.0 here.&lt;/P&gt;
&lt;P&gt;We understand that migrations can take time, so we encourage you to begin planning your upgrade as soon as possible. Our Azure Linux team is available to assist with the transition, address any concerns, and help make the process as seamless as possible.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is this the same as Mariner?&lt;/STRONG&gt;&lt;BR /&gt;Yes, Mariner was rebranded to Azure Linux. We will slowly update our documentation and VM/container image tags to reflect this name change&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;When did Azure Linux 3.0 GA?&lt;/STRONG&gt;&lt;BR /&gt;Azure Linux 3.0 became generally available in August 2024.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;When will Azure Linux 3.0 reach End of Life (EOL)?&lt;/STRONG&gt;&lt;BR /&gt;We currently support each major version for 3 years after it becomes generally available. Azure Linux 3.0 will reach EOL in Summer 2027.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure/azure-cli/milestone/156" target="_blank" rel="noopener"&gt;Azure CLI 2.74.0&lt;/A&gt; (scheduled for release on 2025-06-03) is the final version to support Azure Linux 2.0. We strongly recommend reviewing your scenarios and using this transition period to ensure a smooth migration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For AKS customers,&lt;/P&gt;
&lt;P&gt;Noting that Azure Linux team &lt;SPAN data-olk-copy-source="MessageBody"&gt;are still supporting Azure Linux 2.0 until November 2025 to align with AKS v1.31 support. This means Azure Linux 2.0 is getting regular patches until November 2025.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you encounter any issues related to Azure CLI on Azure Linux 3.0, please open an issue in our&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-cli" target="_blank" rel="noopener"&gt;GitHub repo.&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Jun 2025 05:47:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcement-of-migrating-to-azure-linux-3-0-for-azure-cli/ba-p/4419582</guid>
      <dc:creator>JeremyLi</dc:creator>
      <dc:date>2025-06-04T05:47:54Z</dc:date>
    </item>
    <item>
      <title>Azure CLI and Azure PowerShell Build 2025 Announcement</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-build-2025-announcement/ba-p/4415515</link>
      <description>&lt;P&gt;The key investment areas for Azure CLI and Azure PowerShell in 2025 are quality and security. We’ve also made meaningful efforts to improve the overall user experience. In parallel, we've enhanced the quality and performance of Azure CLI and Azure PowerShell responses in Copilot, ensuring a more reliable user experience. We encourage you to try out the improved Azure CLI and Azure PowerShell in the Copilot experience and see how it can help streamline your Azure workflows.&lt;/P&gt;
&lt;P&gt;At &lt;STRONG&gt;Microsoft Build 2025&lt;/STRONG&gt;, we're excited to announce several new capabilities aligned with these priorities:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Improvements in quality and security.&lt;/LI&gt;
&lt;LI&gt;Enhancements to user experience.&lt;/LI&gt;
&lt;LI&gt;Ongoing improvements to Copilot's response quality and performance.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Improvements in quality and security&lt;/H2&gt;
&lt;H3&gt;Azure CLI and Azure PowerShell Long Term Support (LTS) releases support&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;In November 2024, &lt;STRONG&gt;Azure PowerShell&lt;/STRONG&gt; became the first to introduce both &lt;STRONG&gt;Standard Term Support (STS)&lt;/STRONG&gt; and &lt;STRONG&gt;Long-Term Support (LTS)&lt;/STRONG&gt; versions, providing users with more flexibility in managing their tools. At &lt;STRONG&gt;Microsoft Build 2025&lt;/STRONG&gt;, we are excited to announce that &lt;STRONG&gt;Azure CLI&lt;/STRONG&gt; now also supports both STS and LTS release models. This allows users to choose the version that best fits their project needs, whether they prefer the stability of LTS releases or want to stay up to date with the latest features in STS releases. Users can continue using an LTS version until the next LTS becomes available or choose to upgrade more frequently with STS versions.&lt;/P&gt;
&lt;P&gt;To learn more about the definitions and support timelines for Azure CLI and Azure PowerShell STS and LTS versions, please refer to the following documentation:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/azcli-lifecycle#long-term-support-releases-lts" target="_blank" rel="noopener"&gt;Azure CLI lifecycle and support | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/azpslifecycle#support-of-releases" target="_blank" rel="noopener"&gt;Azure PowerShell support lifecycle | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="71" data-end="251"&gt;Users can choose between the Long-Term Support (LTS) and Short-Term Support (STS) versions of Azure CLI based on their specific needs. It is important to understand the trade-offs:&lt;/P&gt;
&lt;UL data-start="253" data-end="671"&gt;
&lt;LI data-start="253" data-end="445"&gt;&lt;STRONG data-start="255" data-end="271"&gt;LTS versions&lt;/STRONG&gt; provide a stable and predictable environment with a support cycle of up to 12 months, making them ideal for scenarios where stability and minimal maintenance are priorities.&lt;/LI&gt;
&lt;LI data-start="446" data-end="671"&gt;&lt;STRONG data-start="448" data-end="464"&gt;STS versions&lt;/STRONG&gt;, on the other hand, offer access to the latest features and more frequent bug fixes. However, this comes with the potential need for more frequent script updates as changes are introduced with each release.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="673" data-end="939"&gt;It is also worth noting that platforms such as &lt;STRONG data-start="720" data-end="736"&gt;Azure DevOps&lt;/STRONG&gt; and &lt;STRONG data-start="741" data-end="759"&gt;GitHub Actions&lt;/STRONG&gt; typically default to using &lt;STRONG data-start="787" data-end="809"&gt;newer CLI versions&lt;/STRONG&gt;. That said, users still have the option to pin to a specific version if greater consistency is required in their CI/CD pipelines.&lt;/P&gt;
&lt;P data-start="941" data-end="1265"&gt;When using Azure CLI to deploy services like Azure Functions within CI/CD workflows, the actual CLI version in use will depend on the version selected by the pipeline environment (e.g., GitHub Actions or Azure DevOps), and it is recommended to verify or explicitly set the version to align with your deployment requirements.&lt;/P&gt;
&lt;H3&gt;SecureString update for Azure PowerShell&lt;/H3&gt;
&lt;P&gt;Our team is gradually transitioning to using &lt;EM&gt;SecureString&lt;/EM&gt; for tokens, account keys, and secrets, replacing the traditional string types. In November 2024, we offered an opt-in method for the &lt;EM&gt;Get-AzAccessToken&lt;/EM&gt; cmdlet. At the 2025 Build event, we’ve made this option mandatory, which is a breaking change:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Get-AzAccessToken&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;LI-CODE lang="powershell"&gt;Get-AzAccessToken

Token : System.Security.SecureString
ExpiresOn : 5/13/2025 1:09:15 AM +00:00
TenantId : 00000000-0000-0000-0000-000000000000
UserId : user@mail.com
Type : Bearer&lt;/LI-CODE&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;In 2026, we plan to implement this secure method in more commands, converting all keys, tokens, and similar data from string types to &lt;STRONG&gt;&lt;EM&gt;SecureString&lt;/EM&gt;&lt;/STRONG&gt;. Please continue to pay attention to our &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/azure/upcoming-breaking-changes" target="_blank" rel="noopener"&gt;upcoming breaking changes documentation&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Install Azure PowerShell from Microsoft Artifact Registry (MAR)&lt;/H3&gt;
&lt;P&gt;Installing &lt;STRONG&gt;Azure PowerShell from Microsoft Artifact Registry (MAR)&lt;/STRONG&gt; brings several key advantages for enterprise users, particularly in terms of security, performance, and simplified artifact management.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Stronger Security and Supply Chain Integrity&lt;BR /&gt;&lt;/STRONG&gt;Microsoft Artifact Registry (MAR) enhances security by ensuring only Microsoft can publish official packages, eliminating risks like name squatting. It also improves software supply chain integrity by offering greater transparency and control over artifact provenance.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Faster and More Reliable Delivery&lt;BR /&gt;&lt;/STRONG&gt;By caching Az modules in your own ACR instances with MAR as an upstream source, customers benefit from faster downloads and higher reliability, especially within the Azure network.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can try installing Azure PowerShell from MAR using the following PowerShell command:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;$acrUrl = 'https://mcr.microsoft.com'
Register-PSResourceRepository -Name MAR -Uri $acrUrl -ApiVersion ContainerRegistry
Install-PSResource -Name Az -Repository MAR&lt;/LI-CODE&gt;
&lt;P&gt;For detailed installation instructions and prerequisites, refer to the official documentation:&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://aka.ms/azps/install-mar" target="_blank" rel="noopener"&gt;Optimize the installation of Azure PowerShell | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Enhancements to user experience&lt;/H2&gt;
&lt;H3&gt;Azure PowerShell Enhancements at Microsoft Build 2025&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As part of the Microsoft Build 2025 announcements, Azure PowerShell has introduced several significant improvements to enhance usability, automation flexibility, and overall user experience.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Real-Time Progress Bar for Long-Running Operations&lt;/STRONG&gt;&lt;BR /&gt;Cmdlets that perform long-running operations now display a real-time progress bar, offering users clear visual feedback during execution.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Smarter Output Formatting Based on Result Count&lt;/STRONG&gt;&lt;BR /&gt;Output formatting is now dynamically adjusted based on the number of results returned:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A &lt;STRONG&gt;detailed list view&lt;/STRONG&gt; is shown when a single result is returned, helping users quickly understand the full details.&lt;/LI&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;table view&lt;/STRONG&gt; is presented when multiple results are returned, providing a concise summary that's easier to scan.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;JSON-Based Resource Creation for Improved Automation&lt;/STRONG&gt;&lt;BR /&gt;Azure PowerShell now supports creating resources using raw JSON input, making it easier to integrate with infrastructure-as-code (IaC) pipelines. When this feature is enabled (by default in Azure environments), applicable cmdlets accept:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;JSON strings directly via *&lt;EM&gt;ViaJsonString&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;External JSON files via *&lt;EM&gt;ViaJsonFilePath&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This capability streamlines scripting and automation, especially for users managing complex configurations.&lt;/P&gt;
&lt;P&gt;We're always looking for feedback, so try the new features and let us know what you think.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Improved for custom and disconnected clouds: Azure CLI now reads extended ARM metadata&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In disconnected environments like national clouds, air-gapped setups, or Azure Stack, customers often define their own cloud configurations, including custom dataplane endpoints. However, older versions of Azure CLI and its extensions relied heavily on hardcoded endpoint values based only on the cloud name, limiting functionality in these isolated environments.&lt;/P&gt;
&lt;P&gt;To address this, Azure CLI now supports reading richer cloud metadata from Azure Resource Manager (ARM) using API version 2022-09-01. This metadata includes extended data plane endpoints, such as those for Arc-enabled services and private registries previously unavailable in older API versions.&lt;/P&gt;
&lt;P&gt;When running &lt;EM&gt;az cloud register&lt;/EM&gt; with the --&lt;EM&gt;endpoint-resource-manager&lt;/EM&gt; flag, Azure CLI automatically parses and loads these custom endpoints into its runtime context. All extensions, like connectedk8s, k8s-configuration, and others, can now dynamically use accurate, environment-specific endpoints without needing hardcoded logic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Benefits:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Improved Support for Custom Clouds: Enables more reliable automation and compatibility with Azure Local.&lt;/LI&gt;
&lt;LI&gt;Increased Security and Maintainability: Removes the need for manually hardcoding endpoints.&lt;/LI&gt;
&lt;LI&gt;Unified Extension Behavior: Ensures consistent behavior across CLI and its extensions using centrally managed metadata.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Try it out:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Register cloud&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;az cloud register -n myCloud --endpoint-resource-manager https://management.azure.com/&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;Check cloud&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;az cloud show -n myCloud&lt;/LI-CODE&gt;
&lt;P&gt;For the original implementation, please refer to&amp;nbsp;&lt;A href="https://github.com/Azure/azure-cli/pull/30682" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-cli/pull/30682&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Azure PowerShell WAM authentication update&lt;/H3&gt;
&lt;P&gt;Since Azure PowerShell 12.0.0, Azure PowerShell supports Web Authentication Manager (WAM) as the default authentication mechanism. Using Web Account Manager (WAM) for authentication in Azure enhances security through its built-in identity broker and default system browser integration. It also delivers a faster and more seamless sign-in experience. All major blockers have been resolved, and we are actively working on the pending issues.&lt;/P&gt;
&lt;P&gt;For detailed announcements on specific issues, please refer to the &lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell/issues/25005" target="_blank" rel="noopener"&gt;WAM issues and Workarounds&lt;/A&gt; issue.&lt;/P&gt;
&lt;P&gt;We encourage users to enable WAM functionality using the command:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;EM&gt;Update-AzConfig -EnableLoginByWam $true&lt;/EM&gt;. &amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;under Windows operating systems to ensure security. If you encounter issues, please report them in&amp;nbsp;&lt;A href="https://github.com/Azure/azure-powershell/issues/" target="_blank" rel="noopener"&gt;&lt;EM&gt;Issues · Azure/azure-powershell&lt;/EM&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Improve Copilot's response quality and performance&lt;/H2&gt;
&lt;H3&gt;Azure CLI/PS enhancement with Copilot in Azure&lt;/H3&gt;
&lt;P&gt;In the first half of 2025, we improved the knowledge of Azure CLI and Azure PowerShell commands for Azure Copilot end-to-end scenarios based on best practices to answer questions related to commands and scripts.&lt;/P&gt;
&lt;P&gt;In the past six months, we have optimized the following scenarios:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Introduced Azure concept documents to RAG to provide more accurate and comprehensive answers.&lt;/LI&gt;
&lt;LI&gt;Improved the accuracy and relevance of knowledge retrieval query and chunking strategies&lt;/LI&gt;
&lt;LI&gt;Support more accurate rejection of the out-of-scope questions.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;AI Shell brings AI to the command line, enabling natural conversations with language models and customizable workflows.&lt;STRONG&gt; &lt;/STRONG&gt;AI Shell is in public preview and allows you to access Copilot in Azure. All the optimizations apply to AI Shell. For more information about AI Shell releases, see: &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/utility-modules/aishell/overview" target="_blank" rel="noopener"&gt;AI Shell&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;To learn more about Microsoft Copilot for Azure and how it can help you, visit: &lt;A href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/simplify-it-management-with-microsoft-copilot-for-azure-%e2%80%93-save-time-and-get-answ/3981106" target="_blank" rel="noopener"&gt;Microsoft Copilot for Azure&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Breaking Changes &amp;nbsp;&lt;/H2&gt;
&lt;P&gt;You can find the latest breaking change guidance documents at the links below. To learn more about the breaking changes, ensure your environment is ready to install the newest version of Azure CLI and Azure PowerShell, see the release notes and migration guides.&lt;/P&gt;
&lt;P&gt;Azure CLI:&amp;nbsp; &lt;A href="https://learn.microsoft.com/cli/azure/release-notes-azure-cli" target="_blank" rel="noopener"&gt;Release notes &amp;amp; updates – Azure CLI | Microsoft Learn&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure PowerShell: &lt;A href="https://learn.microsoft.com/powershell/azure/migrate-az-14.0.0" target="_blank" rel="noopener"&gt;Migration guide for Az 14.0.0 | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Milestone timelines:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure/azure-cli/milestones" target="_blank" rel="noopener"&gt;Azure CLI Milestones&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure/azure-powershell/milestones" target="_blank" rel="noopener"&gt;Azure PowerShell Milestones&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thank you for using the Azure command-line tools. We look forward to continuing to improve your experience. We hope you enjoy Microsoft Build and all the great work released this week. We'd love to hear your feedback, so feel free to reach out anytime.  &amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GitHub:&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; &lt;A href="https://github.com/Azure/azure-cli" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-cli&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; &lt;A href="https://github.com/Azure/azure-powershell" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-powershell&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Let's stay in touch on X (Twitter) : &lt;A href="https://twitter.com/azureposh" target="_blank" rel="noopener"&gt;@azureposh&lt;/A&gt;   &lt;A href="https://twitter.com/azurecli" target="_blank" rel="noopener"&gt;@AzureCli &lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 22 May 2025 12:22:22 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-build-2025-announcement/ba-p/4415515</guid>
      <dc:creator>Alex-wdy</dc:creator>
      <dc:date>2025-05-22T12:22:22Z</dc:date>
    </item>
    <item>
      <title>Announcing Public Preview of Terraform Export from the Azure Portal</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-public-preview-of-terraform-export-from-the-azure/ba-p/4409889</link>
      <description>&lt;H1&gt;Scenario&lt;/H1&gt;
&lt;P&gt;Imagine you have an existing networking configuration you would like to bring to Terraform. Whether you’re interested in learning Terraform or an expert, understanding how Azure resources are reflected in the azurerm and azapi providers is critical to your team. With Terraform export, you can quickly see how your resources are represented in either provider, whether it’s one resource from the configuration or the entire resource group.&lt;/P&gt;
&lt;H1&gt;Benefits&lt;/H1&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="http://github.com/Azure/aztfexport" target="_blank" rel="noopener"&gt;Azure Export for Terraform&lt;/A&gt; is a tool designed to provide a seamless and efficient way to generate Terraform configuration files that accurately represent your Azure resources.&amp;nbsp; With the new Portal experience, you can easily understand your infrastructure’s representation in either the&lt;A class="lia-external-url" href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs" target="_blank" rel="noopener"&gt; AzureRM&lt;/A&gt; or &lt;A class="lia-external-url" href="https://registry.terraform.io/providers/Azure/azapi/latest/docs" target="_blank" rel="noopener"&gt;AzAPI&lt;/A&gt; providers within Terraform.&lt;/P&gt;
&lt;H1&gt;Usage&lt;/H1&gt;
&lt;H2&gt;Prerequisite&lt;/H2&gt;
&lt;P&gt;Subscriptions will need to&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://aka.ms/azureterraformrpregistration" target="_blank" rel="noopener"&gt;register the Microsoft.AzureTerraform resource provider&lt;/A&gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Portal Usage&lt;/H2&gt;
&lt;P&gt;Find the experience in the &lt;STRONG&gt;Automation &lt;/STRONG&gt;tab under the “Export template” blade. This experience is supported for individual resources as well as resource groups.&amp;nbsp;&lt;/P&gt;
&lt;div data-video-id="https://youtu.be/dikm7TRanRg/1746055925754" data-video-remote-vid="https://youtu.be/dikm7TRanRg/1746055925754" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fdikm7TRanRg%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Ddikm7TRanRg&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fdikm7TRanRg%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Next Steps&lt;/H1&gt;
&lt;P&gt;We invite you to &lt;A href="https://learn.microsoft.com/azure/developer/terraform/azure-terraform-resource-provider/get-started-export-resources-portal" target="_blank" rel="noopener"&gt;try out the Azure Portal Export for Terraform feature&lt;/A&gt; and share your feedback with us via the &lt;STRONG&gt;Feedback &lt;/STRONG&gt;button. Your input is valuable as we continue to improve and expand our offerings to better meet your needs.&lt;/P&gt;
&lt;P&gt;For scripting or exporting many resource groups or resource types, we encourage you to check out &lt;A href="https://github.com/Azure/aztfexport" target="_blank" rel="noopener"&gt;the Azure Export for Terraform tool&lt;/A&gt;, which comes with customization features.&lt;/P&gt;
&lt;P&gt;If you wish to utilize the underlying APIs directly or via CLI/PS, &lt;A href="https://learn.microsoft.com/azure/developer/terraform/azure-terraform-resource-provider/resource-provider-overview" target="_blank" rel="noopener"&gt;visit the new Azure Terraform resource provider documentation&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As always, thank you for being a part of our &lt;A href="https://aka.ms/AzureTerraform" target="_blank" rel="noopener"&gt;Azure Terraform community&lt;/A&gt; and for your continued support.&lt;/P&gt;</description>
      <pubDate>Thu, 01 May 2025 16:30:08 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-public-preview-of-terraform-export-from-the-azure/ba-p/4409889</guid>
      <dc:creator>stevenjma</dc:creator>
      <dc:date>2025-05-01T16:30:08Z</dc:date>
    </item>
    <item>
      <title>An Update on Bicep Azure Verified Modules for Platform Landing Zone (ALZ)</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/an-update-on-bicep-azure-verified-modules-for-platform-landing/ba-p/4407626</link>
      <description>&lt;H1&gt;But first some history and context&lt;/H1&gt;
&lt;P&gt;As you may of heard in one of our &lt;A class="lia-external-url" href="https://aka.ms/alz" target="_blank" rel="noopener"&gt;Azure Landing Zone (ALZ)&lt;/A&gt; &lt;A class="lia-external-url" href="https://aka.ms/alz/community" target="_blank" rel="noopener"&gt;community calls&lt;/A&gt; over the past year, across ALZ we have been working hard to refactor both our Terraform and Bicep implementation options to be built upon&lt;A class="lia-external-url" href="https://aka.ms/avm" target="_blank" rel="noopener"&gt; Azure Verified Modules (AVM).&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Earlier this year we announced that the work for Terraform, which we started on first, was complete; and you can read more about that in the &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuretoolsblog/announcing-general-availability-of-terraform-azure-verified-modules-for-platform/4366027" target="_blank" rel="noopener" data-lia-auto-title="announcement blog post we posted here." data-lia-auto-title-active="0"&gt;announcement blog post we posted here.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But whilst this work was going on the ALZ Bicep team where already busy planning how they would go about doing the same and rebuilding &lt;A class="lia-external-url" href="https://github.com/Azure/ALZ-Bicep" target="_blank" rel="noopener"&gt;ALZ Bicep&lt;/A&gt; from AVM modules. You can see the original plans and where we also asked for feedback in the&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/Azure/ALZ-Bicep/issues/791" target="_blank" rel="noopener"&gt;GitHub issue (#791)&lt;/A&gt; .&lt;/P&gt;
&lt;H1&gt;Enough history, what's the latest?&lt;/H1&gt;
&lt;P&gt;Now to answer the question everyone has and rightly so 😁 Well, it's good news!&lt;/P&gt;
&lt;P&gt;We have been busy working away on getting a number of the AVM Bicep Resource Modules updated with missing bits and pieces that we need from an ALZ perspective. All fairly minor in most cases but some required some bigger updates than others, and some modules didn't exist at all so we have had to propose, create, and publish those of which we are pretty much done with 👍&lt;/P&gt;
&lt;P&gt;We are still working towards an&lt;STRONG&gt; end of Q4 (June/July) target for a preview release&lt;/STRONG&gt; of all the modules, accelerator and guidance on how to use the new version of ALZ Bicep, which will be called &lt;STRONG&gt;"Bicep Azure Verified Modules for Platform Landing Zone (ALZ)"&lt;/STRONG&gt;; this is to align with Terraform and also to provide clear distinction between ALZ Bicep and the new AVM based version.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Please note that the timeline shared above is an ETA and may move&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Announcing the preview release of `avm/ptn/alz/empty` AVM Pattern Module&lt;/H2&gt;
&lt;P&gt;Before we get to a more complete release of all the required resources and modules to build the entire ALZ architecture with the new Bicep Azure Verified Modules for Platform Landing Zone (ALZ), we wanted to share an early look at the module that will be at the heart of all of your ALZ deployments.&lt;/P&gt;
&lt;P&gt;That module is called &lt;STRONG&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;`avm/ptn/alz/empty`&lt;/A&gt;&amp;nbsp; &lt;/STRONG&gt;and is available in the Public Bicep Registry for you to try out today (currently version `0.1.0`)!&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip:&amp;nbsp;&lt;/STRONG&gt;Checkout the &lt;A href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty/tests/e2e/max" target="_blank" rel="noopener"&gt;"max" test in the tests directory&lt;/A&gt; for advanced usage examples!&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;LI-CODE lang=""&gt;module testMg 'br/public:avm/ptn/alz/empty:0.1.0' = {
  params: {
    managementGroupName: 'test-mg'
    // Other parameters here...
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;This module is 1 of 11 modules that will all be based off the same code. The module optionally creates all of the below:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The Management Group itself
&lt;UL&gt;
&lt;LI&gt;Can also target an existing Management Group&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Management Group Subscription Associations&lt;/LI&gt;
&lt;LI&gt;RBAC Custom Role Definitions&lt;/LI&gt;
&lt;LI&gt;RBAC Role Assignments&lt;/LI&gt;
&lt;LI&gt;Policy Assignments&lt;/LI&gt;
&lt;LI&gt;Custom Policy Definitions&lt;/LI&gt;
&lt;LI&gt;Custom Policy Set Definitions (Initiatives)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;There will also be 1 x Bicep Azure Verified Modules for Platform Landing Zone (ALZ) pattern module for each of the ALZ Architectures Management Groups, plus this empty one for custom and advanced scenarios. A reminder of those Management Groups and the associated modules that will be created for each of them:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;`avm/ptn/alz/int-root`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/platform`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/platform-management`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/platform-identity`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/platform-connectivity`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/landing-zones`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/landing-zones-corp`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/landing-zones-online`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/decommissioned`&lt;/LI&gt;
&lt;LI&gt;`avm/ptn/alz/sandbox`&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These Management Group aligned pattern modules will create the same resources as above, but will have the latest release of the &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Landing-Zones-Library/" target="_blank" rel="noopener"&gt;ALZ Library&lt;/A&gt; baked in to each of the modules. Meaning that for the `avm/ptn/alz/int-root` pattern module, you won't have to declare all of the ALZ RBAC Custom Role Definitions, Custom Policy Definitions, Policy Assignments etc. via the input parameters as they'll be hardcoded in the module based off the latest release from the ALZ Library at the point the version of the module was released.&lt;/P&gt;
&lt;P&gt;This means that to build the ALZ Management Group hierarchy and make all of the default ALZ policy assignments, as documented &lt;A class="lia-external-url" href="https://aka.ms/alz/policies" target="_blank" rel="noopener"&gt;here&lt;/A&gt;, you'd need a bicep file that would look something like this as a starting point:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Important:&amp;nbsp;&lt;/STRONG&gt;None of these modules exist below today!&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;LI-CODE lang=""&gt;module intRootMg 'br/public:avm/ptn/alz/int-root:0.1.0' = {
  params: {
    managementGroupName: 'int-root-mg'
  }
}

module platformMg 'br/public:avm/ptn/alz/platform:0.1.0' = {
  params: {
    managementGroupName: 'platform-mg'
    managementGroupParentId: intRootMg.outputs.managementGroupId
  }
}

module platformConnectivityMg 'br/public:avm/ptn/alz/platform-connectivity:0.1.0' = {
  params: {
    managementGroupName: 'platform-mg'
    managementGroupParentId: platformMg.outputs.managementGroupId
  }
}&lt;/LI-CODE&gt;
&lt;P&gt;This will make getting the ALZ Architecture out of the box really fast, and also really easy to upgrade and get the latest updates, by just bumping the version number as you desire when you are ready.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Coupled with the `avm/ptn/alz/empty` module to add your own additional Policy Definitions and assignments, etc. at the same Management Groups scopes also helps you decouple the constant updates to the ALZ architecture and policies etc. from your own additional requirements.&lt;/P&gt;
&lt;P&gt;Helping you keep your code cleaner and our modules simple to maintain as we won't have to cater for handling additional custom definitions and assignments alongside the defaults from ALZ that are baked into the modules.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; We are looking at suggesting that all of these are deployed via Deployment Stacks to help with lifecycle management of resources. e.g. help clean-up resources as well as deploy new ones; think policy assignments and definitions etc.&lt;/P&gt;
&lt;P&gt;We need to complete a lot more testing on this, but would love your feedback on experiences if you have any using Deployment Stacks to manage these kind of resources today. Open an issue/discussion on the ALZ Bicep GitHub repo 👍&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H1&gt;Our asks to you 🫵&lt;/H1&gt;
&lt;P&gt;Please go try out and test the new &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty" target="_blank" rel="noopener"&gt;`avm/ptn/alz/empty`&lt;/A&gt; module and test it out for all the scenarios you can think of relating to Management Groups, RBAC, Policies etc. we want to make sure it's "match fit/ready" before we then build the Management Group aligned modules and bake in the ALZ defaults to them.&lt;/P&gt;
&lt;P&gt;So please go and put the module through its paces and test it out.&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip:&amp;nbsp;&lt;/STRONG&gt;Checkout the &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/alz/empty/tests/e2e/max" target="_blank" rel="noopener"&gt;"max" test in the tests directory&lt;/A&gt; for advanced usage examples!&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If you find any issues, bugs, feature requests or just have a question on how to use it, please just raise them as &lt;A class="lia-external-url" href="https://github.com/Azure/bicep-registry-modules/issues/new?template=avm_module_issue.yml" target="_blank" rel="noopener"&gt;GitHub issues here&lt;/A&gt; (make sure to select the `avm/ptn/alz/empty` module from the drop down 👍)&lt;/P&gt;
&lt;P&gt;Thanks in advance for all your efforts and assistance and we look forward to hearing and getting your feedback on the module 👏&lt;/P&gt;</description>
      <pubDate>Thu, 24 Apr 2025 22:40:39 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/an-update-on-bicep-azure-verified-modules-for-platform-landing/ba-p/4407626</guid>
      <dc:creator>jtracey93msft</dc:creator>
      <dc:date>2025-04-24T22:40:39Z</dc:date>
    </item>
    <item>
      <title>Azure CLI Breaking Change Pre-Announcement</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-breaking-change-pre-announcement/ba-p/4403454</link>
      <description>&lt;H2&gt;&lt;STRONG&gt;Background&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;In our continuous effort to improve the quality and timeliness of our documentation, we have embarked on an initiative to automate the production of Upcoming Breaking Change Documentation. This initiative aims to alleviate the workload and pressure typically experienced before major events such as Microsoft Build and Microsoft Ignite. By leveraging automated methods, we can ensure that our documentation is both comprehensive and promptly available to our users.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Streamlining the Process&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;To further streamline this process, we are introducing a new workflow designed to encourage Service Teams to notify us of any future breaking changes several sprints ahead. The new workflow includes a new framework to pre-announce breaking changes, which will enable us to publish detailed and accurate Upcoming Breaking Change Documentation well ahead of time, providing our users with the information they need to prepare for these changes.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Breaking Change Rule&lt;/STRONG&gt;&lt;/H2&gt;
&lt;H3&gt;Core CLI&lt;/H3&gt;
&lt;P&gt;A breaking change in Azure CLI refers to a modification that disrupts backward compatibility with previous versions, potentially causing scripts or automation written in earlier versions to fail. Common examples include modifying parameter names, input logic, result output format, behavior models, and adding additional verifications.&lt;/P&gt;
&lt;P&gt;To mitigate the impact, Azure CLI coordinates half-yearly Breaking Change Releases, bundling multiple breaking changes together. This approach helps users plan ahead and adapt effectively.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Breaking Change Window&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The breaking change window is a designated sprint for merging service command breaking changes, aligning with Microsoft Build in May and Microsoft Ignite in November. Outside this window, breaking changes are typically prohibited to ensure consistency and stability. Exceptions require high-grade justifications and are assessed based on overall impact.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;30-Day Pre-announcement Policy&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;All breaking changes must be pre-announced 30 days (usually 2 sprints) before the release. This provides users with buffer time to adapt. Notifications are made through:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Warning Log: Mandatory pre-announcement while executing.&lt;/LI&gt;
&lt;LI&gt;Upcoming Breaking Change Document: Automatic collection and listing of changes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Extensions&lt;/H3&gt;
&lt;P&gt;All breaking changes in GA (General Available) extensions must be pre-announced at least 30 days prior to their release. While extensions do not need to follow the breaking change window, it is strongly recommended to align their releases with the Core Azure CLI breaking change window.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GA (General Available) Release with Breaking Change Pre-Announcement&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Must include complete breaking change information.&lt;/LI&gt;
&lt;LI&gt;Must fulfill the 30-day announcement requirement.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;During the 30-day announcement period, releases are allowed for unrelated GA (General Available) versions and multiple preview releases (Beta versions).&lt;/P&gt;
&lt;P&gt;By adhering to these guidelines, users can ensure a smoother transition and maintain compatibility with their existing scripts and automation.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;How to Announce a Breaking Change&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;It is simple to announce a Breaking Change using the new framework.&lt;/P&gt;
&lt;H3&gt;Find the entry:&lt;/H3&gt;
&lt;P&gt;Find or add an entry to the _breaking_change.py file in the top-level directory of the relevant module.&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Register Breaking Changes:&lt;/H3&gt;
&lt;P&gt;You can then pre-announce breaking changes for different command groups or commands. Multiple breaking changes on the same command are accepted.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;from azure.cli.core.breaking_change import register_required_flag_breaking_change, register_default_value_breaking_change, register_other_breaking_change

register_required_flag_breaking_change('bar foo', '--name')
register_default_value_breaking_change('bar foo baz', '--foobar', 'A', 'B', target_version='May 2025')
register_other_breaking_change('bar foo baz', 'During May 2024, another Breaking Change would happen in Build Event.')&lt;/LI-CODE&gt;
&lt;H3&gt;Try the Warning&lt;/H3&gt;
&lt;P&gt;All related breaking changes will be displayed when executing the command. For instance, with the above declarations, the following warnings will be output when executing the command:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;# The azure command
az bar foo baz

# =====Warning output=====
# The argument '--name' will become required in next breaking change release (2.61.0).
# The default value of '--foobar' will be changed to 'B' from 'A' in May 2025.
# During May 2024, another Breaking Change would happen in Build Event.&lt;/LI-CODE&gt;
&lt;H3&gt;Types of Breaking Changes&lt;/H3&gt;
&lt;P&gt;There are several types of breaking changes defined in `_breaking_change.py`. You should use any of them to declare breaking changes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Remove&lt;/LI&gt;
&lt;LI&gt;Rename&lt;/LI&gt;
&lt;LI&gt;Output Change&lt;/LI&gt;
&lt;LI&gt;Change&lt;/LI&gt;
&lt;LI&gt;Default Change&lt;/LI&gt;
&lt;LI&gt;Be Required&lt;/LI&gt;
&lt;LI&gt;Other Changes&lt;/LI&gt;
&lt;LI&gt;Conditional Breaking Change&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Work with Breaking Change Detect&lt;/H3&gt;
&lt;P&gt;To normalize the release of breaking changes, Azure CLI has integrated a Breaking Change Detection tool into the Pull Request Pipeline. This tool will reject any breaking changes that are submitted outside of the designated breaking change window and will provide guidelines for following the breaking change policies.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;&lt;STRONG&gt;Technical Implementation&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;The Breaking Change Pre-Announcement uses a hook in the Azure CLI. This hook is used to collect announcements registered in &lt;EM&gt;_breaking_change.py&lt;/EM&gt; files and transform them into tags that can be consumed by the Knack framework, which is the foundational framework used by the Azure CLI. When multiple tags are registered under the same identifier, they are consolidated into a single &lt;EM&gt;MergedTag&lt;/EM&gt;. This &lt;EM&gt;MergedTag&lt;/EM&gt; is then used to manage complex scenarios effectively.&lt;/P&gt;
&lt;P&gt;Conditional breaking changes are not transformed into tags. Instead, they are stored in the breaking changes registry. These changes can be accessed manually by calling the &lt;EM&gt;print_conditional_breaking_change&lt;/EM&gt; function.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Future Plan&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Detect out of date announcement&lt;/LI&gt;
&lt;LI&gt;Detect related announcements in PR of breaking changes&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 15 Apr 2025 05:55:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-breaking-change-pre-announcement/ba-p/4403454</guid>
      <dc:creator>ychenu</dc:creator>
      <dc:date>2025-04-15T05:55:33Z</dc:date>
    </item>
    <item>
      <title>Resilience Testing with Azure Chaos Studio: Compute Failures</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/resilience-testing-with-azure-chaos-studio-compute-failures/ba-p/4389664</link>
      <description>&lt;H5 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Introduction&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Chaos Studio is an Azure service that helps you measure, understand, and build application and service resilience to real-world incidents, such as an unexpected infrastructure disruption or an application failure causing 100% CPU usage on a VM. In this new series of blog posts, we’ll share best practices on performing resilience tests for common failure scenarios, provide step-by-step tutorials, and discuss how to leverage test results to improve the resilience of your cloud applications. Today, we’ll focus on using Chaos Studio to simulate a compute failure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Resilience Testing Best Practices&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We recommend using a hypothesis-driven approach for resilience testing to ensure actionable results:&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Define a hypothesis: outline a specific failure scenario and predict how your infrastructure will perform if it occurs. &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Design a fault injection experiment that reflects the failure scenario you wish to test and set up proper telemetry to monitor performance over the course of the experiment.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Run your experiment and analyze results to determine if your hypothesis was validated or invalidated.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Make necessary improvements to your configurations based on your findings.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;As your cloud infrastructure changes and evolves, new dependency and configuration issues may arise – repeat this process over time to ensure continued reliability.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Simulate a Compute Failure Scenario&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Today, we’ll be performing an Availability Zone shutdown on a Virtual Machine Scale Set configured with instances across multiple Availability Zones. Remember to define a hypothesis before conducting your resilience test, for example: “If one Availability Zone is shut down, the Virtual Machine Scale Set’s autoscale configuration will detect the drop in instance count and automatically provision additional instances in the remaining zones, maintaining overall capacity and performance.” Next, we’ll create and run a fault injection experiment to test our scenario using Chaos Studio.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Prerequisites&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;A valid Azure subscription. If you don’t have one, &lt;/SPAN&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/purchase-options/azure-account?icid=azurefreeaccount" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;you can create a free account&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;A Virtual Machine Scale Set configured with instances across multiple availability zones. Ensure that it is located in a &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/chaos-studio/chaos-studio-region-availability" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;region supported by Azure Chaos Studio (Resource Targeting)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. If you don’t have one, you can follow the &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/flexible-virtual-machine-scale-sets-portal" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;instructions&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; to create one.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If this is your first time using Chaos Studio, follow the instructions below to register the resource provider for your subscription&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Open the &lt;/SPAN&gt;&lt;A href="https://portal.azure.com/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Azure portal&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Search for and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Subscriptions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. Select the subscription you’d like to use.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Settings&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Resource&lt;/STRONG&gt; providers&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; from the left-side menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Search for and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft.Chaos&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Register&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Create &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;an&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; Experiment and Set Up Monitoring&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To create an Availability Zone shutdown experiment on your Virtual Machine Scale set, do the following:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Open the &lt;/SPAN&gt;&lt;A href="https://portal.azure.com/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Azure portal&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. Search for and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Chaos Studio&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Targets&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; from the left-side menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select the Virtual Machine Scale Set you’d like to test and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Enable targets&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Enable&lt;/STRONG&gt; &lt;STRONG&gt;service-direct targets (All resources)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Review + Enable&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Enable&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate back to Chaos Studio and select &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Experiments&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; from the left-side menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Create&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;New experiment&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;On the Basics tab, select a subscription and resource group for your experiment. Give your experiment a name and select the region you’d like to store it in.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;On the Permissions tab, select whether you’d like to use a System or User-assigned &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;managed identity&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; to manage your experiment permissions. If you’re unsure of which to choose, select the system-assigned identity option. Check the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Enable custom role creation and assignment&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; checkbox – this will allow Chaos Studio to automatically assign the necessary permissions to your managed identity based on your experiment configuration.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;On the Experiment designer tab, select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Add action&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Add fault&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. Choose the VMSS Shutdown (version 2.0) fault from the dropdown. Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Next: Target resources&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; and select your Virtual Machine Scale Set. Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Next: Scope&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, choose the zone you’d like to shut down, and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Add&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Review + create&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; button, review the experiment configuration, and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Create&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The metrics you should monitor for your experiment run depend on the hypothesis you came up with for your scenario. Since our sample hypothesis predicted that our Virtual Machine Scale Set would provision additional instances in the event of a disruption based on its autoscale setting, we’ll show you how to track the availability of your Virtual Machine Scale Set’s virtual machine instances:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Search for your Virtual Machine Scale Set by name using the Azure portal search bar and select it to go to its overview page.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Monitoring&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Metrics&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; from the left-side menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Configure a metric with the following values:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Scope: your Virtual Machine Scale Set&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Metric Namespace: Virtual Machine Host&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Metric: VM Availability Metric (Preview)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Aggregation: Avg&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Add metric&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;You may select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Save to dashboard&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; and choose the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Pin to dashboard&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Pin to Grafana&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, or &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Send to workbook&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; options to save your metric where you’d like.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The VM Availability Metric will now display an average of the availability of your virtual machine instances within your Virtual Machine Scale Set over the course of your experiment run.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Run the Experiment and Analyze Results&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To run your experiment, do the following:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Within the Azure portal, navigate back to Chaos Studio and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Experiments&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; from the left-side menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select your experiment and select &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Start experiment(s)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Yes&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; from the bar at the top of the page.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select your experiment’s name to navigate to its overview page. Select the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Details&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; button under History to monitor its progress while running.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;While your experiment is running, navigate to your Virtual Machine Scale Set &amp;gt; Monitoring &amp;gt; Metrics, or the location where you saved your VM Availability Metric, and view the impact of the Availability Zone shutdown on your Virtual Machine Scale Set’s average instance availability:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Recommendations to Improve Resiliency&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Did your Virtual Machine Scale Set perform as you expected it to during the Availability Zone shutdown? If not, here are some steps you can take to improve your resiliency for future tests and protect against real-world incidents:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Configure or review the autoscale settings on your Virtual Machine Scale Set to ensure rapid provisioning of additional instances in unaffected zones during a failure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Maintain a balanced instance count across Availability Zones to minimize the impact of losing an entire zone.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Set up load balancing or adjust configurations to seamlessly redistribute traffic when a zone becomes unavailable.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;After making improvements to your Virtual Machine Scale Set configuration, be sure to test and iterate on them by continuing to perform resilience testing regularly.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Conclusion&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In this blog post, we have shown you how to use Chaos Studio to test your Virtual Machine Scale Sets against Availability Zone shutdowns. With the best practices laid out in this guide, you can conduct resilience tests on services across your cloud infrastructure using faults in Chaos Studio’s &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/chaos-studio/chaos-studio-fault-library" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;fault library&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. Be sure to look out for more blog posts covering other scenarios in the “Resilience Testing with Azure Chaos Studio” series soon. Feel free to add a comment below on which scenarios you’d like to see next. Happy resilience testing!&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Additional&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt; resources&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Chaos Studio Overview: &lt;/SPAN&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2FAzureChaosStudio&amp;amp;data=05%7C02%7Cprashabora%40microsoft.com%7C97b85263de9e45fec53208dcc261447e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638598970291980382%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=KXjm66iNnes%2Fi23UaLV6jQxB7CMUJ%2Bmb%2F2BKhOcJyqY%3D&amp;amp;reserved=0" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;http://aka.ms/AzureChaosStudio&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:0,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="7" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Documentation: &lt;/SPAN&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fchaos-studio%2F&amp;amp;data=05%7C02%7Cprashabora%40microsoft.com%7C97b85263de9e45fec53208dcc261447e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638598970291987614%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=WeI29vxwtCJU%2Bt7m9gBFZePH2nCwH2X5fNo7S%2B1gEr0%3D&amp;amp;reserved=0" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Azure Chaos Studio documentation - tutorials, API reference&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:0,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="8" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;MS Build Session Recording: &lt;/SPAN&gt;&lt;A href="https://www.youtube.com/watch?v=lk1yxLMj-7A" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://www.youtube.com/watch?v=lk1yxLMj-7A&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:0,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="9" data-aria-level="1"&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fazure.microsoft.com%2Fen-us%2Fblog%2Fadvancing-microsoft-azure-resilience-with-chaos-studio%2F&amp;amp;data=05%7C02%7Cprashabora%40microsoft.com%7C97b85263de9e45fec53208dcc261447e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638598970291994792%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=EuoO5oln%2BmznS%2B4d3pCERBGc28anm91TWpF3pinqczs%3D&amp;amp;reserved=0" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Advancing Microsoft Azure resilience with Chaos Studio | Microsoft Azure Blog&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:0,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Aptos&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="10" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/chaos-studio/chaos-studio-region-availability" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Regional availability of Azure Chaos Studio | Microsoft Learn&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:0,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[1]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Mar 2025 23:12:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/resilience-testing-with-azure-chaos-studio-compute-failures/ba-p/4389664</guid>
      <dc:creator>prasha01</dc:creator>
      <dc:date>2025-03-19T23:12:21Z</dc:date>
    </item>
    <item>
      <title>Upcoming Breaking Change in Az SSH for Arc Connections Extension</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/upcoming-breaking-change-in-az-ssh-for-arc-connections-extension/ba-p/4386955</link>
      <description>&lt;P&gt;The Az SSH extension is a vital tool for developers and IT professionals who use Azure DevOps. It allows users to securely connect to Azure virtual machines (VMs) using SSH (Secure Shell) and Entra ID, making remote management and deployment tasks more streamlined and efficient. The extension is widely used for its ease of integration with various Azure services and its ability to simplify the process of establishing secure connections.&lt;/P&gt;
&lt;H2&gt;The Upcoming Breaking Change&lt;/H2&gt;
&lt;P&gt;This breaking change affects all customers who use Az SSH extension for connecting to Azure Arc Machines. By &lt;STRONG&gt;May 21&lt;SUP&gt;st&lt;/SUP&gt;&lt;/STRONG&gt;, all versions of the Az SSH extension prior to 2.0.4 will become unusable upon installation for connecting to Arc resources. This breaking change is due to deprecation of a storage blob used during installation.&lt;/P&gt;
&lt;P&gt;Versions of the Az SSH extension prior to 2.0.4 will still be functional, but if there is corruption of the extension files, you will not be able to reinstall the extension. To check what version of the extension you have installed, run this command&lt;/P&gt;
&lt;PRE class="lia-align-center"&gt;az extension list --output table&lt;/PRE&gt;
&lt;P&gt;This change does not impact versions beginning with 2.0.4.&lt;/P&gt;
&lt;H2&gt;Action Items&lt;/H2&gt;
&lt;P&gt;To minimize the potential breaking of the Az SSH extension for connecting to Arc machines, we encourage you to take the following steps:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Update the Az SSH Extension&lt;/STRONG&gt;: Ensure that you update the Az SSH extension to the latest version (2.0.6). This can be done using the Azure CLI extension update command:&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE class="lia-align-center"&gt;az extension update --name ssh&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Review and Update Scripts&lt;/STRONG&gt;: If you have scripts or automated processes that install a pinned version of Az SSH extension prior to 2.0.4, make necessary adjustments to install a later version.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Stay Informed&lt;/STRONG&gt;: Keep an eye on official documentation and blogs for additional updates or guidance related to the Az SSH extension. Staying informed will help you stay ahead of any future changes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The breaking change in the Az SSH extension is a critical security update. Follow the steps above for a smooth transition and secure management of Azure Arc Machines. Stay proactive, informed, and keep your tools updated to maintain security and efficiency.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Steven Bucher&lt;/P&gt;
&lt;P&gt;Product Manager for SSH CLI Extension&lt;/P&gt;</description>
      <pubDate>Thu, 27 Feb 2025 21:49:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/upcoming-breaking-change-in-az-ssh-for-arc-connections-extension/ba-p/4386955</guid>
      <dc:creator>stevenbucher</dc:creator>
      <dc:date>2025-02-27T21:49:16Z</dc:date>
    </item>
    <item>
      <title>Announcing General Availability of Terraform Azure Verified Modules for Platform Landing Zone (ALZ)</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-general-availability-of-terraform-azure-verified/ba-p/4366027</link>
      <description>&lt;H1&gt;Azure Verified Modules&lt;/H1&gt;
&lt;P&gt;ALZ ❤️ AVM. We are moving to a more modular approach to deploying your platform landing zones. In line with consistent feedback from you, we have now released a set of modules that together will deploy your platform landing zone architecture (&lt;A class="lia-external-url" href="HTTPS://aka.ms/alz" target="_blank" rel="noopener"&gt;ALZ&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Azure Verified Modules for Platform Landing Zones (ALZ) is collection of&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/avm" target="_blank" rel="noopener"&gt;Azure Verified Modules&lt;/A&gt; that are composed together to create your Platform Landing Zone. This replaces the existing &lt;A class="lia-external-url" href="https://github.com/Azure/terraform-azurerm-caf-enterprise-scale" target="_blank" rel="noopener"&gt;CAF Enterprise Scale&lt;/A&gt; module that you may already be familiar with.&lt;/P&gt;
&lt;P&gt;The core Azure Verified Modules that are composed together are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Management Groups and Policy Pattern Module:&amp;nbsp;&lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-alz" target="_blank" rel="noopener"&gt;avm-ptn-alz&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Management Resources Pattern Module:&lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-alz-management/azurerm/latest" target="_blank" rel="noopener"&gt;&amp;nbsp;avm-ptn-management-alz&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Hub Virtual Networking Pattern Module:&amp;nbsp;&lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-hubnetworking" target="_blank" rel="noopener"&gt;avm-ptn-hubnetworking&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Virtual Network Gateway Pattern Module: &lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-vnetgateway" target="_blank" rel="noopener"&gt;avm-ptn-vnetgateway&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Virtual WAN Networking Pattern Module:&amp;nbsp;&lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-virtualwan" target="_blank" rel="noopener"&gt;avm-ptn-virtualwan&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Private DNS Zone for Private Link Pattern Module:&amp;nbsp;&lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/avm-ptn-network-private-link-private-dns-zones" target="_blank" rel="noopener"&gt;avm-ptn-network-private-link-private-dns-zones&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This means that you can now choose your own adventure by selecting only the modules that you need. It also means we can add new features faster and allows us the opportunity to do more rigorous testing of each module.&lt;/P&gt;
&lt;P&gt;To improve deployment reliability, we now use our own &lt;A class="lia-external-url" href="https://aka.ms/alz/tf/provider" target="_blank" rel="noopener"&gt;Terraform provider&lt;/A&gt;. The provider generates data for use by the module and does not directly deploy any resources. The move to a provider allows us to add many more features and checks to improve your deployment reliability.&lt;/P&gt;
&lt;H1&gt;ALZ IaC Accelerator updates for Terraform&lt;/H1&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://aka.ms/alz/acc" target="_blank" rel="noopener"&gt;Azure Landing Zones IaC Accelerator&lt;/A&gt; is our recommended approach for deploying the Terraform Azure Verified Modules for Platform Landing Zone (ALZ).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/starter/avm-plz" target="_blank" rel="noopener"&gt;Azure Verified Modules for Platform Landing Zone&lt;/A&gt; is now our default selection for the Terraform ALZ IaC Accelerator. This module will be the focus of our development and improvement efforts moving forward.&lt;/P&gt;
&lt;P&gt;The module implements best practices by default, including multi-region and availability zones for resiliency. The ALZ IaC Accelerator bootstrap continues to implement best practices, such as version control and Workload identity federation security.&lt;/P&gt;
&lt;P&gt;Along with supporting the Azure Verified Modules for Platform Landing Zone (ALZ) approach, we have also made many enhancements to the ALZ IaC Accelerator process. A summary of the improvements include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We now support HCL (HashiCorp Configuration language) tfvars file as the &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/phase2/plz-file" target="_blank" rel="noopener"&gt;platform landing zone configuration&lt;/A&gt; file format&lt;/LI&gt;
&lt;LI&gt;We have introduced a &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/phase0" target="_blank" rel="noopener"&gt;Phase 0&lt;/A&gt; to help you plan for your ALZ IaC Accelerator deployment&lt;/LI&gt;
&lt;LI&gt;We have introduced the concepts of &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/scenarios" target="_blank" rel="noopener"&gt;Scenarios&lt;/A&gt; and &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/options" target="_blank" rel="noopener"&gt;Options&lt;/A&gt; to simplify the decisions you need to make&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Platform landing zone configuration file&lt;/H2&gt;
&lt;P&gt;Before the introduction of the Azure Verified Modules for Platform Landing Zone (ALZ) starter module the &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/phase2/plz-file" target="_blank" rel="noopener"&gt;platform landing zone configuration file&lt;/A&gt; was supplied in YAML format. Due to the lack of support for YAML in Terraform, we had to then convert this to JSON. Once converted to JSON the configuration file lost all it's ordering, formatting and comments. This made day 2 updates to the configuration very cumbersome.&lt;/P&gt;
&lt;P&gt;With the support for the tfvars file (in HashiCorp Configuration Language format), we are now able to pass the configuration file in its original format to the version control system repository. This makes for a much easier day 2 update process as the file retains it's ordering, comments and formatting as defined by you.&lt;/P&gt;
&lt;H2&gt;Phase 0&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://aka.ms/alz/acc/phase0" target="_blank" rel="noopener"&gt;Phase 0&lt;/A&gt; is a new planning phase we have added to the documentation. This phase takes you through 3 sets of decisions you need to make about the ALZ IaC Accelerator deployment:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/alz/acc/phase0/bootstrap" target="_blank" rel="noopener"&gt;Bootstrap decisions&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/alz/acc/scenarios" target="_blank" rel="noopener"&gt;Platform Landing Zone Scenarios&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/alz/acc/options" target="_blank" rel="noopener"&gt;Platform Landing Zone Options&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In order to assist with this, we also provide a downloadable &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/checklist" target="_blank" rel="noopener"&gt;Excel checklist&lt;/A&gt; , which lists all the decisions so you can consider them up front prior to completing any configuration file updates.&lt;/P&gt;
&lt;P&gt;Phase 0 guides you through this process and provides explanations of the decisions.&lt;/P&gt;
&lt;P&gt;The Bootstrap decisions relate to the resources deployed to Azure and the configuration of your Version Control System required for the Continuous Delivery pipeline. These decisions are not new to the ALZ IaC Accelerator, but we now provide more structured guidance.&lt;/P&gt;
&lt;H2&gt;Platform Landing Zone Scenarios&lt;/H2&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/scenarios" target="_blank" rel="noopener"&gt;Scenarios&lt;/A&gt; are a new concept introduced for the Azure Verified Modules for Platform Landing Zone (ALZ) starter module. We aim to cover the most common Platform landing zone use cases we hear requested from partners and customers with the ALZ IaC Accelerator. These include:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Multi-Region Hub and Spoke Virtual Network with Azure Firewall&lt;/LI&gt;
&lt;LI&gt;Multi-Region Virtual WAN with Azure Firewall&lt;/LI&gt;
&lt;LI&gt;Multi-Region Hub and Spoke Virtual Network with Network Virtual Appliance (NVA)&lt;/LI&gt;
&lt;LI&gt;Multi-Region Virtual WAN with Network Virtual Appliance (NVA)&lt;/LI&gt;
&lt;LI&gt;Management Groups, Policy and Management Resources Only&lt;/LI&gt;
&lt;LI&gt;Single-Region Hub and Spoke Virtual Network with Azure Firewall&lt;/LI&gt;
&lt;LI&gt;Single-Region Virtual WAN with Azure Firewall&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For each scenario we provide an example Platform landing zone configuration file that is ready to deploy immediately. We know that customers will want to modify some of the settings and that is where &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/options" target="_blank" rel="noopener"&gt;Options&lt;/A&gt; come in.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;NOTE: At the time this blog post was published, we support the 7 Scenarios listed above. We may update or add to these Scenarios based on feedback we hear from you, so keep an eye on our documentation.&lt;/EM&gt;&lt;/P&gt;
&lt;H2&gt;Platform Landing Zone Options&lt;/H2&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://aka.ms/alz/acc/options" target="_blank" rel="noopener"&gt;Options&lt;/A&gt; build on the Scenarios. For each Scenario, you can choose to customise it with one or more Options. Each Options includes detailed instructions of how to update the Platform landing zone configuration file or introduce library files to implement to the option.&lt;/P&gt;
&lt;P&gt;The Options are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Customise Resource Names&lt;/LI&gt;
&lt;LI&gt;Customize Management Group Names and IDs&lt;/LI&gt;
&lt;LI&gt;Turn off DDOS protection plan&lt;/LI&gt;
&lt;LI&gt;Turn off Bastion host&lt;/LI&gt;
&lt;LI&gt;Turn off Private DNS zones and Private DNS resolver&lt;/LI&gt;
&lt;LI&gt;Turn off Virtual Network Gateways&lt;/LI&gt;
&lt;LI&gt;Additional Regions&lt;/LI&gt;
&lt;LI&gt;IP Address Ranges&lt;/LI&gt;
&lt;LI&gt;Change a policy assignment enforcement mode&lt;/LI&gt;
&lt;LI&gt;Remove a policy assignment&lt;/LI&gt;
&lt;LI&gt;Turn off Azure Monitoring Agent&lt;/LI&gt;
&lt;LI&gt;Deploy Azure Monitoring Baseline Alerts (AMBA)&lt;/LI&gt;
&lt;LI&gt;Turn off Defender Plans&lt;/LI&gt;
&lt;LI&gt;Implement Zero Trust Networking&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;EM&gt;NOTE: At the time this blog post was published, we support the 14 Options listed above. We may update or add to these Options based on feedback we hear from you, so keep an eye on our documentation.&lt;/EM&gt;&lt;/P&gt;
&lt;H1&gt;Azure Landing Zones Library&lt;/H1&gt;
&lt;P&gt;Another new offering is the &lt;A class="lia-external-url" href="https://aka.ms/alz/library" target="_blank" rel="noopener"&gt;Azure Landing Zones Library&lt;/A&gt;. This is an evolution of the library concept in the &lt;A class="lia-external-url" href="https://registry.terraform.io/modules/Azure/caf-enterprise-scale/azurerm/latest" target="_blank" rel="noopener"&gt;caf-enterprise-scale&lt;/A&gt; module.&lt;/P&gt;
&lt;P&gt;Principally, the Library allows us to decouple the update cycle of the ALZ architecture, from the module and provider. We are separating the data from the deployment logic. This allows you to update the module to take advantage of a bug fix, without having to change the policies that are deployed. Something that wasn't easily possible before. Conversely, you are able to update to the latest policy refresh of Azure Landing Zones without updating the module itself.&lt;/P&gt;
&lt;P&gt;The Library has its own &lt;A class="lia-external-url" href="https://azure.github.io/Azure-Landing-Zones-Library/" target="_blank" rel="noopener"&gt;documentation site&lt;/A&gt;, which introduces the concepts. We plan to make the library the single source of truth for all Azure Landing Zones implementation options (e.g. Portal, Terraform and Bicep) in the future.&lt;/P&gt;
&lt;H1&gt;Azure Landing Zones Documentation Site&lt;/H1&gt;
&lt;P&gt;Furthermore, we have a new place to go for all technical documentation for Azure Verified Modules for Platform Landing Zones (ALZ). With the move to multiple modules, and the new accelerator all having multiple GitHub repositories, we felt the need to centralize the documentation to make it the one place to go to get technical details.&lt;/P&gt;
&lt;P&gt;We currently have documentation for the Accelerator and Terraform, with Bicep coming soon.&lt;/P&gt;
&lt;P&gt;The new vanity URL is: &lt;A class="lia-external-url" href="https://aka.ms/alz/tech-docs" target="_blank" rel="noopener"&gt;https://aka.ms/alz/tech-docs&lt;/A&gt;. Please let us know what you think!&lt;/P&gt;
&lt;H1&gt;What about ALZ-Bicep?&lt;/H1&gt;
&lt;P&gt;Finally, some of you may be wondering what the future for our Bicep implementation option (&lt;A class="lia-external-url" href="HTTPS://aka.ms/alz/bicep" target="_blank" rel="noopener"&gt;ALZ Bicep&lt;/A&gt;) for Azure Verified Modules for Platform Landing Zones (ALZ) may be with this evolution on the Terraform side. And we have good news to share!&lt;/P&gt;
&lt;P&gt;Work is underway to also build the next version of ALZ in Bicep, which will be known as “Bicep Azure Verified Modules for Platform Landing Zone (ALZ)”. This will also use the new Azure Landing Zones Library and be built from Azure Verified Modules (where appropriate).&lt;/P&gt;
&lt;P&gt;We are currently looking to complete this work before August 2025, if not a lot sooner than this; as we are making good progress as we speak!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But for now, for Bicep you do not do anything and continue to use ALZ Bicep via the ALZ IaC Accelerator and we will provide more updates on the next version of Bicep ALZ in the coming months!&lt;/P&gt;
&lt;H1&gt;Staying up-to-date&lt;/H1&gt;
&lt;P&gt;We highly recommend joining, or watching back, our quarterly Azure Landing Zones Community Calls, to get all the latest and greatest from the ALZ team.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Our next one is on the 29th January 2025 and you can find the link to sign up to attend or watch back previous ones at: &lt;A class="lia-external-url" href="https://aka.ms/alz/community" target="_blank" rel="noopener"&gt;aka.ms/ALZ/Community&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We look forward to seeing you all there soon!&lt;/P&gt;</description>
      <pubDate>Wed, 22 Jan 2025 09:10:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-general-availability-of-terraform-azure-verified/ba-p/4366027</guid>
      <dc:creator>jaredfholgate</dc:creator>
      <dc:date>2025-01-22T09:10:30Z</dc:date>
    </item>
    <item>
      <title>Azure CLI and Azure PowerShell Ignite 2024 Announcement</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-ignite-2024-announcement/ba-p/4304204</link>
      <description>&lt;P&gt;The priority for Azure CLI and Azure PowerShell remains to provide our customers with the most complete, secure, and easy-to-use tools to manage Azure resources.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At Microsoft Ignite 2024, we are announcing the following new capabilities delivering on our priorities:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Extending our coverage and commands API version upgrade.&lt;/LI&gt;
&lt;LI&gt;Security improvements.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Investments in Copilot in Azure&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Extending our coverage&lt;/STRONG&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the past six months,&amp;nbsp;we have added or refreshed coverage for new or existing Azure services within 30 days of their general availability.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You will see new and updated command lines for ArcGateway, AzTerraform, ConnectedMachine, Fabric, Astro, Synapse, AppComplianceAutomation, Storage, App, and other modules.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Note&lt;/U&gt;&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&amp;nbsp;To use the associated commands, you need to install the Azure CLI extension or the Azure PowerShell module.&amp;nbsp;&lt;/P&gt;
&lt;P&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;For details about all the commands that have been updated, as well as a complete list of the new features in this release for the Azure client tools, see the release notes for each tool:&amp;nbsp;&lt;/P&gt;
&lt;P&gt; &amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure CLI: &lt;A href="https://learn.microsoft.com/cli/azure/release-notes-azure-cli" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/cli/azure/release-notes-azure-cli&lt;/A&gt; &amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Azure PowerShell:  &lt;A href="https://learn.microsoft.com/powershell/azure/release-notes-azureps" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/powershell/azure/release-notes-azureps&lt;/A&gt;  &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Credential detection from Az CLIs outputs&lt;/STRONG&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We have been actively working on hardening your defense in depth with secrets awareness in Azure command line tools.&lt;/P&gt;
&lt;P&gt;For Azure CLI and Azure PowerShell, in the past 6 months, we have collaborated with our internal team to replace verification patten with the Azure secret common library, expanding the coverage types of patches and the range of command lines. The range of command line detection has been almost 100% covered. The Azure CLI and Azure PowerShell use the same detection logic and are continually being upgraded.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We still encourage users to enable environment parameters:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;AZURE_CLIENTS_SHOW_SECRETS_WARNING=True (Default)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;For Azure PowerShell only&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Our team is gradually transitioning to using SecureString for tokens, account keys, and secrets, replacing the traditional string types. Currently, we offer an opt-in method for the &lt;EM&gt;&lt;STRONG&gt;Get-AzAccessToken&lt;/STRONG&gt;&lt;/EM&gt; command line, which does not introduce breaking changes:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Get-AzAccessToken –AsSecureString&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We encourage users to utilize the&amp;nbsp;&lt;EM&gt;-AsSecureString&lt;/EM&gt; parameter to output tokens securely. Over the next year, we plan to implement this security method across more command lines, converting all keys, tokens, and similar data from string types to SecureString. Please note that when the command line output defaults to &lt;EM&gt;-AsSecureString&lt;/EM&gt;&lt;STRONG&gt; &lt;/STRONG&gt;mode, it may result in breaking changes. Therefore, we advise users to stay updated with our breaking change documentation. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Support Azure Linux 3.0 for Azure CLI&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure CLI has supported Azure Linux 3.0 from 2.65.0. The Azure Linux 3 user can install CLI with&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;tdnf install azure-cli&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Starting from version 2.64.0 of Azure CLI, the base Linux distribution of Azure CLI is now Azure Linux 3.0.&lt;/P&gt;
&lt;P&gt;It’s available at Microsoft Artifact Registry (MAR) &lt;A href="https://mcr.microsoft.com/en-us/artifact/mar/azure-cli/about" target="_blank" rel="noopener"&gt;https://mcr.microsoft.com/en-us/artifact/mar/azure-cli/about&lt;/A&gt;. &amp;nbsp;You can get it with the below command：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;docker pull mcr.microsoft.com/azure-cli&lt;/LI-CODE&gt;
&lt;P&gt;or&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;docker pull mcr.microsoft.com/azure-cli:azurelinux3.0&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For further migration guidance especially involved with GitHub Actions, please check out more details from &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuretoolsblog/azure-cli-docker-container-base-linux-image-is-now-azure-linux/4236248" target="_blank" rel="noopener" data-lia-auto-title="blog." data-lia-auto-title-active="0"&gt;blog.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Deprecate SP with certificate with az login –password for Azure CLI&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For &lt;EM&gt;az login&lt;/EM&gt;,&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;--password&lt;/EM&gt; &lt;/STRONG&gt;will no longer accept service principal certificate in Azure CLI 2.67.0. Use `&lt;STRONG&gt;&lt;EM&gt;--certificate&lt;/EM&gt;&lt;/STRONG&gt;` to pass a service principal certificate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Logging in with secret should work as before
az login --service-principal --username xxx --password mysecret --tenant xxx

# Old way to log in with a certificate, will show a deprecation warning
az login --service-principal --username xxx --password ~/mycert.pem --tenant xxx

# New way to log in with a certificate
az login --service-principal --username xxx --certificate ~/mycert.pem --tenant xxx
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To sign in with a certificate, the certificate must be available locally as a PEM or DER file in ASCII format. PKCS#12 files (.p12/.pfx) don't work.&lt;/P&gt;
&lt;P&gt;When you use a PEM file, the PRIVATE KEY and CERTIFICATE must be appended together within the file. You don't need to prefix the path with an `@` like you do with other az commands.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Azure PowerShell WAM Authentication Issues and Fixes&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Since version Az 12.0.0, Azure PowerShell has supported Web Authentication Manager (WAM) as the default authentication mechanism. During this period, several critical issues affected users logging in interactively. These issues have been addressed and fixed by version 13.0.0, including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The WAM login interface failing to pop up, resulting in login failures.&lt;/LI&gt;
&lt;LI&gt;Login failures for users using the device-code authentication method.&lt;/LI&gt;
&lt;LI&gt;The "Work and school account" option does not appear in the WAM pop-up window.&lt;/LI&gt;
&lt;LI&gt;Incompatibility of the&amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;Export-AzSshConfig&amp;nbsp;&lt;/STRONG&gt;&lt;/EM&gt;and&amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;Enter-AzVM&lt;/STRONG&gt; &lt;/EM&gt;commands&amp;nbsp;from the Az.Ssh module when WAM is enabled.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;For detailed announcements on specific issues, please refer to our&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell/issues/25005" target="_blank" rel="noopener"&gt;WAM issues and Workarounds/azure-powershell&lt;/A&gt; issue.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In response to these WAM issues, our team has been actively fixing bugs, making improvements, and establishing monitoring and alert mechanisms with relevant teams to detect issues early and assess their impact. Additionally, we have integrated test cases baseline into the release pipeline.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We encourage users to enable the WAM function for security by using the command:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Update-AzConfig -EnableLoginByWam $true&lt;/LI-CODE&gt;
&lt;P&gt;If you encounter problems, please report them in &lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell/issues/" target="_blank" rel="noopener"&gt;Issues · Azure/azure-powershell&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Sovereign Cloud does not currently support WAM, we plan to implement this in the coming months.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Change in Azure CLI extension management&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Starting with Azure CLI version 2.56.0, a new `&lt;EM&gt;&lt;STRONG&gt;--allow-preview&lt;/STRONG&gt;&lt;/EM&gt;` parameter was introduced for the extension installations, with its default value set to &lt;STRONG&gt;True&lt;/STRONG&gt;. This change, as outlined in our &lt;A href="https://github.com/Azure/azure-cli/blob/dev/doc/extensions/versioning_guidelines.md#versioning-of-azure-cli-extension" target="_blank"&gt;extension versioning guidelines&lt;/A&gt;, helps distinguish between stable and preview versions, ensuring consistency across stable releases while still enabling the publication of preview features.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Beginning with version 2.67.0, Azure CLI will now install only &lt;STRONG&gt;stable versions&lt;/STRONG&gt; of extension modules by default. If a later preview version of an extension is available, users will receive a warning message that explains how to enable preview versions by using the `&lt;EM&gt;&lt;STRONG&gt;--allow-preview&lt;/STRONG&gt;&lt;/EM&gt;` parameter.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Important Note:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If no stable version of an extension is available, preview versions will be installed by default, along with a warning message, like below, notifying users of this behavior.&lt;BR /&gt;"No stable version of 'xxx' to install. Preview versions are allowed."&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Azure PowerShell Long Term Support releases (LTS) support&lt;/STRONG&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure PowerShell already supports both Standard Term Support releases (STS) and Long-Term Support releases (LTS). Users can choose the appropriate version according to their project needs. Users can choose to stay with the LTS version until the next LTS version, or upgrade with the latest version to experience new features. The following document details the definitions of LTS and STS.&amp;nbsp;Beginning with Az 12, even numbered releases are LTS versions.&lt;/P&gt;
&lt;P&gt;Azure PowerShell support lifecycle: &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/azure/azureps-support-lifecycle#support-of-releases" target="_blank" rel="noopener"&gt;Azure PowerShell support lifecycle | Microsoft Learn&amp;nbsp;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure CLI will provide LTS version in early 2025. More details could be found at &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cli/azure/azure-cli-support-lifecycle" target="_blank" rel="noopener"&gt;Azure CLI lifecycle and support | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Enhancement to Invoke-AzRest&lt;/STRONG&gt;&lt;STRONG&gt;Method&lt;/STRONG&gt;&lt;STRONG&gt; in Azure PowerShell&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure PowerShell 13.0.0 introduces major enhancements to the &lt;EM&gt;&lt;STRONG&gt;Invoke-AzRestMethod&lt;/STRONG&gt;&lt;/EM&gt; cmdlet, empowering users with a new option to enable long-running operations (LRO) and flexible control over operation status polling in complex Azure workflows.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Key Features of &lt;EM&gt;&lt;STRONG&gt;Invoke-AzRestMethod&lt;/STRONG&gt;&lt;/EM&gt; Enhancement:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;LRO Support with Enhanced Status Tracking:&lt;/STRONG&gt; With the new &lt;EM&gt;&lt;STRONG&gt;-WaitForCompletion&lt;/STRONG&gt;&lt;/EM&gt; parameter, users can wait for the operations to complete and directly receive the final status. In debug mode, users can also monitor long-running operations (such as deployments or resource provisioning) and receive real-time status updates directly in their PowerShell session.&lt;/LI&gt;
&lt;LI&gt;Flexible Polling Options for Customized Control: The addition of &lt;EM&gt;&lt;STRONG&gt;-PollFrom&lt;/STRONG&gt;&lt;/EM&gt; and &lt;EM&gt;&lt;STRONG&gt;-FinalResultFrom&lt;/STRONG&gt;&lt;/EM&gt; parameters enable users to define custom polling URIs and specify final result header sources, ensuring compatibility across various Azure resources and scenarios.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example Usage:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Using the new &lt;EM&gt;&lt;STRONG&gt;-WaitForCompletion&lt;/STRONG&gt;&lt;/EM&gt; parameter, here’s how to create a Managed HSM (Hardware Security Module) and track its provisioning status until it’s fully completed:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Invoke-AzRestMethod -Method PUT -WaitForCompletion -Path "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/managedHSMs/{hsmName}"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This example monitors the creation of a Managed HSM, providing real-time updates throughout the longer provisioning process (in debug mode), ensuring the resource reaches a fully operational state.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more details and examples, refer to the updated release notes: &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/azure/release-notes-azureps" target="_blank" rel="noopener"&gt;Azure PowerShell release notes&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Azure CLI/PS scenarios with &lt;/STRONG&gt;&lt;STRONG&gt;Copilot in Azure&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the second half of 2024, we improved knowledge of Azure CLI commands and end-to-end scenarios for Copilot in Azure to answer questions related to Azure CLI commands or scripts, following our best practices.&lt;/P&gt;
&lt;P&gt;In the past 6 months, we have optimized the following scenarios:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Enhanced Prompt Flow and RAG architecture tailored for CLI script generation, ensuring higher command and scenario accuracy.&lt;/LI&gt;
&lt;LI&gt;Improved user intent recognition with hybrid search, enabling more precise retrieval of relevant knowledge from user queries.&lt;/LI&gt;
&lt;LI&gt;Supported parameter value injection, simplifying the process for customers to input parameter values and generate directly usable scripts on Copilot in Azure.&lt;/LI&gt;
&lt;LI&gt;Optimized the knowledge base to reduce hallucination issues.&lt;/LI&gt;
&lt;LI&gt;More accurately identified out-of-scope questions.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In the 2024 Ignite Event, we’ve also released a public preview of AI Shell, which lets you access Copilot in Azure to help answer any questions you have about Azure CLI or Azure PowerShell. For more information about the AI Shell release please check out. &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/powershell/utility-modules/aishell/overview?view=ps-modules" target="_blank" rel="noopener"&gt;AI Shell&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To learn more about Microsoft Copilot for Azure and how it can help you, visit: &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/simplify-it-management-with-microsoft-copilot-for-azure-%e2%80%93-save-time-and-get-answ/3981106" target="_blank" rel="noopener" data-lia-auto-title="Microsoft Copilot for Azure" data-lia-auto-title-active="0"&gt;Microsoft Copilot for Azure&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Breaking Changes &lt;/STRONG&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;The latest breaking change guidance documents can be found at the links below. To read more about the breaking changes migration guide, ensure your environment is ready to install the newest version of Azure CLI and Azure PowerShell.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure CLI:&amp;nbsp; &lt;A class="lia-external-url" href="https://learn.microsoft.com/cli/azure/release-notes-azure-cli" target="_blank" rel="noopener"&gt;Release notes &amp;amp; updates – Azure CLI | Microsoft Learn&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure PowerShell: &lt;A class="lia-external-url" href="https://learn.microsoft.com/powershell/azure/migrate-az-13.0.0" target="_blank" rel="noopener"&gt;Migration guide for Az 13.0.0 | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Milestone timelines:&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-cli/milestones" target="_blank" rel="noopener"&gt;Azure CLI Milestones&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell/milestones" target="_blank" rel="noopener"&gt;Azure PowerShell Milestones&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thank you for using the Azure command-line tools. We look forward to continuing to improve your experience. We hope you enjoy Ignite and all the great work released this week. We'd love to hear your feedback, so feel free to reach out anytime.  &amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GitHub:&amp;nbsp;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-cli" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-cli&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-powershell" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-powershell&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Let's be in touch on X (Twitter) : &lt;A href="https://twitter.com/azureposh" target="_blank" rel="noopener"&gt;@azureposh&lt;/A&gt;   &lt;A href="https://twitter.com/azurecli" target="_blank" rel="noopener"&gt;@AzureCli &lt;/A&gt; &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure CLI and Azure PowerShell team&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Nov 2024 14:05:13 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-and-azure-powershell-ignite-2024-announcement/ba-p/4304204</guid>
      <dc:creator>Alex-wdy</dc:creator>
      <dc:date>2024-11-20T14:05:13Z</dc:date>
    </item>
    <item>
      <title>Unlocking the Best of Azure with AzureRM and AzAPI Providers</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/unlocking-the-best-of-azure-with-azurerm-and-azapi-providers/ba-p/4283264</link>
      <description>&lt;P&gt;&lt;SPAN&gt;With the recent release of AzAPI 2.0, Azure offers two powerful Terraform providers to meet your infrastructure needs: AzureRM and AzAPI. The key question is, when should you use each one? This article offers a clear guide for Terraform users, particularly those familiar with the AzureRM provider, on some ideal scenarios for each. The recommendations provided within this post are jointly provided between HashiCorp and Microsoft; &lt;A href="https://www.hashicorp.com/blog/enhancing-azure-deployments-with-azurerm-and-azapi-terraform-providers" target="_self"&gt;click here for HashiCorp's blogpost.&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Overview&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;At a high level, AzureRM provides a stable, well-tested layer on top of Azure APIs. It handles the entire resource lifecycle—creation, updates, and deletion—while managing breaking changes&lt;/SPAN&gt;&lt;SPAN&gt;, and ensuring smooth operations. AzureRM is ideal for users looking for stability and simplified &lt;/SPAN&gt;&lt;SPAN&gt;configuration management.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;On the other hand, AzAPI is a lightweight wrapper around Azure APIs, enabling direct and early access to the latest Azure features. It allows for quicker adoption of new services or workarounds for AzureRM limitations, making it ideal for users who need cutting-edge functionality. Below, we’ll dive into the differences between the two providers and when to use each.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;AzureRM: A Proven, Simplified Approach&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;AzureRM abstracts complexity by managing Azure API versions on your behalf. The provider ensures that resources are fully compatible with one another and that configuration changes don’t introduce breaking issues, thanks to its rigorous testing. If you’re using resources that don’t require constant updates or access to the latest API versions, AzureRM provides a more stable and simplified experience.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Key benefits of AzureRM:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Automatic API Versioning&lt;/STRONG&gt;&lt;SPAN&gt;: AzureRM handles API version compatibility, making upgrades seamless.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Simplicity&lt;/STRONG&gt;&lt;SPAN&gt;: Resource property names are intuitive (e.g., disk_size_in_gb vs. disk_size), reducing the need to consult Azure API documentation frequently.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Comprehensive Documentation&lt;/STRONG&gt;&lt;SPAN&gt;: AzureRM offers extensive resources and examples for each service, making it easier to onboard and use in your projects.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;AzureRM is ideal for scenarios where you prioritize stability, want to minimize complexity, and don’t need the very latest features.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;AzAPI: Cutting-Edge Features and Access to Azure APIs&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;AzAPI, by contrast, provides a thinner layer, allowing for direct access to the latest Azure API versions as soon as they’re available. It’s&lt;/SPAN&gt;&lt;SPAN&gt; well suited for&lt;/SPAN&gt;&lt;SPAN&gt; scenarios where you need quick access to features before they are fully supported in AzureRM.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Key benefits of AzAPI:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Immediate API Access&lt;/STRONG&gt;&lt;SPAN&gt;: AzAPI gives users access to the latest API versions forAzure resources, allowing teams to use new Azure services and features sooner.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Targeted Resource Updates&lt;/STRONG&gt;&lt;SPAN&gt;: With the azapi_update_resource function, you can modify specific resource properties without upgrading the entire resource or provider.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Fine-Grained Control&lt;/STRONG&gt;&lt;SPAN&gt;: AzAPI provides&amp;nbsp; resource versioning to allow for more control over the infrastructure configuration. User defined retryable errors, HTTP headers, URL control and resource replacement definitions are a few other ways AzAPI provides granular control.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;AzAPI is recommended for scenarios where early access to new Azure features is crucial, or when you need granular control over your infrastructure.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Documentation and Community Support&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;AzureRM has a more extensive collection of blog posts, community contributions, and official documentation. This makes it easier for new users to find examples and ramp up quickly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;AzAPI, while newer, follows Azure’s API structures more closely, making it easier for users familiar with Bicep or ARM templates to understand.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Conclusion: When to Use Each Provider&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Choose AzureRM&lt;/STRONG&gt;&lt;SPAN&gt; if you prioritize &lt;/SPAN&gt;&lt;STRONG&gt;stability, simplicity&lt;/STRONG&gt;&lt;SPAN&gt;, and &lt;/SPAN&gt;&lt;STRONG&gt;automatic versioning&lt;/STRONG&gt;&lt;SPAN&gt;. It’s best for teams that want to minimize the complexity of managing infrastructure and don’t need immediate access to new Azure features.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Choose AzAPI&lt;/STRONG&gt;&lt;SPAN&gt; if you need &lt;/SPAN&gt;&lt;STRONG&gt;cutting-edge access&lt;/STRONG&gt;&lt;SPAN&gt; to the latest Azure APIs or need to &lt;/SPAN&gt;&lt;STRONG&gt;customize resource configurations&lt;/STRONG&gt;&lt;SPAN&gt; without waiting for AzureRM to be updated. It’s ideal for teams that require rapid innovation and fine-grained control over API versions.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Both providers provid&lt;/SPAN&gt;&lt;SPAN&gt;e a fir&lt;/SPAN&gt;&lt;SPAN&gt;st-class experience, backed by Microsoft and HashiCorp, and can be &lt;/SPAN&gt;&lt;SPAN&gt;adapted &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;based on your needs. You can also transition between them seamlessly with tools like the upcoming Azure Terraform Migration tool release (&lt;/SPAN&gt;&lt;A href="https://github.com/Azure/aztfmigrate" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;aztfmigrate&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;), making it easy to adjust your approach as your infrastructure evolves.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We hope this guide helps you determine when to use AzureRM or AzAPI, ensuring you get the most out of your Terraform and Azure infrastructure.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Oct 2024 20:01:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/unlocking-the-best-of-azure-with-azurerm-and-azapi-providers/ba-p/4283264</guid>
      <dc:creator>stevenjma</dc:creator>
      <dc:date>2024-10-30T20:01:51Z</dc:date>
    </item>
    <item>
      <title>Announcing AzAPI 2.0</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-azapi-2-0/ba-p/4275733</link>
      <description>&lt;P&gt;The AzAPI provider, designed to expedite the integration of new Azure services with HashiCorp Terraform, has now released 2.0. This updated version marks a significant step in our goal to provide launch day support for Azure services using Terraform.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;What is the AzAPI Provider?&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The AzAPI provider functions as a lightweight layer atop the Azure ARM REST APIs. It is a first class provider experience along with the AzureRM provider. Azure resources that might not yet be or may never be supported in AzureRM can be accessed by this provider, including private/public preview services and features.&lt;/P&gt;
&lt;P&gt;Key Features of the AzAPI Provider Include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Resource-specific versioning&lt;/STRONG&gt;, allowing users to switch to a new API version without altering provider versions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Special functions&lt;/STRONG&gt; like `azapi_update_resource` and `azapi_resource_action`.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Immediate Day 0 support&lt;/STRONG&gt; for new services.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Ready to see the new updates? Let’s take a look!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;No More JSON!&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All resource properties, outputs, and state representation are now handled with HashiCorp Configuration Language (HCL) instead of JSON. This change allows the use of all native Terraform HCL functionalities. For more info on scenarios on usage, &lt;A href="https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-azapi-dynamic-properties/ba-p/4121855" target="_self"&gt;check out our initial announcement.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Clarity with Outputs&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Outputs are now customizable through the `response_export_values` property, which can function as either a list or a map.&lt;/P&gt;
&lt;P&gt;For instance, to export response values for an Azure container registry:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If I set the value to a list, i.e. response_export_values = `["properties.loginServer", "properties.policies.quarantinePolicy.status"]`&amp;nbsp;, I would get the following output:&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE&gt;&lt;CODE class="lang-hcl"&gt;{
    &lt;SPAN class="hljs-attr"&gt;properties&lt;/SPAN&gt; = {
        &lt;SPAN class="hljs-attr"&gt;loginServer&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"registry1.azurecr.io"&lt;/SPAN&gt;
        &lt;SPAN class="hljs-attr"&gt;policies&lt;/SPAN&gt; = {
            &lt;SPAN class="hljs-attr"&gt;quarantinePolicy&lt;/SPAN&gt; = {
                &lt;SPAN class="hljs-attr"&gt;status&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"disabled"&lt;/SPAN&gt;
            }
        }
    }
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI&gt;If I instead set the value to a map using &lt;A href="https://jmespath.org/" target="_blank" rel="noopener"&gt;JMESPath querying&lt;/A&gt;, i.e. response_export_values = `{"login_server": "properties.loginServer", "quarantine_status": "properties.policies.quarantinePolicy.status"}`, I would get the following output:&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE&gt;&lt;CODE class="lang-hcl"&gt;{
    &lt;SPAN class="hljs-string"&gt;"login_server"&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"registry1.azurecr.io"&lt;/SPAN&gt;
    &lt;SPAN class="hljs-string"&gt;"quarantine_status"&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"disabled"&lt;/SPAN&gt;
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This feature uses a key-value configuration, making it easier to specify exact output values. For example, you can set `{"login_server": "properties.loginServer", "quarantine_status": "properties.policies.quarantinePolicy.status"}`.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;retry Block&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;User-defined retriable errors via the retry block help the provider digest errors when expected. For example, if a resource may run into a create timeout issue, the following block of code may help:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class="lang-hcl"&gt;resource &lt;SPAN class="hljs-string"&gt;"azapi_resource"&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;"example"&lt;/SPAN&gt; {
    &lt;SPAN class="hljs-comment"&gt;# usual properties&lt;/SPAN&gt;
    retry {
        &lt;SPAN class="hljs-attr"&gt;interval_seconds&lt;/SPAN&gt;     = &lt;SPAN class="hljs-number"&gt;5&lt;/SPAN&gt;
        &lt;SPAN class="hljs-attr"&gt;randomization_factor&lt;/SPAN&gt; = &lt;SPAN class="hljs-number"&gt;0.5&lt;/SPAN&gt; &lt;SPAN class="hljs-comment"&gt;# adds randomization to retry pattern&lt;/SPAN&gt;
        &lt;SPAN class="hljs-attr"&gt;multiplier&lt;/SPAN&gt;           = &lt;SPAN class="hljs-number"&gt;2&lt;/SPAN&gt; &lt;SPAN class="hljs-comment"&gt;# if try fails, multiplies time between next try by this much&lt;/SPAN&gt;
        &lt;SPAN class="hljs-attr"&gt;error_message_regex&lt;/SPAN&gt;  = [&lt;SPAN class="hljs-string"&gt;"ResourceNotFound"&lt;/SPAN&gt;]
    }
    timeouts {
        &lt;SPAN class="hljs-attr"&gt;create&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"10m"&lt;/SPAN&gt;
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H1&gt;Preflight Support&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Preflight validation, enabled by a feature flag, will identify errors without deploying resources, providing a quicker feedback loop. For example, in a config with several resources, an invalid network addressPrefix definition will be caught quickly:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class="lang-hcl"&gt;provider &lt;SPAN class="hljs-string"&gt;"azapi"&lt;/SPAN&gt; {
  &lt;SPAN class="hljs-attr"&gt;enable_preflight&lt;/SPAN&gt; = &lt;SPAN class="hljs-literal"&gt;true&lt;/SPAN&gt;
}
resource &lt;SPAN class="hljs-string"&gt;"azapi_resource"&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;"vnet"&lt;/SPAN&gt; {
  &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;      = &lt;SPAN class="hljs-string"&gt;"Microsoft.Network/virtualNetworks@2024-01-01"&lt;/SPAN&gt;
  &lt;SPAN class="hljs-attr"&gt;parent_id&lt;/SPAN&gt; = azapi_resource.resourceGroup.id
  &lt;SPAN class="hljs-attr"&gt;name&lt;/SPAN&gt;      = &lt;SPAN class="hljs-string"&gt;"example-vnet"&lt;/SPAN&gt;
  &lt;SPAN class="hljs-attr"&gt;location&lt;/SPAN&gt;  = &lt;SPAN class="hljs-string"&gt;"westus"&lt;/SPAN&gt;
  &lt;SPAN class="hljs-attr"&gt;body&lt;/SPAN&gt; = {
    &lt;SPAN class="hljs-attr"&gt;properties&lt;/SPAN&gt; = {
      &lt;SPAN class="hljs-attr"&gt;addressSpace&lt;/SPAN&gt; = {
        &lt;SPAN class="hljs-attr"&gt;addressPrefixes&lt;/SPAN&gt; = [
          &lt;SPAN class="hljs-string"&gt;"10.0.0.0/160"&lt;/SPAN&gt;, &lt;SPAN class="hljs-comment"&gt;# preflight will throw an error here&lt;/SPAN&gt;
        ]
      }
    }
  }
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H1&gt;Resource Replacement Triggers&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Customize specific methods of replacing your resource.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;replace_triggers_external_values&lt;/STRONG&gt;: Replaces if specified external values change.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;replace_triggers_refs&lt;/STRONG&gt;: Triggers a resource replacement based on changes in specified paths.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Resource Discovery&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Discover resources under a parent ID such as a subscription, virtual network, or resource group using the new `azapi_resource_list` data source. You can also filter using query parameters as shown below:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class="lang-hcl"&gt;data &lt;SPAN class="hljs-string"&gt;"azapi_client_config"&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;"current"&lt;/SPAN&gt; {}

data &lt;SPAN class="hljs-string"&gt;"azapi_resource_list"&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;"listPolicyDefinitionsBySubscription"&lt;/SPAN&gt; {
  &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;      = &lt;SPAN class="hljs-string"&gt;"Microsoft.Authorization/policyDefinitions@2021-06-01"&lt;/SPAN&gt;
  &lt;SPAN class="hljs-attr"&gt;parent_id&lt;/SPAN&gt; = &lt;SPAN class="hljs-string"&gt;"/subscriptions/&lt;SPAN class="hljs-subst"&gt;${data.azapi_client_config.current.subscription_id}&lt;/SPAN&gt;"&lt;/SPAN&gt;
  &lt;SPAN class="hljs-attr"&gt;query_parameters&lt;/SPAN&gt; = {
    &lt;SPAN class="hljs-string"&gt;"$filter"&lt;/SPAN&gt; = [&lt;SPAN class="hljs-string"&gt;"policyType eq 'BuiltIn'"&lt;/SPAN&gt;]
  }
  &lt;SPAN class="hljs-attr"&gt;response_export_values&lt;/SPAN&gt; = [&lt;SPAN class="hljs-string"&gt;"*"&lt;/SPAN&gt;]
}

output &lt;SPAN class="hljs-string"&gt;"o1"&lt;/SPAN&gt; {
  &lt;SPAN class="hljs-attr"&gt;value&lt;/SPAN&gt; = data.azapi_resource_list.listPolicyDefinitionsBySubscription.output
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H1&gt;AzAPI Provider Functions&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AzAPI now supports several Terraform provider functions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;build_resource_id&lt;/STRONG&gt;: Constructs an Azure resource ID.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;parse_resource_id&lt;/STRONG&gt;: Breaks down an Azure resource ID into its components.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;subscription_resource_id&lt;/STRONG&gt;: Constructs an Azure subscription scope resource ID.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;tenant_resource_id&lt;/STRONG&gt;: Builds an Azure tenant scope resource ID.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;management_group_resource_id&lt;/STRONG&gt;: Creates an Azure management group scope resource ID.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;resource_group_resource_id&lt;/STRONG&gt;: Forms an Azure resource group scope resource ID.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;extension_resource_id&lt;/STRONG&gt;: Generates an Azure extension resource ID with additional names.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To check out the references and examples, visit &lt;A href="https://registry.terraform.io/providers/Azure/azapi/latest/docs" target="_blank" rel="noopener"&gt;the Terraform registry.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;AzAPI VSCode Extension Improvements&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The release coincides with updates to the VSCode extension:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Code Samples:&lt;/STRONG&gt; Quickly insert code samples from our auto-gen pipeline:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Paste as AzAPI:&lt;/STRONG&gt; Convert JSON or ARM templates directly into HCL:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AzAPI 2.0 brings numerous enhancements, promising a better Terraform experience on Azure. With these features, we believe that you can use AzAPI as a standalone provider to meet any of your infrastructure needs. Stay tuned for a blogpost coming on suggestions for when to use each provider. Be sure to explore the new features; we're confident you’ll enjoy them!&lt;/P&gt;
&lt;P&gt;If you haven’t yet, check out the provider: &lt;A href="https://registry.terraform.io/providers/Azure/azapi/latest/docs" target="_blank" rel="noopener"&gt;https://registry.terraform.io/providers/Azure/azapi/latest/docs&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Oct 2024 17:48:14 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/announcing-azapi-2-0/ba-p/4275733</guid>
      <dc:creator>stevenjma</dc:creator>
      <dc:date>2024-10-21T17:48:14Z</dc:date>
    </item>
    <item>
      <title>Azure CLI docker container base Linux image is now Azure Linux</title>
      <link>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-docker-container-base-linux-image-is-now-azure-linux/ba-p/4236248</link>
      <description>&lt;P&gt;Starting from the version 2.64.0 of Azure CLI, the base Linux distribution of Azure CLI is now Azure Linux.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Impact of the change&lt;/U&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;az&amp;nbsp;commands are unaffected.&lt;/LI&gt;
&lt;LI&gt;shell commands specific to Alpine will not be functional (ex: apk).&lt;/LI&gt;
&lt;LI&gt;The following GitHub action will use the new image and could impact scripts using Alpine specific commands or components&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;U&gt;Addressing the change in GitHub actions&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;If you are using GitHub actions, remove any Alpine-specific commands from the &lt;CODE class="notranslate"&gt;inlineScript&lt;/CODE&gt;&amp;nbsp;in &lt;CODE class="notranslate"&gt;azure/cli&lt;/CODE&gt; action to achieve a smooth transition to this new image.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;U&gt;Known issues with workaround&lt;/U&gt;&lt;/H4&gt;
&lt;P&gt;We have identified the following issues that may impact your pipelines or scripts:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Package missing&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;ICU package: &lt;A href="https://github.com/Azure/azure-cli/issues/29828" target="_blank" rel="noopener"&gt;Issue #29828 · Azure/azure-cli (github.com)&lt;/A&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;Jq: &lt;A href="https://github.com/Azure/azure-cli/issues/29830" target="_blank" rel="noopener"&gt;Issue #29830 · Azure/azure-cli (github.com)&lt;/A&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 class="lia-indent-padding-left-60px"&gt;&lt;STRONG&gt;Solution:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;a. Pin&amp;nbsp;&lt;CODE class="notranslate"&gt;azure/cli&lt;/CODE&gt; action to 2.63.0&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;- name: Azure CLI script
  uses: azure/cli@v2
  with:
    azcliversion: 2.63.0
    inlineScript: |
       &amp;lt;Your az commands here&amp;gt;
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;b. Install package manually: &lt;CODE class="notranslate"&gt;tdnf install -y icu&lt;/CODE&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="notranslate"&gt;tdnf install –y jq&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;- name: Azure CLI script
  uses: azure/cli@v2
  with:
     azcliversion: 2.64.0
     inlineScript: |
        tdnf install -y icu
        tdnf install –y jq
        &amp;lt;Your az commands here&amp;gt;
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;CODE class="notranslate"&gt;tdnf&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;not working in GitHub Actions&lt;/SPAN&gt;: &lt;A href="https://github.com/Azure/azure-cli/issues/29835" target="_blank" rel="noopener"&gt;`tdnf` not working in GitHub Actions · Issue #29835 · Azure/azure-cli&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;A sample of affected use case:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;jobs:
   test:
      runs-on: ubuntu-latest
      container: mcr.microsoft.com/azure-cli
      steps:
      - name: test
        run: |
           tdnf install -y zip
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 class="lia-indent-padding-left-60px"&gt;Solution:&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;a. &lt;SPAN&gt;Use&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="notranslate"&gt;azure/cli&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;action&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;    - name: Azure CLI script
      uses: azure/cli@v2
      with:
        azcliversion: 2.64.0
        inlineScript: |
          tdnf install -y zip
          &amp;lt;Your Azure CLI commands here&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;b.&amp;nbsp;&lt;SPAN&gt;Set&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="notranslate"&gt;GNUPGHOME&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="notranslate"&gt;/root/.gnupg&lt;/CODE&gt;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;jobs:
  test:
     runs-on: ubuntu-latest
     container: 
       image: mcr.microsoft.com/azure-cli
       env:
          GNUPGHOME: /root/.gnupg
     steps:
     - name: test
       run: |
          tdnf install -y zip
          &amp;lt;Your Azure CLI commands here&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your cooperation!&lt;/P&gt;
&lt;P&gt;If you are not yet prepared to migrate to Azure Linux due to some specific issues, please open an issue on GitHub by clicking the below links, so we can assist you.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure/azure-cli/issues/new?assignees=&amp;amp;labels=bug&amp;amp;projects=&amp;amp;template=Bug_report.yml" target="_self"&gt;Open a Azure CLI issue&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/Azure/cli/issues/new?assignees=MoChilia&amp;amp;labels=need-to-triage&amp;amp;projects=&amp;amp;template=bug-report---feature-request.md&amp;amp;title=" target="_self"&gt;Open a Azure CLI action issue&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Sep 2024 02:44:38 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-tools-blog/azure-cli-docker-container-base-linux-image-is-now-azure-linux/ba-p/4236248</guid>
      <dc:creator>JeremyLi</dc:creator>
      <dc:date>2024-09-06T02:44:38Z</dc:date>
    </item>
  </channel>
</rss>

