Rychlý start: Řešení potíží s nasazením 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.

V souvislosti s nasazením existují 3 typy chyb:

  • K chybám ověření dochází před zahájením nasazení a jsou způsobeny chybami syntaxe v souboru. Tyto chyby může identifikovat editor kódu, jako je Visual Studio Code.
  • K chybám předběžného ověřování dochází, když se spustí příkaz nasazení, ale prostředky se nenasadí. Tyto chyby se zjistí bez spuštění nasazení. Například v případě nesprávné hodnoty parametru se chyba zjistí při předběžném ověřování.
  • K chybám nasazení dochází během procesu nasazení a lze je zjistit pouze posouzením průběhu nasazení ve vašem prostředí Azure.

Všechny typy chyb vrací kód chyby, který můžete použít při řešení potíží s nasazením. Chyby ověření a předběžného ověření se zobrazí v protokolu aktivit, ale ne v historii nasazení. Soubor Bicep s chybami syntaxe se nezkompiluje do formátu JSON a nezobrazí se 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ěření, 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 mu dát libovolný název.

@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 editoru Visual Studio Code. Všimněte si, že Visual Studio Code identifikuje syntaktickou chybu. První deklarace parametru je označená červenými vlnovkou, které označují chybu.

Snímek obrazovky editoru Visual Studio Code s červenými vlnovkou, které zvýrazňují syntaktickou chybu v souboru Bicep

Řádky označené chybou jsou:

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

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

Snímek obrazovky s podrobnou chybovou zprávou zobrazenou v editoru Visual Studio Code při najetí myší na chybu syntaxe v souboru Bicep

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

Pokud se podíváte do dokumentace k 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 @allowed byl také označen jako chyba, ale tato chyba je také vyřešena změnou deklarace parametru. Dekorátor byl označen jako chyba, protože očekává deklaraci parametru za dekorátorem. Tato podmínka nebyla pravdivá, když byla deklarace nesprávná.

Pevná čára je:

param storageAccountType string = 'Standard_LRS'

Oprava chyby předběžného výstupu

Teď, když jste opravili chybu ověřování, je čas soubor nasadit. Zadáte ale špatnou hodnotu parametru, aby se zobrazila předběžná chyba.

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 nepovolené znaky. Nepokusí se o nasazení.

Zobrazí se chybová zpráva, která značí, že se ověření před výstupem nezdařilo. Zobrazí se také zpráva s informací, že název účtu úložiště musí mít délku 3 až 24 znaků a používat jenom číslice a malá písmena. Předpona, kterou jste zadali, 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 v předběžném stavu, neexistuje v historii žádné nasazení.

Snímek obrazovky s oddílem historie nasazení Azure Portal zobrazující žádná nasazení pro soubor Bicep

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

Snímek obrazovky protokolu aktivit Azure Portal zobrazující chybu předběžného ověření nasazení souboru Bicep

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

Oprava chyby nasazení

Soubor znovu nasadíte a pro parametr předpony názvu zadáte povolenou hodnotu.

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 virtuální síť nebyla nalezena. Obvykle byste tuto chybu opravili 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 prostředku, který nebyl nalezen.

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

Snímek obrazovky s oddílem historie nasazení Azure Portal zobrazující neúspěšné nasazení pro soubor Bicep

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

Soubor Bicep se pokusí odkazovat na virtuální síť, která ve vaší skupině prostředků neexistuje. Odstraněním odkazu na existující virtuální síť chybu opravte.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param 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 jakýchkoli 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 nebo portálu.

az group delete --name troubleshootRG

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

  1. Do vyhledávacího pole 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. Potvrďte odstranění zadáním názvu skupiny prostředků a vyberte Odstranit.

Další kroky

V tomto rychlém startu jste zjistili, jak řešit chyby nasazení souboru Bicep.