Criar a infraestrutura como código
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 arquivomain.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 arquivomain.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.
Dentro da
infra
pasta do modelo, crie um arquivo chamadoapp.bicep
.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çãoAzure.yaml
para associar uma pasta do código-fonte do aplicativo ao Serviço de Aplicativo.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 pastainfra
dentro do editor e abra o arquivomain.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, comoenvironmentName
elocation
. Por padrão, esses parâmetros serão preenchidos demain.parameters.json
se estiverem incluídos nesse arquivo, mas você também poderá substituí-los. O código inicial também é carregado no arquivoabbreviations.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.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
.