Udostępnij za pośrednictwem


Szybki start: rozwiązywanie problemów z wdrożeniami plików Bicep

W tym przewodniku Szybki start opisano sposób rozwiązywania problemów z błędami wdrażania plików Bicep. Utworzysz plik z błędami i dowiesz się, jak naprawić błędy.

Istnieją trzy rodzaje błędów związanych z wdrażaniem:

  • Błędy walidacji występują przed rozpoczęciem wdrożenia i są spowodowane błędami składni w pliku. Edytor kodu, taki jak Visual Studio Code, może zidentyfikować te błędy.
  • Błędy weryfikacji wstępnej występują, gdy polecenie wdrożenia jest uruchamiane, ale zasoby nie są wdrażane. Te błędy można znaleźć bez uruchamiania wdrożenia. Jeśli na przykład wartość parametru jest niepoprawna, zostanie znaleziony błąd podczas weryfikacji wstępnej.
  • Błędy wdrażania występują podczas procesu wdrażania i można je znaleźć tylko przez ocenę postępu wdrożenia w środowisku platformy Azure.

Wszystkie rodzaje błędów zwracają kod błędu, którego należy użyć do rozwiązania problemów z wdrożeniem. Błędy weryfikacji i weryfikacji wstępnej są wyświetlane w dzienniku aktywności, ale nie pojawiają się w historii wdrażania. Plik Bicep z błędami składni nie jest kompilowany do formatu JSON i nie jest pokazywany w dzienniku aktywności.

Wymagania wstępne

Do ukończenia tego przewodnika Szybki start potrzebne są następujące elementy:

Tworzenie pliku Bicep z błędami

Skopiuj następujący plik Bicep i zapisz go lokalnie. Użyjesz tego pliku do rozwiązywania problemów z błędem weryfikacji, błędem wstępnym i błędem wdrożenia. W tym przewodniku Szybki start założono, że nazwa pliku troubleshoot.bicep została nazwana, ale możesz nadać jej dowolną nazwę.

@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

Naprawianie błędu sprawdzania poprawności

Otwórz plik w Visual Studio Code. Zauważysz, że Visual Studio Code identyfikuje błąd składniowy. Pierwsza deklaracja parametru jest oznaczona czerwonymi zygzakami, aby wskazać błąd.

Zrzut ekranu przedstawiający Visual Studio Code z czerwonymi zygzakami wyróżniającymi błąd składniowy w pliku Bicep.

Wiersze oznaczone błędem to:

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

Po umieszczeniu wskaźnika myszy na parameterobiekcie zostanie wyświetlony komunikat o błędzie.

Zrzut ekranu przedstawiający szczegółowy komunikat o błędzie wyświetlany w Visual Studio Code po umieszczeniu wskaźnika myszy na błędzie składniowym w pliku Bicep.

Komunikat zawiera: ten typ deklaracji nie jest rozpoznawany. Określ parametr, zmienną, zasób lub deklarację danych wyjściowych. Jeśli spróbujesz wdrożyć ten plik, otrzymasz ten sam komunikat o błędzie z polecenia wdrożenia.

Jeśli przyjrzysz się dokumentacji deklaracji parametru, zobaczysz, że słowo kluczowe to w rzeczywistości param. Po zmianie tej składni błąd walidacji zniknie. Dekorator @allowed został również oznaczony jako błąd, ale ten błąd również został rozwiązany przez zmianę deklaracji parametru. Dekorator został oznaczony jako błąd, ponieważ oczekuje deklaracji parametru po dekoratorze. Ten warunek nie był spełniony, gdy deklaracja była nieprawidłowa.

Stała linia to:

param storageAccountType string = 'Standard_LRS'

Naprawianie błędu przed lotem

Teraz, po naprawieniu błędu sprawdzania poprawności, nadszedł czas na wdrożenie pliku. Jednak podasz nieprawidłową wartość parametru, aby zobaczyć błąd wstępny.

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

Usługa Azure Resource Manager określa, że nazwa konta magazynu zawiera niedozwolone znaki. Nie podejmuje próby wdrożenia.

Zostanie wyświetlony komunikat o błędzie wskazujący, że weryfikacja wstępna nie powiodła się. Zostanie również wyświetlony komunikat z informacją, że nazwa konta magazynu musi zawierać od 3 do 24 znaków, a cyfry i małe litery muszą zawierać tylko od 3 do 24 znaków. Podany prefiks nie spełnia tego wymagania. Aby uzyskać więcej informacji na temat tego kodu błędu, zobacz Rozwiązywanie błędów dotyczących nazw kont magazynu.

Ponieważ błąd został przechwycony w środowisku wstępnym, w historii nie istnieje żadne wdrożenie.

Zrzut ekranu przedstawiający sekcję historii wdrożenia Azure Portal bez wdrożeń dla pliku Bicep.

Jednak wdrożenie, które zakończyło się niepowodzeniem, istnieje w dzienniku aktywności.

Zrzut ekranu przedstawiający dziennik aktywności Azure Portal z wyświetlonym błędem sprawdzania poprawności wstępnego wdrożenia pliku Bicep.

Możesz otworzyć szczegóły wpisu dziennika, aby wyświetlić komunikat o błędzie.

Naprawianie błędu wdrażania

Ponownie wdrożysz plik i podasz dozwoloną wartość parametru prefiksu nazwy.

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

Wdrożenie rozpoczyna się, ale kończy się niepowodzeniem z komunikatem informującym, że sieć wirtualna nie została znaleziona. Zazwyczaj ten błąd można naprawić, zmieniając odwołanie do zasobu. W tym przewodniku Szybki start usuniesz odwołanie. Aby uzyskać więcej informacji na temat tego kodu błędu, zobacz Rozwiązywanie problemów z błędami nieznajdanych zasobów.

Zwróć uwagę, że w portalu wdrożenie jest wyświetlane w historii.

Zrzut ekranu przedstawiający sekcję historii wdrożenia Azure Portal przedstawiającą nieudane wdrożenie pliku Bicep.

Możesz otworzyć wpis w historii wdrażania, aby uzyskać szczegółowe informacje o błędzie. Błąd istnieje również w dzienniku aktywności.

Plik Bicep próbuje odwołać się do sieci wirtualnej, która nie istnieje w grupie zasobów. Usuń odwołanie do istniejącej sieci wirtualnej, aby naprawić błąd.

@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

Możesz wdrożyć ten plik Bicep bez żadnych błędów.

Czyszczenie zasobów

Gdy zasoby platformy Azure nie są już potrzebne, usuń grupę zasobów. Grupę zasobów można usunąć z Cloud Shell lub portalu.

az group delete --name troubleshootRG

Aby usunąć grupę zasobów z portalu, wykonaj następujące kroki:

  1. W Azure Portal wprowadź ciąg Grupy zasobów w polu wyszukiwania.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Wybierz nazwę grupy zasobów.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów, a następnie wybierz pozycję Usuń.

Następne kroki

W tym przewodniku Szybki start przedstawiono sposób rozwiązywania problemów z błędami wdrażania plików Bicep.