Краткое руководство. Устранение неполадок при развертывании файлов Bicep

В этом кратком руководстве описывается устранение ошибок развертывания файлов Bicep. Вы создадите файл с ошибками и узнаете, как исправить их.

Существует три типа ошибок, связанных с развертыванием.

  • Ошибки проверки: происходят до начала развертывания и вызываются синтаксическими ошибками в файле. Редактор кода, например Visual Studio Code, может определить эти ошибки.
  • Ошибки проверки перед запуском происходят, когда команда развертывания выполняется, но ресурсы не развертываются. Эти ошибки обнаруживаются без запуска развертывания. Например, если значение параметра является неверным, то в ходе предварительной проверки будет обнаружена ошибка.
  • Ошибки развертывания: возникают в процессе развертывания, и их можно обнаружить только путем оценки хода выполнения развертывания в среде Azure.

Ошибки всех типов возвращают код ошибки, с помощью которого можно устранить неполадки развертывания. Сведения об ошибках проверки перед запуском отображаются в журнале действий, но не отображаются в журнале развертывания. BICEP-файл с синтаксическими ошибками не компилируется в JSON-файл и не отображается в журнале действий.

Предварительные требования

Для работы с этим кратким руководством вам потребуется следующее:

Создание файла Bicep с ошибками

Скопируйте следующий файл Bicep и сохраните его локально. Этот файл будет использоваться для устранения ошибок проверки, ошибок предварительный проверки и ошибок развертывания. В этом кратком руководстве предполагается, что вы указали файл с именем troubleshoot.bicep, но можете присвоить ему любое имя.

@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

Исправление ошибки проверки

Откройте файл в Visual Studio Code. Вы заметите, что Visual Studio Code обнаружил синтаксическую ошибку. Первое объявление параметра выделено красной волнистой линией, что указывает на ошибку.

Снимок экрана: Visual Studio Code с красной волнистой линией, выделяющей синтаксическую ошибку в файле Bicep.

Строки, отмеченные как содержащие ошибку:

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

При наведении указателя мыши на parameter отображается сообщение об ошибке.

Снимок экрана: подробное сообщение об ошибке, отображаемое в Visual Studio Code при наведении указателя мыши на синтаксическую ошибку в файле Bicep.

В сообщении сказано: Этот тип объявления не распознан. Укажите объявление параметра, переменной, ресурса или выходных данных. При попытке развернуть этот файл команда развертывания выдаст то же сообщение об ошибке.

Если обратиться к документации по объявлению параметра, вы увидите, что ключевое слово на самом деле param. После исправления синтаксиса ошибка проверки исчезает. Декоратор @allowed также был отмечен как ошибка, но эту ошибку также можно устранить, изменив объявление параметра. Декоратор был отмечен как ошибка, поскольку перед ним ожидалось объявление параметра. Это неверное условие, если объявление было неправильным.

Исправленная строка:

param storageAccountType string = 'Standard_LRS'

Исправление ошибки предварительной проверки

После исправления ошибки проверки пришло время развернуть файл. Однако вы предоставите неправильное значение параметра, чтобы увидеть ошибку предварительной проверки.

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 определяет, что имя учетной записи хранения содержит недопустимые символы. Он не попытается выполнить развертывание.

Появится сообщение об ошибке, которая указывает, что предварительная проверка не пройдена. Кроме того, вы получите сообщение о том, что длина имени учетной записи хранения должна составлять от 3 до 24 символов, а само имя должно содержать только цифры и буквы нижнего регистра. Указанный префикс не соответствует этому требованию. Дополнительные сведения об этом коде ошибки см. в статье Устранение ошибок, связанных с именами учетных записей хранения.

Поскольку ошибка была перехвачена во время предварительной проверки, в журнале нет данных о развертывании.

Снимок экрана: раздел журнала развертывания портал Azure, в котором отсутствуют развертывания для файла Bicep.

Однако сведения о неудачном развертывании имеются в журнале действий.

Снимок экрана: журнал действий портал Azure, отображающий ошибку предварительной проверки для развертывания файла Bicep.

Можно открыть сведения о записи журнала, чтобы просмотреть сообщение об ошибке.

Исправление ошибки развертывания

Вы снова развернете файл и укажете допустимое значение для параметра префикса имени.

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

Развертывание начинается, но завершается сбоем с сообщением о том, что виртуальная сеть не найдена. Как правило, эту ошибку можно устранить, изменив ссылку на ресурс. В этом кратком руководстве вы удалите ссылку. Дополнительные сведения об этом коде ошибки см. в статье Устранение ошибок, связанных с отсутствием ресурса.

Обратите внимание, что в журнале на портале имеются сведения о развертывании.

Снимок экрана: раздел журнала развертывания портал Azure, показывающий неудачное развертывание для файла Bicep.

Вы можете открыть запись в журнале развертывания, чтобы узнать подробнее об ошибке. Эта ошибка также отображается в журнале действий.

Файл Bicep пытается сослаться на виртуальную сеть, которая не существует в группе ресурсов. Чтобы устранить эту ошибку, удалите ссылку на существующую виртуальную сеть.

@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

Этот файл Bicep можно развернуть без ошибок.

Очистка ресурсов

Если ресурсы Azure больше не нужны, удалите группу ресурсов. Группу ресурсов можно удалить из Cloud Shell или на портале.

az group delete --name troubleshootRG

Чтобы удалить группу ресурсов с портала, выполните следующие действия:

  1. В портал Azure введите группы ресурсов в поле поиска.
  2. В поле Фильтровать по имени введите имя группы ресурсов.
  3. Выберите имя группы ресурсов.
  4. Выберите команду Удалить группу ресурсов.
  5. Чтобы подтвердить удаление, введите имя ресурса и выберите Удалить.

Дальнейшие действия

В этом кратком руководстве вы узнали, как устранять ошибки развертывания файлов Bicep.