Rychlý start: Řešení potíží s nasazeními souborů Bicep

Tento rychlý start popisuje, jak řešit chyby nasazení souboru Bicep. Vytvoříte soubor s chybami a dozvíte se, jak chyby opravit.

S nasazením souvisejí tři typy chyb:

  • K chybám ověřování dochází před zahájením nasazení a jsou způsobeny chybami syntaxe ve vašem souboru. Tyto chyby může identifikovat váš editor.
  • K chybám předběžného ověření dochází při spuštění příkazu nasazení, ale prostředky nejsou nasazené. Tyto chyby se naštou bez spuštění nasazení. Pokud je například hodnota parametru nesprávná, chyba se nachází v předběžném ověření.
  • K chybám nasazení dochází během procesu nasazení a vyhodnocuje se pouze průběh nasazení.

Všechny typy chyb vrátí kód chyby, který použijete k řešení potíží s nasazením. Ověřovací a předběžné chyby se zobrazují v protokolu aktivit, ale nezobrazují se v historii nasazení. Soubor Bicep s chybami syntaxe se nezkompiluje do formátu JSON a není zobrazený v protokolu aktivit.

Požadavky

K dokončení tohoto rychlého startu potřebujete následující položky:

Vytvoření souboru Bicep s chybami

Zkopírujte následující soubor Bicep a uložte ho místně. Tento soubor použijete k řešení potíží s chybou ověřování, předběžnou chybou a chybou nasazení. V tomto rychlém startu se předpokládá, že jste soubor pojmenovali troubleshoot.bicep, ale můžete ho pojmenovat libovolným názvem.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

Oprava chyby ověřování

Otevřete soubor v Visual Studio Code. Všimněte si, že Visual Studio Code identifikuje chybu syntaxe. První deklarace parametru je označena červenouquiggles, která označuje chybu.

Snímek obrazovky Visual Studio Code zobrazující chybu v syntaxi

Řádky označené chybou jsou:

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Když najedete myší parameter na , zobrazí se chybová zpráva.

Snímek obrazovky s chybovou zprávou Visual Studio Code

Stavy zpráv: "Tento typ deklarace není rozpoznán. Zadejte parametr, proměnnou, prostředek nebo deklaraci výstupu." Pokud se pokusíte tento soubor nasadit, zobrazí se stejná chybová zpráva z příkazu nasazení.

Pokud se podíváte na dokumentaci pro deklaraci parametru, uvidíte, že klíčové slovo je ve skutečnosti param . Když tuto syntaxi změníte, chyba ověření zmizí. Dekorátor byl také označen jako chyba, ale tato chyba je vyřešena také @allowed změnou deklarace parametru. Dekorátor byl označen jako chyba, protože očekává deklaraci parametru po dekoratéru. Tato podmínka nebyla pravdivá, pokud byla deklarace nesprávná.

Pevný řádek je:

param storageAccountType string = 'Standard_LRS'

Oprava předběžné chyby

Teď, když jste opravili chybu ověřování, je čas soubor nasadit. Poskytnete ale chybnou hodnotu parametru, abyste viděli předběžnou chybu.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager určuje, že název účtu úložiště obsahuje znaky, které nejsou povolené. O nasazení se nepokusí.

Zobrazí se chybová zpráva, která indikuje, že předběžné ověření selhalo. Zobrazí se také zpráva, že název účtu úložiště musí mít délku 3 až 24 znaků a musí obsahovat jenom číslice a malá písmena. Předpona, kterou jste poskytli, tento požadavek nesplňuje. Další informace o tomto kódu chyby najdete v tématu Řešení chyb pro názvy účtů úložiště.

Vzhledem k tomu, že se chyba zachytila předem, v historii neexistuje žádné nasazení.

Snímek obrazovky portálu bez nasazení v historii

Neúspěšné nasazení však existuje v protokolu aktivit.

Snímek obrazovky s protokolem aktivit s chybou

Můžete otevřít podrobnosti o položce protokolu a zobrazit chybovou zprávu.

Oprava chyby nasazení

Soubor znovu nasadíte a poskytnete povolenou hodnotu parametru předpony názvu.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

Nasazení se spustí, ale selže se zprávou, že se virtuální síť nenašla. Tuto chybu obvykle opravíte změnou odkazu na prostředek. V tomto rychlém startu odstraníte odkaz. Další informace o tomto kódu chyby najdete v tématu Řešení chyb typu Prostředek nebyl nalezen.

Na portálu si všimněte, že se nasazení zobrazuje v historii.

Snímek obrazovky s historií nasazení na portálu

Můžete otevřít položku v historii nasazení a získat podrobnosti o chybě. Chyba také existuje v protokolu aktivit.

Soubor Bicep se pokusí odkazovat na virtuální síť, která ve vaší skupině prostředků neexistuje. Odstraňte odkaz na existující virtuální síť a opravte chybu.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

Tento soubor Bicep můžete nasadit bez chyb.

Vyčištění prostředků

Pokud už prostředky Azure nepotřebujete, odstraňte skupinu prostředků. Skupinu prostředků můžete odstranit z Cloud Shell portálu.

az group delete --name troubleshootRG

Pokud chcete odstranit skupinu prostředků z portálu, postupujte takto:

  1. Do Azure Portal zadejte Skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
  3. Vyberte název skupiny prostředků.
  4. Vyberte Odstranit skupinu prostředků.
  5. Odstranění potvrdíte tak, že zadáte název skupiny prostředků a vyberete Odstranit.

Další kroky

V tomto rychlém startu jste zjistili, jak řešit potíže s chybami nasazení souborů Bicep.