Bicep üzembe helyezési lehetőség művelete
A Bicep-fájlok üzembe helyezése előtt megtekintheti a módosítások előnézetét. Az Azure Resource Manager biztosítja a lehetőségelemzési műveletet, amely lehetővé teszi az erőforrások változását a Bicep-fájl üzembe helyezésekor. A what-if művelet nem módosít meglévő erőforrásokat. Ehelyett előrejelzi a változásokat, ha a megadott Bicep-fájl üzembe van helyezve.
A lehetőségelemzési műveletet Azure PowerShell, Azure CLI- vagy REST API-műveletekkel is használhatja. A lehetőségelemzés az erőforráscsoport, az előfizetés, a felügyeleti csoport és a bérlői szintű üzemelő példányok esetében támogatott.
A What-If műveletek során a kiértékelése templateLink
és bővítése nem támogatott. Ennek eredményeképpen a beágyazott üzemelő példányokon belül sablonhivatkozásokkal üzembe helyezett erőforrások , beleértve a sablonspecifikáció-hivatkozásokat is, nem jelennek meg a What-If művelet eredményei között.
Képzési források
Ha inkább a lehetőségelemzési művelettel szeretne megismerkedni a részletes útmutatóval, tekintse meg az Azure-beli üzembehelyezési módosítások előnézete a lehetőségelemzés használatával című témakört.
Szükséges engedélyek
Bicep-fájl vagy ARM-sablon üzembe helyezéséhez írási joggal kell rendelkeznie az üzembe helyezett erőforrásokhoz, és hozzá kell férnie a Microsoft.Resources/deployments erőforrástípus összes műveletéhez. Egy virtuális gép üzembe helyezéséhez például szükség van és Microsoft.Resources/deployments/*
engedélyekreMicrosoft.Compute/virtualMachines/write
. A lehetőségelemzési műveletre ugyanazok az engedélykövetelmények vonatkoznak.
A szerepkörök és engedélyek listáját megtalálja a Beépített Azure-szerepkörök című cikkben.
Lehetőségkorlátok
A lehetőség kibontja a beágyazott sablonokat, amíg el nem éri ezeket a korlátokat:
- 500 beágyazott sablon.
- 800 erőforráscsoport egy erőforráscsoportok közötti üzembe helyezésben.
- A beágyazott sablonok kibontásához 5 perc szükséges.
Ha eléri az egyik korlátot, a fennmaradó erőforrások változástípusaFigyelmen kívül hagyja értékre van állítva.
Azure PowerShell modul telepítése
A lehetőségelemzés PowerShellben való használatához az Az modul 4.2-es vagy újabb verziójával kell rendelkeznie.
A modul telepítéséhez használja a következőt:
Install-Module -Name Az -Force
További információ a modulok telepítéséről: Azure PowerShell telepítése.
Az Azure CLI-modul telepítése
A what-if Azure CLI-ben való használatához az Azure CLI 2.14.0-s vagy újabb verziójával kell rendelkeznie. Ha szükséges, telepítse az Azure CLI legújabb verzióját.
Eredmények megtekintése
Ha a PowerShellben vagy az Azure CLI-ben használja a lehetőségelemzést, a kimenet színkódolt eredményeket tartalmaz, amelyek segítenek a különböző típusú módosítások megtekintésében.
A szöveges kimenet a következő:
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.
Megjegyzés
A lehetőségelemzési művelet nem tudja feloldani a referenciafüggvényt. Minden alkalommal, amikor egy tulajdonságot egy referenciafüggvényt tartalmazó sablonkifejezésre állít be, a lehetőségelemzési jelentés a tulajdonságot módosítja. Ez a viselkedés azért fordul elő, mert a what-if függvény összehasonlítja a tulajdonság aktuális értékét (például true
vagy false
logikai érték esetén) a megoldatlan sablonkifejezéssel. Nyilvánvaló, hogy ezek az értékek nem egyeznek. A Bicep-fájl üzembe helyezésekor a tulajdonság csak akkor változik meg, ha a sablonkifejezés egy másik értékre oldódik fel.
Lehetőségelemzési parancsok
Azure PowerShell
A Módosítások előnézetének megtekintéséhez a Bicep-fájlok üzembe helyezése előtt használja a New-AzResourceGroupDeployment vagy a New-AzSubscriptionDeployment parancsot. Adja hozzá a -Whatif
kapcsolóparamétert az üzembe helyezési parancshoz.
New-AzResourceGroupDeployment -Whatif
erőforráscsoport üzemelő példányaihozNew-AzSubscriptionDeployment -Whatif
ésNew-AzDeployment -Whatif
előfizetési szintű üzemelő példányok esetén
A -Confirm
switch paraméterrel megtekintheti a módosításokat, és a rendszer kérheti, hogy folytassa az üzembe helyezést.
New-AzResourceGroupDeployment -Confirm
erőforráscsoport üzemelő példányaihozNew-AzSubscriptionDeployment -Confirm
ésNew-AzDeployment -Confirm
előfizetési szintű üzemelő példányok esetén
Az előző parancsok szöveges összegzést adnak vissza, amelyet manuálisan vizsgálhat meg. Ha olyan objektumot szeretne lekérni, amelyet programozott módon megvizsgálhat a módosításokhoz, használja a Get-AzResourceGroupDeploymentWhatIfResult vagy a Get-AzSubscriptionDeploymentWhatIfResult parancsot.
$results = Get-AzResourceGroupDeploymentWhatIfResult
erőforráscsoport üzemelő példányaihoz$results = Get-AzSubscriptionDeploymentWhatIfResult
vagy$results = Get-AzDeploymentWhatIfResult
előfizetési szintű üzemelő példányok esetén
Azure CLI
Bicep-fájl üzembe helyezése előtt a módosítások előnézetének megtekintéséhez használja a következőt:
- az deployment group what-if for resource group deployments
- az deployment sub what-if az subscription level deployments
- az deployment mg what-if for management group deployments
- az deployment tenant what-if for tenant deployments
A --confirm-with-what-if
kapcsolóval (vagy annak rövid űrlapjával -c
) megtekintheti a módosításokat, és a rendszer kérni fogja, hogy folytassa az üzembe helyezést. Adja hozzá ezt a kapcsolót a következőhöz:
- az deployment group create
- az deployment sub create.
- az deployment mg create
- az deployment tenant create
Például használja az deployment group create --confirm-with-what-if
a vagy -c
az erőforráscsoport üzemelő példányait.
Az előző parancsok szöveges összegzést adnak vissza, amelyet manuálisan vizsgálhat meg. Ha olyan JSON-objektumot szeretne lekérni, amelyet programozott módon vizsgálhat meg, használja a kapcsolót --no-pretty-print
. Használja például az deployment group what-if --no-pretty-print
az erőforráscsoport üzemelő példányaihoz.
Ha színek nélkül szeretné visszaadni az eredményeket, nyissa meg az Azure CLI konfigurációs fájlját. Állítsa no_colorigen értékre.
Azure REST API
A REST API-hoz használja a következőt:
- Üzemelő példányok – Mi a teendő az erőforráscsoport üzemelő példányai esetében?
- Üzemelő példányok – What If At Subscription Scope for subscription deployments
- Üzemelő példányok – Mi a teendő a felügyeleti csoportnál a felügyeleti csoportok üzemelő példányainak hatóköre?
- Üzemelő példányok – Mi a teendő a bérlői környezetben a bérlői üzemelő példányok esetében?
Változástípusok
A lehetőségelemzési művelet hét különböző típusú módosítást sorol fel:
- Létrehozás: Az erőforrás jelenleg nem létezik, de a Bicep-fájlban van definiálva. Az erőforrás létre lesz hozva.
- Törlés: Ez a módosítástípus csak akkor érvényes, ha teljes módot használ a JSON-sablon üzembe helyezéséhez. Az erőforrás létezik, de nincs definiálva a Bicep-fájlban. Teljes mód esetén az erőforrás törölve lesz. Ebben a változástípusban csak a teljes mód törlését támogató erőforrások szerepelnek.
- Figyelmen kívül hagyás: Az erőforrás létezik, de nincs definiálva a Bicep-fájlban. Az erőforrás nem lesz üzembe helyezve vagy módosítva. Amikor eléri a beágyazott sablonok bővítésének korlátait, ez a változástípus jelenik meg. Lásd: Lehetőségkorlátok.
- NoChange: Az erőforrás létezik, és a Bicep-fájlban van definiálva. Az erőforrás újra üzembe lesz helyezve, de az erőforrás tulajdonságai nem változnak. Ez a változástípus akkor jelenik meg, ha a ResultFormat értéke
FullResourcePayloads
, amely az alapértelmezett érték. - NoEffect: A tulajdonság csak készen áll, és a szolgáltatás figyelmen kívül hagyja. A tulajdonság például mindig úgy van beállítva,
sku.tier
hogy megegyeziksku.name
aMicrosoft.ServiceBus
névtérben. - Módosítás: Az erőforrás létezik, és a Bicep-fájlban van definiálva. Az erőforrás újra üzembe lesz helyezve és az erőforrás tulajdonságai megváltoznak. Ez a változástípus akkor jelenik meg, ha a ResultFormat értéke
FullResourcePayloads
, amely az alapértelmezett érték. - Üzembe helyezés: Az erőforrás létezik, és a Bicep-fájlban van definiálva. Az erőforrás újra üzembe lesz helyezve. Az erőforrás tulajdonságai megváltozhatnak, de nem feltétlenül. A művelet akkor adja vissza ezt a változástípust, ha nem rendelkezik elég információval a tulajdonságok esetleges megváltozásának meghatározásához. Ez a feltétel csak akkor jelenik meg, ha a ResultFormat értéke
ResourceIdOnly
.
Az eredmény formátuma
Ön szabályozza az előrejelzett változásokról visszaadott részletességi szintet. Erre két lehetősége van:
- FullResourcePayloads – a módosító erőforrások listáját és a módosító tulajdonságok részleteit adja vissza
- ResourceIdOnly – a módosító erőforrások listáját adja vissza
Az alapértelmezett érték a FullResourcePayloads.
A PowerShell üzembehelyezési parancsaihoz használja a paramétert -WhatIfResultFormat
. A programozott objektumparancsokban használja a paramétert ResultFormat
.
Az Azure CLI-hez használja a paramétert --result-format
.
Az alábbi eredmények a két különböző kimeneti formátumot mutatják:
Teljes erőforrás-hasznos adatok
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.
Csak erőforrás-azonosító
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.
Lehetőségelemzési művelet futtatása
Környezet beállítása
Ha meg szeretné tudni, hogyan működik a lehetőség, futtassunk néhány tesztet. Először helyezzen üzembe egy Bicep-fájlt, amely létrehoz egy virtuális hálózatot. Ezzel a virtuális hálózattal tesztelheti, hogy a what-if hogyan jelenti a módosításokat. Töltse le a Bicep-fájl másolatát.
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'
}
}
]
}
}
A Bicep-fájl üzembe helyezéséhez használja a következőt:
New-AzResourceGroup `
-Name ExampleGroup `
-Location centralus
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile "what-if-before.bicep"
Tesztmódosítás
Az üzembe helyezés befejezése után készen áll a lehetőségelemzési művelet tesztelésére. Ezúttal egy Bicep-fájlt helyez üzembe, amely módosítja a virtuális hálózatot. Hiányzik az egyik eredeti címke, egy alhálózat el lett távolítva, és a címelőtag megváltozott. Töltse le a Bicep-fájl másolatát.
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'
}
}
]
}
}
A módosítások megtekintéséhez használja a következőt:
New-AzResourceGroupDeployment `
-Whatif `
-ResourceGroupName ExampleGroup `
-TemplateFile "what-if-after.bicep"
A what-if kimenete a következőhöz hasonló:
A szöveges kimenet a következő:
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.
Figyelje meg a kimenet tetején, hogy a színek a változások típusának jelzésére vannak definiálva.
A kimenet alján látható, hogy a Tulajdonos címke törölve lett. A címelőtag 10.0.0.0/16-ról 10.0.0.0/15-ösre változott. Az alhálózat001 nevű alhálózat törölve lett. Ne feledje, hogy ezek a módosítások nem lettek üzembe helyezve. A Bicep-fájl üzembe helyezésekor megjelenő módosítások előnézete jelenik meg.
A töröltként felsorolt tulajdonságok némelyike valójában nem változik. A tulajdonságok helytelenül jelenthetők töröltként, ha nincsenek a Bicep-fájlban, de az üzembe helyezés során automatikusan alapértelmezett értékként vannak beállítva. Ezt az eredményt "zajnak" tekintjük a what-if válaszban. A végső üzembe helyezett erőforrásban meg lesznek adva a tulajdonságok értékei. A lehetőségelemzési művelet érleltével ezek a tulajdonságok ki lesznek szűrve az eredményből.
A lehetőségelemzési eredmények programozott kiértékelése
Most a parancs változóra állításával programozott módon értékeljük ki a lehetőségelemzés eredményeit.
$results = Get-AzResourceGroupDeploymentWhatIfResult `
-ResourceGroupName ExampleGroup `
--template-file "what-if-after.bicep"
Az egyes módosítások összegzése látható.
foreach ($change in $results.Changes)
{
$change.Delta
}
Törlés megerősítése
Ha a Bicep-fájl üzembe helyezése előtt szeretné megtekinteni a módosításokat, használja a kapcsoló megerősítése paramétert az üzembe helyezési paranccsal. Ha a módosítások a várt módon történnek, válaszoljon arra, hogy befejezze az üzembe helyezést.
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-Confirm `
-TemplateFile "what-if-after.bicep"
A szöveges kimenet a következő:
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"):
Láthatja a várt módosításokat, és ellenőrizheti, hogy futtatni szeretné-e az üzembe helyezést.
Az erőforrások eltávolítása
Ha már nincs szüksége a példaerőforrásokra, az Azure CLI vagy Azure PowerShell használatával törölje az erőforráscsoportot.
az group delete --name ExampleGroup
SDK-k
A lehetőségelemzési műveletet az Azure SDK-kon keresztül használhatja.
Python esetén használja a what-if parancsot.
Java esetén használja a DeploymentWhatIf osztályt.
.NET esetén használja a DeploymentWhatIf osztályt.
Következő lépések
- A folyamat what-if műveletének használatához lásd: ARM-sablonok tesztelése What-If egy folyamatban.
- Ha helytelen eredményeket észlel a lehetőségelemzési műveletből, jelentse a problémákat a következő címen: https://aka.ms/whatifissues.
- A what-if használatát bemutató Learn-modulért lásd: Az Azure-erőforrások előzetes módosítása és érvényesítése a what-if és az ARM-sablontesztelési eszközkészlet használatával.