Operace citlivostní operace 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í, když 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 PowerShellu, Azure CLI nebo rozhraní REST API. What-if is supported for resource group, subscription, management group, and tenant level deployments.
Během operací citlivostní operace se hodnocení a rozšíření templateLink
nepodporuje. V důsledku toho se všechny prostředky nasazené pomocí odkazů šablon v rámci vnořených nasazení, včetně odkazů na specifikace šablon, nezobrazí ve výsledcích operace Citlivostní analýza.
Školicí materiály
Pokud byste se raději dozvěděli o operaci citlivostní operace pomocí podrobných pokynů, projděte si informace o změnách nasazení Azure ve verzi Preview pomocí citlivostní operace.
Požadována 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.
Limity citlivostní citlivosti
Citlivostní analýza rozbalí vnořené šablony, dokud nedosáhnete těchto limitů:
- 500 vnořených šablon.
- 800 skupin prostředků v nasazení mezi skupinami prostředků.
- Rozšíření vnořených šablon trvalo 5 minut.
Po dosažení jednoho z limitů je typ změny zbývajících prostředků nastavený na Ignorovat.
Instalace modulu Azure PowerShellu
Pokud chcete v PowerShellu použít citlivostní dotaz, musíte mít verzi 4.2 nebo novější modulu Az.
K instalaci modulu použijte:
Install-Module -Name Az -Force
Další informace o instalaci modulů najdete v tématu Instalace Azure PowerShellu.
Instalace modulu Azure CLI
Pokud chcete použít citlivostní dotaz 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ž v PowerShellu nebo Azure CLI použijete citlivostní analýzy, výstup obsahuje barevně kódované výsledky, které vám pomůžou zobrazit různé 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 Rutinu New-AzResourceGroupDeployment nebo New-AzSubscriptionDeployment. -Whatif
Přidejte parametr switch do příkazu nasazení.
New-AzResourceGroupDeployment -Whatif
pro nasazení skupin prostředkůNew-AzSubscriptionDeployment -Whatif
aNew-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
pro nasazení skupin prostředkůNew-AzSubscriptionDeployment -Confirm
aNew-AzDeployment -Confirm
pro nasazení na úrovni předplatného
Předchozí příkazy vrátí textový souhrn, který můžete ručně zkontrolovat. Chcete-li získat objekt, který můžete programově zkontrolovat změny, použijte Get-AzResourceGroupDeploymentWhatIfResult nebo Get-AzSubscriptionDeploymentWhatIfResult.
$results = Get-AzResourceGroupDeploymentWhatIfResult
pro 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:
- az deployment group what-if for resource group deployments deployments
- az deployment sub what-if for subscription level deployments
- az deployment mg what-if for management group deployments
- az deployment tenant what-if for tenant deployment deployments
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:
- az deployment group create
- az deployment sub create.
- az deployment mg create
- az deployment tenant create
Můžete například použít az deployment group create --confirm-with-what-if
nebo -c
pro nasazení skupin prostředků.
Předchozí příkazy vrátí textový souhrn, který můžete ručně zkontrolovat. Pokud chcete získat objekt JSON, který můžete programově zkontrolovat změny, použijte --no-pretty-print
přepínač. Můžete například použít az deployment group what-if --no-pretty-print
pro 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:
- Nasazení – Co když pro nasazení skupin prostředků
- Nasazení – Co když v oboru předplatného pro nasazení předplatného
- Nasazení – Co když v oboru skupiny pro správu pro nasazení skupin pro správu
- Nasazení – Co když v oboru tenanta pro nasazení tenanta
Typy změn
Operace citlivostní analýza obsahuje sedm různých typů změn:
- Vytvoření: Prostředek aktuálně neexistuje, ale je definován v souboru Bicep. Prostředek se vytvoří.
- Odstranit: Tento typ změny platí jenom v případě, že pro nasazení šablony JSON použijete úplný režim . 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 zahrnuté jenom prostředky, které podporují odstranění v úplném režimu.
- Ignorovat: Prostředek existuje, ale není definován v souboru Bicep. Prostředek se nebude nasazovat ani upravovat. Když dosáhnete limitů pro rozšíření vnořených šablon, setkáte se s tímto typem změn. Podívejte se na limity citlivostní citlivosti.
- 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 nastavena na
FullResourcePayloads
, což je výchozí hodnota. - NoEffect: Vlastnost je pouze připravena a bude ignorována službou. Například vlastnost je vždy nastavena tak,
sku.tier
aby odpovídalasku.name
Microsoft.ServiceBus
v oboru názvů. - Úprava: 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 nastavena na
FullResourcePayloads
, což je výchozí hodnota. - Nasazení: Prostředek existuje a je definován 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í. Tato podmínka se zobrazí pouze v případě, že je vlastnost ResultFormat nastavena na
ResourceIdOnly
hodnotu .
Formát výsledku
Řídíte úroveň podrobností, která se vrátí o předpovídané změny. K dispozici jsou 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 citlivostní operace
Nastavení prostředí
Abychom viděli, jak citlivost funguje, spustíme některé testy. Nejprve nasaďte soubor Bicep, který vytvoří virtuální síť. Pomocí této virtuální sítě otestujete, jak se změny hlásí citlivostní analýza. Stáhněte si kopii souboru Bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2023-11-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'
}
}
]
}
}
K nasazení souboru Bicep použijte:
New-AzResourceGroup `
-Name ExampleGroup `
-Location centralus
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile "what-if-before.bicep"
Testovací úprava
Po dokončení nasazení jste připraveni otestovat operaci citlivostní analýza. 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@2023-11-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:
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 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, které jsou uvedeny jako odstraněné, se ve skutečnosti nezmění. Vlastnosti mohou 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 v odpovědi citlivostní analýza považuje za šum. Poslední nasazený prostředek bude mít nastavené hodnoty pro vlastnosti. Jak se operace citlivostní analýzy zralá, tyto vlastnosti se vyfiltrují z výsledku.
Vyhodnocení výsledků citlivostní citlivosti prostřednictvím kódu programu
Teď programově vyhodnotíme výsledky citlivostní 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
}
Potvrdit odstranění
Pokud chcete zobrazit náhled změn před nasazením souboru Bicep, použijte s příkazem deployment parametr confirm switch. Pokud jsou změny podle očekávání, odpovězte, že chcete nasazení dokončit.
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-Confirm `
-TemplateFile "what-if-after.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á být nasazení spuštěné.
Vyčištění prostředků
Pokud už ukázkové prostředky nepotřebujete, odstraňte skupinu prostředků pomocí Azure CLI nebo Azure PowerShellu.
az group delete --name ExampleGroup
Sady SDK
Operaci citlivostní operace můžete použít prostřednictvím sad SDK Azure.
V Případě Pythonu použijte citlivostní citlivost.
Pro Javu použijte DeploymentWhatIf – třída.
Pro .NET použijte DeploymentWhatIf – třída.
Další kroky
- Pokud chcete použít operaci citlivostní analýza v kanálu, přečtěte si téma Testování šablon ARM s citlivostní analýzami v kanálu.
- Pokud si všimnete nesprávných výsledků operace citlivostní analýzy, nahlaste problémy na adrese https://aka.ms/whatifissues.
- Modul Learn, který ukazuje použití citlivostní analýza, najdete v tématu Preview změny a ověření prostředků Azure pomocí citlivostní analýza a testovací sady nástrojů pro šablony ARM.