Criar a infraestrutura como código

Concluído

O Azure Developer CLI (azd) pode provisionar recursos no Azure usando arquivos IaC (infraestrutura como código) gravados no Bicep ou no Terraform. A infraestrutura como código permite que você defina recursos e configurações de infraestrutura em arquivos de definição declarativa que geram os mesmos ambientes de maneira confiável sempre que são implantados. Esses arquivos são executados pelo azd para criar os recursos do Azure necessários para hospedar seu aplicativo. Saiba mais sobre a infraestrutura como código na documentação O que é a infraestrutura como código?.

Nesta unidade, você adicionará o código Bicep ao modelo para provisionar os recursos necessários para seu aplicativo. Não é necessário conhecimento prévio do Bicep para concluir este módulo. No entanto, se você planeja trabalhar com modelos azd extensivamente, é uma boa ideia se familiarizar com pelo menos os conceitos básicos do Bicep ou do Terraform. Saiba mais sobre o Bicep no roteiro de aprendizagem Conceitos básicos do Bicep.

Os arquivos Bicep ou Terraform do modelo residem na pasta infra. O modelo inicial do Bicep que você selecionou gerou três arquivos como ponto de partida:

  • main.bicep – atua como o ponto de entrada principal para execução do Bicep e é usado para definir os recursos que serão provisionados no Azure. O arquivo main.bicep também pode referenciar outros módulos Bicep (arquivos) que permitem extrair definições de recursos em arquivos mais granulares e reutilizáveis.
  • abbreviations.json – um arquivo JSON que fornece muitas abreviações de nomenclatura úteis. Esse arquivo é carregado no arquivo main.bicep durante a execução e fornece um conjunto de prefixos de nomenclatura lógicos consistentes para diferentes recursos do Azure.
  • main.parameters.json – um arquivo JSON que define valores padrão para parâmetros de modelo importantes, como o local padrão do Azure ou o nome do ambiente.

Você pode definir e provisionar os recursos necessários do Azure para seu aplicativo atualizando o arquivo main.bicep e criando mais arquivos Bicep. O Main.bicep geralmente orquestra a execução de outros módulos Bicep passando parâmetros entre eles. Para este exemplo, você criará um módulo Bicep adicional para definir o Serviço de Aplicativo do Azure que hospedará seu aplicativo.

  1. Dentro da infra pasta do modelo, crie um arquivo chamado app.bicep.

  2. Abra o arquivo app.bicep e cole o snippet de código a seguir. Os comentários de código descrevem a finalidade de cada seção de código.

    // 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' }
    }
    

    O snippet de código realiza as seguintes tarefas:

    • Define um conjunto de parâmetros que podem ser passados para o módulo para torná-lo reutilizável e configurável. Você pode optar por parametrizar mais valores nas definições de recurso para tornar o módulo mais flexível.
    • Define um plano de Serviço de Aplicativo para gerenciar os recursos de computação para instâncias do Serviço de Aplicativo.
    • Define o Serviço de Aplicativo para hospedar o aplicativo implantado.

    Observação

    Uma marca azd-service-name é incluída no Serviço de Aplicativo definição do Bicep que será usada posteriormente pelo arquivo de configuração Azure.yaml para associar uma pasta do código-fonte do aplicativo ao Serviço de Aplicativo.

  3. O novo módulo Bicep criará um Serviço de Aplicativo para seu modelo, mas você ainda precisará atualizar o main.bicep para usá-lo. Localize a pasta infra dentro do editor e abra o arquivo main.bicep.

    O arquivo main.bicep gerado pelo modelo inicial inclui configurações de instalação úteis para você. Por exemplo, o arquivo define parâmetros essenciais, como environmentName e location. Por padrão, esses parâmetros serão preenchidos de main.parameters.json se estiverem incluídos nesse arquivo, mas você também poderá substituí-los. O código inicial também é carregado no arquivo abbreviations.json para que ele esteja disponível para trabalhar, cria algumas marcas e tokens úteis para nomenclatura de serviço e inclui comentários úteis com dicas para ajudar você a começar.

  4. Na parte inferior do arquivo main.bicep, localize o comentário semelhante ao seguinte:

    // 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
    

    Este comentário de espaço reservado realça onde incluir quaisquer recursos adicionais que você deseja provisionar. Queremos incluir o módulo Bicep criado para o Serviço de Aplicativo, portanto, cole o seguinte snippet de código diretamente após o comentário:

    module web 'app.bicep' = {
      name: '${deployment().name}-app'
      scope: rg
      params: {
        location: location
        appServiceName: '${abbrs.webSitesAppService}${resourceToken}'
        appServicePlanName: '${abbrs.webServerFarms}${resourceToken}'
      }
    }
    

    O snippet de código realiza as seguintes tarefas:

    • Define um módulo Bicep que aponta para o arquivo que você criou na etapa anterior.
    • Atribui um nome ao conjunto de implantações do Azure e o define como escopo para o grupo de recursos criado no main.bicep.
    • Passa parâmetros para o módulo usando os valores abbreviations.json para ajudar na nomenclatura.

Os arquivos de infraestrutura para o código-fonte do aplicativo agora fazem parte do modelo. Na próxima unidade, você adicionará configurações que descrevem a relação entre essas partes para o processo de implantação azd.