Sdílet prostřednictvím


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

Tento rychlý start popisuje, jak řešit chyby nasazení souborů 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ěřování dochází před zahájením nasazení a jsou způsobeny chybami syntaxe v souboru. Editor kódu, jako je Visual Studio Code, může tyto chyby identifikovat.
  • Při spuštění příkazu nasazení dojde k chybám předběžného ověření, kvůli kterým se prostředky 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í.
  • Během procesu nasazení dochází k chybám nasazení a lze je najít 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řte soubor 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ěření

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

Snímek obrazovky editoru Visual Studio Code s červenými vlnovkami, které zvýrazňují chybu syntaxe 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 výstupní deklaraci. Pokud se pokusíte tento soubor nasadit, zobrazí se vám stejná chybová zpráva z příkazu nasazení.

Pokud se podíváte do dokumentace 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 @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 po dekorátoru očekává deklaraci parametru. Tato podmínka nebyla pravdivá, pokud deklarace byla nesprávná.

Pevná čára je:

param storageAccountType string = 'Standard_LRS'

Oprava předběžné chyby

Teď, když jste opravili chybu ověření, je čas soubor nasadit. Pokud ale chcete zobrazit předběžnou chybu, zadáte chybnou hodnotu parametru.

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é. Nepokouší se nasazení.

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

Vzhledem k tomu, že chyba byla zachycena v předletu, v historii neexistuje žádné nasazení.

Snímek obrazovky s částí historie nasazení Azure portálu ukazující, že pro soubor Bicep nebyla provedena žádná nasazení.

V protokolu aktivit však existuje neúspěšný pokus o nasazení.

Snímek obrazovky z protokolu aktivit portálu Azure zobrazující chybu při ověření předběžného procesu pro nasazení souboru Bicep.

Pokud chcete zobrazit chybovou zprávu, můžete otevřít podrobnosti o položce protokolu.

Oprava chyby nasazení

Soubor znovu nasadíte a zadáte 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 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, kdy nebyl nalezen prostředek.

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

Snímek obrazovky části historie nasazení v Azure portálu zobrazující neúspěšné nasazení pro soubor Bicep.

Položku v historii nasazení můžete otevřít, abyste získali podrobnosti o chybě. Chyba také existuje v protokolu aktivit.

Soubor Bicep odkazuje 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'
])
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 chyb.

Vyčistěte zdroje

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

az group delete --name troubleshootRG

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

  1. Na webu Azure Portal zadejte do vyhledávacího pole 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 zdrojů.
  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 chyby nasazení souborů Bicep.