Создание инфраструктуры в виде кода

Завершено

Интерфейс командной строки разработчика 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, которая будет размещать приложение.

  1. В папке infra шаблона создайте новый файл с именем app.bicep.

  2. 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 файлом конфигурации для связывания папки исходного кода приложения с Служба приложений.

  3. Новый модуль Bicep создаст Служба приложений для шаблона, но его необходимо обновитьmain.bicep. Найдите папку infra в редакторе main.bicep и откройте файл.

    Файл main.bicep , созданный начальным шаблоном, включает полезные конфигурации установки. Например, файл определяет основные параметры, такие как environmentName и location. По умолчанию эти параметры будут заполнены, main.parameters.json если они включены в этот файл, но их также можно переопределить. Начальный код также загружается в abbreviations.json файл, чтобы он был доступен для работы, создает некоторые полезные теги и маркеры для именования служб и включает полезные комментарии с советами, которые помогут вам приступить к работе.

  4. В нижней части 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 процесса развертывания.