Создание ресурсов Azure путем создания файлов Bicep

Завершено XP: 100

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
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 параметров и переходит к созданию ресурсов управляемого удостоверения и реестра контейнеров:

Bicep
@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
azd provision
azd deploy

Использование пользовательских шаблонов Bicep

Вы видели, что можно использовать azd infra synth команду для создания файлов Bicep, необходимых для развертывания приложения .NET Aspire. Затем эти файлы Bicep можно изменить, чтобы изменить развертывание. Но вы также можете вмешаться в создание файлов Bicep ранее во время написания кода, связав файл Bicep в проекте узла приложения.

Рассмотрим следующий Bicep-файл, который создает учетную запись служба хранилища Azure:

Bicep
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 создается учетная запись хранения:

C#
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.

Подробнее


Следующий урок: Упражнение. Использование ресурсов Azure с решением .NET Aspire

Предыдущий Следующая