Краткое руководство. Устранение неполадок при развертывании файлов Bicep
В этом кратком руководстве описывается устранение ошибок развертывания файлов Bicep. Вы создадите файл с ошибками и узнаете, как исправить их.
Существует три типа ошибок, связанных с развертыванием.
- Ошибки проверки: происходят до начала развертывания и вызываются синтаксическими ошибками в файле. Редактор кода, например Visual Studio Code, может определить эти ошибки.
- Ошибки проверки перед запуском происходят, когда команда развертывания выполняется, но ресурсы не развертываются. Эти ошибки обнаруживаются без запуска развертывания. Например, если значение параметра является неверным, то в ходе предварительной проверки будет обнаружена ошибка.
- Ошибки развертывания: возникают в процессе развертывания, и их можно обнаружить только путем оценки хода выполнения развертывания в среде Azure.
Ошибки всех типов возвращают код ошибки, с помощью которого можно устранить неполадки развертывания. Сведения об ошибках проверки перед запуском отображаются в журнале действий, но не отображаются в журнале развертывания. BICEP-файл с синтаксическими ошибками не компилируется в JSON-файл и не отображается в журнале действий.
Предварительные требования
Для работы с этим кратким руководством вам потребуется следующее:
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Visual Studio Code с расширением Bicep актуальной версии.
- Последняя версия Azure PowerShell или Azure CLI.
Создание файла 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 обнаружил синтаксическую ошибку. Первое объявление параметра выделено красной волнистой линией, что указывает на ошибку.
Строки, отмеченные как содержащие ошибку:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'
При наведении указателя мыши на parameter
отображается сообщение об ошибке.
В сообщении сказано: Этот тип объявления не распознан. Укажите объявление параметра, переменной, ресурса или выходных данных. При попытке развернуть этот файл команда развертывания выдаст то же сообщение об ошибке.
Если обратиться к документации по объявлению параметра, вы увидите, что ключевое слово на самом деле 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 символов, а само имя должно содержать только цифры и буквы нижнего регистра. Указанный префикс не соответствует этому требованию. Дополнительные сведения об этом коде ошибки см. в статье Устранение ошибок, связанных с именами учетных записей хранения.
Поскольку ошибка была перехвачена во время предварительной проверки, в журнале нет данных о развертывании.
Однако сведения о неудачном развертывании имеются в журнале действий.
Можно открыть сведения о записи журнала, чтобы просмотреть сообщение об ошибке.
Исправление ошибки развертывания
Вы снова развернете файл и укажете допустимое значение для параметра префикса имени.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.bicep \
--parameters prefixName=stg
Развертывание начинается, но завершается сбоем с сообщением о том, что виртуальная сеть не найдена. Как правило, эту ошибку можно устранить, изменив ссылку на ресурс. В этом кратком руководстве вы удалите ссылку. Дополнительные сведения об этом коде ошибки см. в статье Устранение ошибок, связанных с отсутствием ресурса.
Обратите внимание, что в журнале на портале имеются сведения о развертывании.
Вы можете открыть запись в журнале развертывания, чтобы узнать подробнее об ошибке. Эта ошибка также отображается в журнале действий.
Файл 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
Чтобы удалить группу ресурсов с портала, выполните следующие действия:
- В портал Azure введите группы ресурсов в поле поиска.
- В поле Фильтровать по имени введите имя группы ресурсов.
- Выберите имя группы ресурсов.
- Выберите команду Удалить группу ресурсов.
- Чтобы подтвердить удаление, введите имя ресурса и выберите Удалить.
Дальнейшие действия
В этом кратком руководстве вы узнали, как устранять ошибки развертывания файлов Bicep.