Создание ресурсов Azure путем создания файлов Bicep
Bicep — это богатый и краткий декларативный язык, который можно использовать для указания ресурсов для создания в подписке Azure. Интерфейс командной строки разработчика Azure создает файлы Bicep при развертывании решений .NET в Azure. Эти файлы можно изменить для настройки развертывания.
В розничной торговле с открытым оборудованием вы хотите добавить дополнительные ресурсы Azure в развернутое решение eShop .NET Aspire. Вы также хотите управлять этими файлами в элементе управления версиями с помощью файлов кода C# и остальной части базы кода.
В этом уроке вы узнаете, как настроить и управлять файлами Bicep, создаваемыми Azure Developer CLI для изменения развертываний.
Зачем использовать файлы Bicep?
Bicep — это текстовый формат файла, определяющий декларативный синтаксис для развертывания ресурсов Azure. Написав файлы Bicep, можно определить полную инфраструктуру Azure с несколькими подключенными ресурсами, такими как виртуальные машины, контейнеры, Функции Azure, ресурсы Azure Monitor и многие другие типы объектов. Bicep имеет краткий синтаксис, безопасные типы и поддерживает повторное использование кода.
Файлы Bicep определяют согласованную инфраструктуру, созданную в подписке Azure. Их можно использовать для обеспечения согласованности сред тестирования, промежуточного хранения и развертывания. Текстовые файлы определяют инфраструктуру как код и могут храниться в системе управления версиями.
Вы также можете использовать файлы Bicep для интеграции ресурсов для решения .NET Aspire в большую инфраструктуру Azure.
Создание файлов Bicep
Bicep — это формат текстового файла, который позволяет создавать файлы с помощью любого текстового редактора. Visual Studio и Visual Studio Code имеют расширения для Bicep. При использовании этих расширений вы получите intellisense и проверку синтаксиса. Однако вам потребуется хорошее понимание инфраструктуры, необходимой для решения.
Готовое решение .NET Aspire определяет все необходимые ресурсы в файлах кода C#. Вместо написания файлов Bicep вручную можно использовать интерфейс командной строки разработчика Azure для автоматического создания Bicep из решения. Используйте следующие команды:
azd config set alpha.infraSynth on
azd init
azd infra synth
Команда создает следующие файлы:
- infra/main.bicep: этот файл определяет основную точку входа для развертывания.
- infra/main.parameters.json: этот файл хранит переменные среды.
- infra/resources.bicep: этот файл определяет все ресурсы Azure для развертывания, кроме контейнеров микрослужб.
- manifests/*.yaml: эти файлы определяют приложение-контейнер для каждой микрослужбы в решении .NET Aspire.
Формат Bicep
В файле Bicep используется ключевое param
слово для определения параметров. Каждый параметр можно использовать несколько раз в создаваемых ресурсах. Ключевое resource
слово используется для создания ресурсов Azure, таких как рабочие области Log Analytics и среды приложений контейнеров Azure.
Например, в начале файла resources.bicep создается интерфейс командной строки разработчика Azure для шаблона Aspire Starter. Он начинается с определения location
и principalId
параметров и переходит к созданию ресурсов управляемого удостоверения и реестра контейнеров:
@description('The location used for all deployed resources')
param location string = resourceGroup().location
@description('Id of the user or app to assign application roles')
param principalId string = ''
@description('Tags that will be applied to all resources')
param tags object = {}
var resourceToken = uniqueString(resourceGroup().id)
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: 'mi-${resourceToken}'
location: location
tags: tags
}
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-07-01' = {
name: replace('acr-${resourceToken}', '-', '')
location: location
sku: {
name: 'Basic'
}
properties: {
adminUserEnabled: true
}
tags: tags
}
Используйте Visual Studio, Visual Studio Code или предпочитаемый текстовый редактор для настройки этих файлов Bicep перед развертыванием.
Использование измененного Bicep-файла в развертывании
Завершив настройку файлов Bicep, используйте следующие команды для подготовки и развертывания решения .NET Aspire:
azd provision
azd deploy
Использование пользовательских шаблонов Bicep
Вы видели, что можно использовать azd infra synth
команду для создания файлов Bicep, необходимых для развертывания приложения .NET Aspire. Затем эти файлы Bicep можно изменить, чтобы изменить развертывание. Но вы также можете вмешаться в создание файлов Bicep ранее во время написания кода, связав файл Bicep в проекте узла приложения.
Рассмотрим следующий Bicep-файл, который создает учетную запись служба хранилища Azure:
param storageName string
param location string = resourceGroup().location
resource myStorageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageName
location: location
kind: 'StorageV2'
sku:{
name:'Standard_LRS'
tier: 'Standard'
}
properties: {
accessTier: 'Hot'
}
}
output endpoint string = myStorageAccount.properties.primaryEndpoints.blob
Bicep принимает строковый параметр с именем storageName
и использует его для имени новой учетной записи. Он также возвращает строку, содержащую путь к конечной точке хранилища BLOB-объектов для новой учетной записи.
Добавив следующий код в файл Program.cs узла приложения, можно убедиться, что при развертывании решения .NET Aspire создается учетная запись хранения:
var storage = builder.AddBicepTemplate(
name: "storage",
bicepFile: "../infra/storage.bicep")
.WithParameter("storageName", "eShopStorage");
var endpoint = storage.GetOutput("endpoint");
var apiService = builder.AddProject<Projects.AspireSample_ApiService>(name: "apiservice")
.WithEnvironment("STORAGE_ENDPOINT", endpoint);
Обратите внимание, что в приведенном выше коде:
- Значение
bicepFile
указывает расположение файла Bicep относительно проекта узла приложения. - Вы передаете значение именованного параметра в файле Bicep с помощью
.WithParameter()
метода расширения. - Выходные данные из файла Bicep извлекаются с помощью
GetOutput()
метода. - В этом примере выходные данные — это конечная точка BLOB-объектов для новой учетной записи хранения, а эта конечная точка передается в качестве переменной среды в службу API.
Подробнее
- Что такое Bicep?
- Общие сведения о структуре и синтаксисе файлов Bicep
- Создание Bicep из модели проекта .NET Aspire
- Использование пользовательских шаблонов Bicep