Předpovězení výsledku nasazení pomocí operace what-if
Každý, kdo nasazuje nebo upravuje prostředky v prostředí, má na mysli tyto otázky:
- Nepoškodím něco?
- Něco odstraním?
- Jak toto nasazení ovlivní stávající prostředky?
- Můžu ověřit, že to, co očekávám, je ve skutečnosti to, co se stane v nasazení, než najdu tlačítko nasazení?
Nasazení a naděje na to nejlepší není dobrý přístup. Lepším přístupem je použití operace what-if (citlivostní analýza). Tato operace vám pomůže předvídat důsledky nového nasazení, pokud se o to pokusíte.
Azure Resource Manager poskytuje operaci what-if (citlivostní analýza), která při nasazení šablony zvýrazní změny. Operace what-if neprovede žádné změny stávajících prostředků. Místo toho předpoví změny, k nimž by došlo, kdyby se zadaná šablona nasadila na úrovni skupiny prostředků a předplatného.
Poznámka:
Operace citlivostní citlivostní operace někdy ukazuje, že se prostředek změní, když skutečně nedojde k žádné změně. Pracujeme na omezení těchto problémů, ale potřebujeme vaši pomoc. Oznamte prosím tyto problémy.
Pomocí operace citlivostní citlivostní operace porovnáte aktuální stavový model s modelem požadovaného stavu. Operace citlivostní analýzy potvrdí, jestli změny provedené vaší šablonou odpovídají vašim očekáváním , aniž by se tyto změny použily na skutečné prostředky nebo na stav těchto prostředků.
Řízení formátu výsledků citlivostní citlivosti
Rutina New-AzResourceGroupDeployment
Azure PowerShellu vytvoří nové nasazení do skupiny prostředků. Když do tohoto příkazu přidáte -Whatif
parametr, příkaz se přepne z provádění nasazení na pouhé hlášení náhledu toho , co se stane, když ho provedete.
Příkaz az deployment group what-if
vám poskytne náhled toho, co se stane, když provedete nasazení.
Velikost textového výstupu operace citlivostní analýzy můžete řídit pomocí jednoho z těchto formátů výsledků:
FullResourcePayloads
. Zahrnutím tohoto parametru získáte výstup verbose obsahující seznam prostředků, které se změní. Ve výstupu se také zobrazují podrobnosti o všech vlastnostech, které budou změněny podle šablony.ResourceIdOnly
. Tento režim vrátí jen seznam prostředků, které se změní, ale ne všechny podrobnosti.
Předpokládejme například, že měníte typ úložiště v šabloně, která nasazuje jeden účet úložiště do existujícího prostředí.
Můžete spustit následující kód PowerShellu a požádat Resource Manager, aby vám dal úplné datové části prostředků:
New-AzResourceGroupDeployment `
-ResourceGroupName ToyStorage `
-TemplateFile $templateFileName `
-WhatIf `
-WhatIfResultFormat FullResourcePayloads
az deployment group what-if \
--resource-group ToyStorage \
--template-file $templateFile \
--result-format FullResourcePayloads
Předchozí příkaz vytvoří následující výsledky:
Resource and property changes are indicated with this symbol:
~ Modify
The deployment will update the following scope:
Scope: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ToyStorage
~ Microsoft.Storage/storageAccounts/bz64gjjpidbuvi [2019-06-01]
~ sku.name: "Standard_LRS" => "Standard_GRS"
Resource changes: 1 to modify.
Pak můžete příkaz znovu spustit, ale stačí požádat o ID prostředků:
New-AzResourceGroupDeployment `
-ResourceGroupName ToyStorage `
-TemplateFile $templateFileName `
-WhatIf `
-WhatIfResultFormat ResourceIdOnly
az deployment group what-if \
--resource-group ToyStorage \
--template-file $templateFile \
--result-format ResourceIdOnly
Předchozí příkaz vytvoří následující výsledky:
Resource and property changes are indicated with this symbol:
! Deploy
The deployment will update the following scope:
Scope: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ToyStorage
! Microsoft.Storage/storageAccounts/bz64gjjpidbuvi
Resource changes: 1 to deploy.
Typy změn, které zjistí citlivostní znaménka
Operace what-if rozeznává šest typů změn:
Typ | Vysvětlení | Účinnost |
---|---|---|
Vytvoření | Prostředek aktuálně neexistuje, ale je definovaný v šabloně. | Prostředek se vytvoří. |
Odstranění | Tento typ změny se aplikuje jen při použití úplného režimu pro nasazení. Prostředek existuje, ale není v šabloně definovaný. | Pokud nasadíte pomocí přírůstkového režimu, prostředek se neodstraní. Pokud nasadíte pomocí úplného režimu, prostředek se odstraní. Tento typ změny se vrátí pouze pro prostředky, které podporují odstranění v režimu dokončení. |
Ignorovat | Prostředek existuje, ale není v šabloně definovaný. | Pokud používáte přírůstkový režim, což je výchozí režim nasazení, prostředek se nenasadí ani nezmění. Pokud nasadíte pomocí úplného režimu, prostředek se odstraní. |
NoChange | Prostředek existuje a je v šabloně definovaný. | Prostředek se znovu nasadí, ale vlastnosti prostředku se nezmění. Tento typ změny se vrátí, když je formát výsledku nastaven na FullResourcePayloads , což je výchozí formát výsledku. |
Změnit | Prostředek existuje a je v šabloně definovaný. | Prostředek se znovu nasadí a vlastnosti prostředku se změní. Tento typ změny se vrátí, když je formát výsledku nastaven na FullResourcePayloads , což je výchozí formát výsledku. |
Nasadit | Prostředek existuje a je v šabloně definovaný. | 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 nastaven ResourceIdOnly formát výsledku . |
Pokud nepotřebujete znát všechny typy změn, můžete pomocí -WhatIfExcludeChangeType
argumentu vynechat typy, které vás zajímají.
Pokud nepotřebujete znát všechny typy změn, můžete pomocí --what-if-exclude-change-types
argumentu vynechat typy, které vás zajímají.
Použití výsledků citlivostní citlivosti ve skriptu
Můžete chtít použít výstup z operace citlivostní operace v rámci skriptu nebo jako součást procesu automatizovaného nasazení.
Výsledky můžete získat pomocí rutiny Get-AzResourceGroupDeploymentWhatIfResult
. Skript pak může analyzovat výsledky a provádět jakoukoli vlastní logiku, kterou budete potřebovat.
Nezpracované výsledky JSON získáte připojením argumentu --no-pretty-print
k příkazu rozhraní příkazového řádku. Skript pak může analyzovat výsledky a provádět jakoukoli vlastní logiku, kterou budete potřebovat.
Režimy nasazení a odstranění prostředků
Při nasazování šablony existují časy, kdy chcete potvrdit odstranění prostředků. Za tímto účelem operace citlivostní operace představuje režim nasazení, který používáte. Pokud použijete úplný režim nasazení, Resource Manager hlásí prostředky, které odstraní, protože nejsou definované ve vašem nasazení.
Podívejme se na příklad šablony, která aktualizuje existující prostředek a nasadí se v úplném režimu:
Tady je vysvětlení toho, co se děje v tomto příkladu:
- Šablona aktualizuje účet úložiště s názvem
storage-1
, který je již nasazen. Skladová položka se mění z LRS na GRS aowner
značka mění hodnotu na Team A. Výstup citlivostní citlivosti ukazuje typ změny pro tento prostředek. - Šablona vytváří nový účet služby Azure Cosmos DB s názvem
cosmos-db-1
, který ještě ve skupině prostředků neexistuje. Výstup citlivostní citlivosti ukazuje typ vytvoření změny pro tento prostředek. - Šablona neobsahuje logický server Azure SQL, který už ve skupině prostředků existuje. Vzhledem k tomu, že nasazení používá úplný režim, zobrazuje výstup citlivostní změny pro tento prostředek typ odstranění. Pokud nasazení používalo přírůstkový režim místo úplného režimu, typ změny by byl místo toho ignorován .
Potvrzení nasazení
Pokud chcete zobrazit náhled změn před nasazením šablony, použijte -Confirm
parametr s příkazem nasazení. Pokud jsou změny podle očekávání, potvrďte, že chcete nasazení dokončit.
Tip
Příkazy nasazení je vhodné spouštět pomocí -Confirm
přepínače, zejména pokud nasazujete v úplném režimu. Pokud použijete -Confirm
přepínač, můžete operaci zastavit, pokud se vám navrhované změny nelíbí.
Pokud chcete zobrazit náhled změn před nasazením šablony, použijte --confirm-with-what-if
argument s příkazem nasazení. Pokud jsou změny podle očekávání, potvrďte, že chcete nasazení dokončit.
Tip
S argumentem --confirm-with-what-if
je vhodné spouštět příkazy nasazení, zejména pokud nasazujete v úplném režimu. Pokud použijete --confirm-with-what-if
přepínač, můžete operaci zastavit, pokud se vám navrhované změny nelíbí.