Criar a infraestrutura como código

Concluído

A CLI do Desenvolvedor do Azure (azd) pode provisionar recursos no Azure usando a infraestrutura como arquivos de código (IaC) escritos em Bicep ou Terraform. A infraestrutura como código permite definir recursos e configurações de infraestrutura em arquivos de definição declarativa que geram de forma confiável os mesmos ambientes sempre que são implantados. azd executa esses arquivos para criar os recursos do Azure necessários para hospedar seu aplicativo. Você pode aprender mais sobre infraestrutura como código na documentação O que é infraestrutura como código?

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

Os arquivos Bicep ou Terraform para seu modelo vivem na infra pasta. O modelo inicial do Bicep selecionado gerou três arquivos como ponto de partida:

  • main.bicep - Atua como o principal ponto de entrada para a execução do Bicep e é usado para definir os recursos que serão provisionados no Azure. O main.bicep arquivo também pode fazer referência a 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 abreviaturas de nomenclatura úteis. Esse arquivo é carregado no arquivo durante a main.bicep 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 main.bicep arquivo e criando mais arquivos Bicep. Main.bicep geralmente orquestra a execução de outros módulos Bicep passando parâmetros entre eles. Neste 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 seu modelo, crie um novo arquivo chamado app.bicep.

  2. Abra o app.bicep arquivo e cole o seguinte trecho de código. Os comentários de código descrevem a finalidade de cada seção do 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 trecho 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 dos valores nas definições de recursos para tornar o módulo mais flexível.
    • Define um Plano do 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.

    Nota

    Uma azd-service-name marca está incluída na definição do Bíceps do Serviço de Aplicativo que será usada posteriormente pelo Azure.yaml arquivo de configuração para associar você a uma pasta do código-fonte do seu 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 dentro do infra editor e abra o main.bicep arquivo.

    O main.bicep arquivo gerado pelo modelo inicial inclui configurações de configuraçã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 main.parameters.json se estiverem incluídos nesse arquivo, mas você também pode substituí-los. O código inicial também é carregado no abbreviations.json arquivo para que ele esteja disponível para trabalhar, cria algumas tags e tokens úteis para nomenclatura de serviço e inclui comentários úteis com dicas para ajudá-lo a começar.

  4. Na parte inferior do main.bicep arquivo, 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 destaca onde incluir quaisquer recursos adicionais que você deseja provisionar. Queremos incluir o módulo Bicep que você cria para o Serviço de Aplicativo, portanto, cole o seguinte trecho 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 trecho de código realiza as seguintes tarefas:

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

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