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.

Bicep üzembe helyezési lehetőség művelet fullresourcepayload és change types

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ányaihoz
  • New-AzSubscriptionDeployment -Whatif és New-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ányaihoz
  • New-AzSubscriptionDeployment -Confirm és New-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:

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:

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:

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 megegyezik sku.name a Microsoft.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 Bicep üzembe helyezési lehetőségének kimenete

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 Bicep üzembe helyezési lehetőség műveletének kimeneti üzembehelyezési módja befejeződött

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.

Következő lépések