Создание инфраструктуры в виде кода
Интерфейс командной строки разработчика Azure (azd
) может подготавливать ресурсы в Azure с помощью инфраструктуры как файлов кода (IaC), написанных в Bicep или Terraform. Инфраструктура как код позволяет определять ресурсы инфраструктуры и конфигурации в декларативных файлах определений, которые надежно создают одни и те же среды при каждом развертывании.
azd
выполняет эти файлы, чтобы создать ресурсы Azure, необходимые для размещения приложения. Дополнительные сведения о инфраструктуре в виде кода см. в документации по инфраструктуре "Что такое инфраструктура как код?" .
В этом уроке вы добавите код Bicep в шаблон для подготовки необходимых ресурсов для приложения. Предыдущие знания Bicep не требуются для выполнения этого модуля. Однако если вы планируете работать с шаблонами широко, рекомендуется ознакомиться по крайней мере с azd
основами Bicep или Terraform. Узнайте больше о Bicep на основах обучения Bicep .
Файлы Bicep или Terraform для шаблона живут в папке infra
. Начальный шаблон Bicep, который вы выбрали три файла в качестве отправной точки:
-
main.bicep
— выступает в качестве основной точки входа для выполнения Bicep и используется для определения ресурсов, которые будут подготовлены в Azure. Файлmain.bicep
также может ссылаться на другие модули Bicep (файлы), которые позволяют извлекать определения ресурсов в более детализированные, повторно используемые файлы. -
abbreviations.json
— JSON-файл, предоставляющий множество полезных аббревиаций именования. Этот файл загружается вmain.bicep
файл во время выполнения и предоставляет набор согласованных логических префиксов именования для разных ресурсов Azure. -
main.parameters.json
— JSON-файл, определяющий значения по умолчанию для важных параметров шаблона, например расположение Azure по умолчанию или имя среды.
Вы можете определить и подготовить необходимые ресурсы Azure для приложения, обновив main.bicep
файл и создав файлы Bicep.
Main.bicep
обычно управляет выполнением других модулей Bicep путем передачи параметров между ними. В этом примере вы создадите дополнительный модуль Bicep для определения службы приложение Azure, которая будет размещать приложение.
В папке
infra
шаблона создайте новый файл с именемapp.bicep
.app.bicep
Откройте файл и вставьте следующий фрагмент кода. Примечания кода описывают назначение каждого раздела кода.// Define parameters that can be passed into the module // Parameters allow a module to be reusable @description('The location of where to deploy resources') param location string @description('The name of the App Service Plan') param appServicePlanName string @description('The name of the App Service') param appServiceName string // Define the App Service Plan to manage compute resources resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location properties: { reserved: true } sku: { name: 'F1' } kind: 'linux' } // Define the App Service to host the application resource appService 'Microsoft.Web/sites@2022-03-01' = { name: appServiceName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { linuxFxVersion: 'DOTNETCORE|6.0' } } // Tag used to reference the service in the Azure.yaml file tags: { 'azd-service-name': 'web' } }
Фрагмент кода выполняет следующие задачи:
- Определяет набор параметров, которые можно передать в модуль, чтобы сделать его повторно используемым и настраиваемым. Можно выбрать параметризацию большего числа значений в определениях ресурсов, чтобы сделать модуль более гибким.
- Определяет план Служба приложений для управления вычислительными ресурсами для Служба приложений экземпляров.
- Определяет Служба приложений для размещения развернутого приложения.
Примечание.
Тег
azd-service-name
включен в определение Bicep Служба приложений, которое будет использоваться позжеAzure.yaml
файлом конфигурации для связывания папки исходного кода приложения с Служба приложений.Новый модуль Bicep создаст Служба приложений для шаблона, но его необходимо обновить
main.bicep
. Найдите папкуinfra
в редактореmain.bicep
и откройте файл.Файл
main.bicep
, созданный начальным шаблоном, включает полезные конфигурации установки. Например, файл определяет основные параметры, такие какenvironmentName
иlocation
. По умолчанию эти параметры будут заполнены,main.parameters.json
если они включены в этот файл, но их также можно переопределить. Начальный код также загружается вabbreviations.json
файл, чтобы он был доступен для работы, создает некоторые полезные теги и маркеры для именования служб и включает полезные комментарии с советами, которые помогут вам приступить к работе.В нижней части
main.bicep
файла найдите комментарий, похожий на следующее:// Add resources to be provisioned below. // A full example that leverages azd bicep modules can be seen in the todo-python-mongo template: // https://github.com/Azure-Samples/todo-python-mongo/tree/main/infra
Этот комментарий заполнителя выделяет, где включать дополнительные ресурсы, которые требуется подготовить. Мы хотим включить модуль Bicep, который вы создаете для Служба приложений, поэтому вставьте следующий фрагмент кода непосредственно после комментария:
module web 'app.bicep' = { name: '${deployment().name}-app' scope: rg params: { location: location appServiceName: '${abbrs.webSitesAppService}${resourceToken}' appServicePlanName: '${abbrs.webServerFarms}${resourceToken}' } }
Фрагмент кода выполняет следующие задачи:
- Определяет модуль Bicep, указывающий на файл, созданный на предыдущем шаге.
- Назначает имя набору развертывания Azure и области, в которую он входит в группу ресурсов, созданную в
main.bicep
. - Передает параметры в модуль с помощью
abbreviations.json
значений, которые помогают с именованием.
Теперь файлы инфраструктуры для исходного кода приложения являются частью шаблона. В следующем уроке вы добавите конфигурации, описывающие связь между этими частями для azd
процесса развертывания.