Předpovězení výsledku nasazení pomocí operace what-if

Dokončeno

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 ResourceIdOnlyformá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:

Diagram showing change types for three resources, some of which already exist.

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 a owner 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í.