Udostępnij za pośrednictwem


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

Ten szybki start opisuje, jak rozwiązywać błędy 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 wdrażania i są spowodowane błędami składni w pliku. Edytor kodu, taki jak Visual Studio Code, może identyfikować 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. Ten plik służy do rozwiązywania problemów z błędem walidacji, błędem wstępnym i błędem wdrożenia. W tym przewodniku Szybki start założono, że plik nazywa się troubleshoot.bicep, ale możesz nadać mu 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 programie Visual Studio Code. Zauważysz, że program Visual Studio Code identyfikuje błąd składniowy. Pierwsza deklaracja parametru jest oznaczona czerwonymi falistymi liniami, aby wskazać błąd.

Zrzut ekranu programu Visual Studio Code z czerwonymi falistymi liniami, które wyróżniają 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 najechaniu wskaźnikiem myszy na parameter zostanie wyświetlony komunikat o błędzie.

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

Komunikat stwierdza: ten typ deklaracji nie jest rozpoznawany. Określ parametr, zmienną, zasób lub deklarację wyjściową. 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 został również 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 wstępnego

Po naprawieniu błędu sprawdzania poprawności nadszedł czas na wdrożenie pliku. Podasz nieprawidłową wartość parametru, aby zobaczyć błąd weryfikacji wstępnej.

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 informujący, że nazwa konta magazynu musi mieć długość od 3 do 24 znaków oraz używać wyłącznie cyfr i małych liter. Podany prefiks nie spełnia tego wymagania. Aby uzyskać więcej informacji na temat tego kodu błędu, zobacz Usuwanie błędów związanych z nazwami kont magazynowych.

Ponieważ błąd został wykryty podczas kontroli wstępnej, w historii nie ma żadnego wdrożenia.

Zrzut ekranu przedstawiający sekcję Historii wdrażania portalu Azure bez żadnych 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 witryny 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, że sieć wirtualna nie została znaleziona. Zazwyczaj ten błąd można naprawić, zmieniając odwołanie do zasobu. W tej szybkiej instrukcji usuniesz odwołanie. Aby uzyskać więcej informacji na temat tego kodu błędu, zobacz Rozwiązywanie błędów nieznalezionych zasobów.

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

Zrzut ekranu sekcji historii wdrożeń portalu Azure pokazujący 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.

Uprzątnij zasoby

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

az group delete --name troubleshootRG

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

  1. W witrynie 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 i wybierz pozycję Usuń.

Dalsze kroki

W tym szybkim kursie rozpoczęcia nauczyłeś się, jak rozwiązywać problemy z błędami wdrażania plików Bicep.