Criar a infraestrutura como código
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. Omain.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 amain.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.
Dentro da
infra
pasta do seu modelo, crie um novo arquivo chamadoapp.bicep
.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 peloAzure.yaml
arquivo de configuração para associar você a uma pasta do código-fonte do seu 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 pasta dentro doinfra
editor e abra omain.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, comoenvironmentName
elocation
. Por padrão, esses parâmetros serão preenchidosmain.parameters.json
se estiverem incluídos nesse arquivo, mas você também pode substituí-los. O código inicial também é carregado noabbreviations.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.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.