Operace citlivosti nasazení Bicep

Před nasazením souboru Bicep můžete zobrazit náhled změn, ke kterým dojde. Azure Resource Manager poskytuje operaci citlivostní analýza, která vám umožní zjistit, jak se prostředky změní, pokud nasadíte soubor Bicep. Operace what-if neprovede žádné změny stávajících prostředků. Místo toho předpovídá změny, pokud je zadaný soubor Bicep nasazený.

Operaci citlivostní operace můžete použít s operacemi Azure PowerShell, Azure CLI nebo REST API. Co když se podporuje nasazení na úrovni skupiny prostředků, předplatného, skupiny pro správu a tenanta.

Školicí materiály

Pokud byste se raději dozvěděli o operaci citlivostní analýzy pomocí podrobných pokynů, podívejte se na ukázkové změny nasazení Azure pomocí citlivostní analýzy.

Požadovaná oprávnění

Pokud chcete nasadit soubor Bicep nebo šablonu ARM, musíte mít přístup k zápisu pro prostředky, které nasazujete, a přístup ke všem operacím s prostředky typu Microsoft.Resources/deployments. Pokud chcete například nasadit virtuální počítač, potřebujete Microsoft.Compute/virtualMachines/write a Microsoft.Resources/deployments/* oprávnění. Operace citlivostní operace má stejné požadavky na oprávnění.

Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.

Instalace modulu Azure PowerShell

Pokud chcete použít what-if v PowerShellu, musíte mít modul Az verze 4.2 nebo novější.

K instalaci modulu použijte:

Install-Module -Name Az -Force

Další informace o instalaci modulů najdete v tématu Instalace Azure PowerShell.

Instalace modulu Azure CLI

Pokud chcete použít citlivostní operace v Azure CLI, musíte mít Azure CLI 2.14.0 nebo novější. V případě potřeby si nainstalujte nejnovější verzi Azure CLI.

Zobrazit výsledky

Když použijete citlivostní analýzy v PowerShellu nebo Azure CLI, výstup obsahuje barevně kódované výsledky, které vám pomůžou zobrazit různé typy změn.

Operace citlivostní operace nasazení Bicep fullresourcepayload a typy změn

Textový výstup je:

Resource and property changes are indicated with these symbols:
  - Delete
  + Create
  ~ Modify

The deployment will update the following scope:

Scope: /subscriptions/./resourceGroups/ExampleGroup

  ~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
    - tags.Owner: "Team A"
    ~ properties.addressSpace.addressPrefixes: [
      - 0: "10.0.0.0/16"
      + 0: "10.0.0.0/15"
      ]
    ~ properties.subnets: [
      - 0:

          name:                     "subnet001"
          properties.addressPrefix: "10.0.0.0/24"

      ]

Resource changes: 1 to modify.

Poznámka

Operace citlivostní operace nemůže vyřešit referenční funkci. Pokaždé, když nastavíte vlastnost na výraz šablony, který obsahuje referenční funkci, se změní citlivostní sestava vlastnosti. K tomuto chování dochází, protože citlivostní analýza porovnává aktuální hodnotu vlastnosti (například true nebo false pro logickou hodnotu) s nevyřešeným výrazem šablony. Tyto hodnoty se samozřejmě nebudou shodovat. Když nasadíte soubor Bicep, vlastnost se změní pouze v případě, že se výraz šablony přeloží na jinou hodnotu.

Příkazy citlivostní citlivosti

Azure PowerShell

Pokud chcete zobrazit náhled změn před nasazením souboru Bicep, použijte New-AzResourceGroupDeployment nebo New-AzSubscriptionDeployment. -Whatif Přidejte parametr switch do příkazu nasazení.

  • New-AzResourceGroupDeployment -Whatif nasazení skupin prostředků
  • New-AzSubscriptionDeployment -Whatif nasazení na úrovni předplatného a New-AzDeployment -Whatif pro nasazení na úrovni předplatného

Pomocí parametru -Confirm switch můžete zobrazit náhled změn a zobrazit výzvu k pokračování v nasazení.

  • New-AzResourceGroupDeployment -Confirm nasazení skupin prostředků
  • New-AzSubscriptionDeployment -Confirm nasazení na úrovni předplatného a New-AzDeployment -Confirm pro nasazení na úrovni předplatného

Předchozí příkazy vrátí textový souhrn, který můžete zkontrolovat ručně. Pokud chcete získat objekt, který můžete programově zkontrolovat změny, použijte Get-AzResourceGroupDeploymentWhatIfResult nebo Get-AzSubscriptionDeploymentWhatIfResult.

  • $results = Get-AzResourceGroupDeploymentWhatIfResult nasazení skupin prostředků
  • $results = Get-AzSubscriptionDeploymentWhatIfResult nebo $results = Get-AzDeploymentWhatIfResult pro nasazení na úrovni předplatného

Azure CLI

Pokud chcete zobrazit náhled změn před nasazením souboru Bicep, použijte:

Pomocí přepínače (nebo jeho krátkého formuláře-c) můžete --confirm-with-what-if zobrazit náhled změn a zobrazit výzvu k pokračování v nasazení. Přidejte tento přepínač do:

Můžete například použít az deployment group create --confirm-with-what-if nasazení skupiny prostředků nebo -c pro nasazení skupin prostředků.

Předchozí příkazy vrátí textový souhrn, který můžete zkontrolovat ručně. Pokud chcete získat objekt JSON, který můžete programově zkontrolovat změny, použijte --no-pretty-print přepínač. Použijte az deployment group what-if --no-pretty-print například nasazení skupin prostředků.

Pokud chcete vrátit výsledky bez barev, otevřete konfigurační soubor Azure CLI . Nastavte no_color na ano.

Azure REST API

Pro rozhraní REST API použijte:

Typy změn

Operace citlivostní analýza obsahuje šest různých typů změn:

  • Vytvoření: Prostředek aktuálně neexistuje, ale je definovaný v souboru Bicep. Prostředek se vytvoří.
  • Odstranit: Tento typ změny platí pouze při použití kompletního režimu pro nasazení šablony JSON. Prostředek existuje, ale není definován v souboru Bicep. V úplném režimu se prostředek odstraní. V tomto typu změny jsou zahrnuty pouze prostředky, které podporují odstranění režimu dokončení .
  • Ignorovat: Prostředek existuje, ale není definován v souboru Bicep. Prostředek se nebude nasazovat ani upravovat.
  • NoChange: Prostředek existuje a je definován v souboru Bicep. Prostředek se znovu nasadí, ale vlastnosti prostředku se nezmění. Tento typ změny se vrátí, když je resultFormat nastaven na FullResourcePayloads, což je výchozí hodnota.
  • Upravit: Prostředek existuje a je definován v souboru Bicep. Prostředek se znovu nasadí a vlastnosti prostředku se změní. Tento typ změny se vrátí, když je resultFormat nastaven na FullResourcePayloads, což je výchozí hodnota.
  • Nasazení: Prostředek existuje a je definovaný v souboru Bicep. Prostředek se znovu nasadí. Vlastnosti prostředku se mohou nebo nemusí změnit. Operace vrátí tento typ změny, pokud nemá dostatek informací k určení, jestli se některé vlastnosti změní. Tuto podmínku uvidíte pouze v případě, že je vlastnost ResultFormat nastavena na ResourceIdOnlyhodnotu .

Formát výsledku

Řídíte úroveň podrobností, která se vrátí o předpokládaných změnách. Máte dvě možnosti:

  • FullResourcePayloads – vrátí seznam prostředků, které se změní, a podrobnosti o vlastnostech, které se změní.
  • ResourceIdOnly – vrátí seznam prostředků, které se změní.

Výchozí hodnota je FullResourcePayloads.

Pro příkazy nasazení PowerShellu -WhatIfResultFormat použijte parametr. V programových příkazech objektu ResultFormat použijte parametr.

Pro Azure CLI použijte --result-format parametr.

Následující výsledky ukazují dva různé formáty výstupu:

  • Úplné datové části prostředků

    Resource and property changes are indicated with these symbols:
      - Delete
      + Create
      ~ Modify
    
    The deployment will update the following scope:
    
    Scope: /subscriptions/./resourceGroups/ExampleGroup
    
      ~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
        - tags.Owner: "Team A"
        ~ properties.addressSpace.addressPrefixes: [
          - 0: "10.0.0.0/16"
          + 0: "10.0.0.0/15"
          ]
        ~ properties.subnets: [
          - 0:
    
            name:                     "subnet001"
            properties.addressPrefix: "10.0.0.0/24"
    
          ]
    
    Resource changes: 1 to modify.
    
  • Pouze ID prostředku

    Resource and property changes are indicated with this symbol:
      ! Deploy
    
    The deployment will update the following scope:
    
    Scope: /subscriptions/./resourceGroups/ExampleGroup
    
      ! Microsoft.Network/virtualNetworks/vnet-001
    
    Resource changes: 1 to deploy.
    

Spuštění operace citlivosti

Nastavení prostředí

Pokud chcete zjistit, jak to funguje, pojďme spustit některé testy. Nejprve nasaďte soubor Bicep, který vytvoří virtuální síť. Tuto virtuální síť použijete k otestování způsobu hlášení změn pomocí citlivosti. Stáhněte si kopii souboru Bicep.

resource vnet 'Microsoft.Network/virtualNetworks@2021-02-01' = {
  name: 'vnet-001'
  location: resourceGroup().location
  tags: {
    CostCenter: '12345'
    Owner: 'Team A'
  }
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    enableVmProtection: false
    enableDdosProtection: false
    subnets: [
      {
        name: 'subnet001'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'subnet002'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Pokud chcete nasadit soubor Bicep, použijte:

New-AzResourceGroup `
  -Name ExampleGroup `
  -Location centralus
New-AzResourceGroupDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateFile "what-if-before.bicep"

Úprava testu

Po dokončení nasazení jste připraveni otestovat operaci citlivostní analýzy. Tentokrát nasadíte soubor Bicep, který změní virtuální síť. Chybí jedna z původních značek, podsíť byla odebrána a předpona adresy se změnila. Stáhněte si kopii souboru Bicep.

resource vnet 'Microsoft.Network/virtualNetworks@2021-02-01' = {
  name: 'vnet-001'
  location: resourceGroup().location
  tags: {
    CostCenter: '12345'
  }
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/15'
      ]
    }
    enableVmProtection: false
    enableDdosProtection: false
    subnets: [
      {
        name: 'subnet002'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Pokud chcete zobrazit změny, použijte:

New-AzResourceGroupDeployment `
  -Whatif `
  -ResourceGroupName ExampleGroup `
  -TemplateFile "what-if-after.bicep"

Výstup citlivostní analýzy bude vypadat asi takto:

Výstup operace citlivosti nasazení Bicep

Textový výstup je:

Resource and property changes are indicated with these symbols:
  - Delete
  + Create
  ~ Modify

The deployment will update the following scope:

Scope: /subscriptions/./resourceGroups/ExampleGroup

  ~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
    - tags.Owner:                    "Team A"
    + properties.enableVmProtection: false
    ~ properties.addressSpace.addressPrefixes: [
      - 0: "10.0.0.0/16"
      + 0: "10.0.0.0/15"
      ]
    ~ properties.subnets: [
      - 0:

          name:                     "subnet001"
          properties.addressPrefix: "10.0.0.0/24"

      ]

Resource changes: 1 to modify.

Všimněte si v horní části výstupu, že barvy jsou definované tak, aby označily typ změn.

V dolní části výstupu se zobrazí odstranění značky Vlastník. Předpona adresy se změnila z verze 10.0.0.0/16 na 10.0.0.0/15. Podsíť s názvem subnet001 byla odstraněna. Nezapomeňte, že tyto změny nebyly nasazeny. Zobrazí se náhled změn, ke kterým dojde, když nasadíte soubor Bicep.

Některé vlastnosti uvedené jako odstraněné se ve skutečnosti nezmění. Vlastnosti můžou být nesprávně hlášeny jako odstraněné, pokud nejsou v souboru Bicep, ale automaticky se nastaví během nasazení jako výchozí hodnoty. Tento výsledek se považuje za šum v odpovědi citlivostní analýza. Konečný nasazený prostředek bude mít nastavené hodnoty pro vlastnosti. Vzhledem k tomu, že operace citlivostní analýzy zralá, budou tyto vlastnosti vyfiltrovány z výsledku.

Vyhodnocení výsledků citlivosti prostřednictvím kódu programu

Teď programově vyhodnotíme výsledky citlivosti nastavením příkazu na proměnnou.

$results = Get-AzResourceGroupDeploymentWhatIfResult `
  -ResourceGroupName ExampleGroup `
  --template-file "what-if-after.bicep"

Zobrazí se souhrn každé změny.

foreach ($change in $results.Changes)
{
  $change.Delta
}

Potvrzení odstranění

Pokud chcete zobrazit náhled změn před nasazením souboru Bicep, použijte parametr potvrdit přepínač s příkazem nasazení. Pokud jsou změny podle očekávání, odpovězte, že chcete, aby se nasazení dokončilo.

New-AzResourceGroupDeployment `
  -ResourceGroupName ExampleGroup `
  -Confirm `
  -TemplateFile "what-if-after.bicep"

Dokončení režimu nasazení výstupu operace bicep

Textový výstup je:

Resource and property changes are indicated with these symbols:
  - Delete
  + Create
  ~ Modify

The deployment will update the following scope:

Scope: /subscriptions/./resourceGroups/ExampleGroup

  ~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
    - tags.Owner:                    "Team A"
    + properties.enableVmProtection: false
    ~ properties.addressSpace.addressPrefixes: [
      - 0: "10.0.0.0/16"
      + 0: "10.0.0.0/15"
      ]
    ~ properties.subnets: [
      - 0:

          name:                     "subnet001"
          properties.addressPrefix: "10.0.0.0/24"

      ]

Resource changes: 1 to modify.

Are you sure you want to execute the deployment?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

Zobrazí se očekávané změny a můžete potvrdit, že má nasazení běžet.

Vyčištění prostředků

Pokud už ukázkové prostředky nepotřebujete, odstraňte skupinu prostředků pomocí Azure CLI nebo Azure PowerShell.

az group delete --name ExampleGroup

Sady SDK

Operaci citlivostní analýzy můžete použít prostřednictvím sad SDK Azure.

Další kroky