Exercício – Adicionar uma tarefa de implantação Bicep ao pipeline
Você criou um pipeline básico e configurou seus ambientes do Azure e do Azure Pipelines para se conectarem. Agora você está pronto para implantar o arquivo Bicep referente ao seu site no Azure oriundo do seu pipeline.
Neste exercício, você vai:
- Adicione um arquivo Bicep ao seu repositório.
- Adicione uma etapa de pipeline para implantar o arquivo Bicep.
- Execute o pipeline novamente e verifique se ele implantou seu site com êxito.
Adicionar o arquivo Bicep do seu site ao repositório Git
Você já preparou o arquivo Bicep do seu site. Você pode usar o arquivo Bicep para implantar configurações diferentes dos recursos do site, dependendo do ambiente e da configuração. Aqui, você adiciona o arquivo Bicep ao seu repositório.
Abra o Visual Studio Code Explorer.
Na pasta deploy, crie um arquivo chamado main.bicep. Garanta que você criou o arquivo dentro da pasta implantar, não na raiz do repositório:
Copie o seguinte código para o arquivo main.bicep:
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The type of environment. This must be nonprod or prod.') @allowed([ 'nonprod' 'prod' ]) param environmentType string @description('Indicates whether to deploy the storage account for toy manuals.') param deployToyManualsStorageAccount bool @description('A unique suffix to add to resource names that need to be globally unique.') @maxLength(13) param resourceNameSuffix string = uniqueString(resourceGroup().id) var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website-plan' var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}' // Define the SKUs for each component based on the environment type. var environmentConfigurationMap = { nonprod: { appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } } var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : '' resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } } resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) { name: toyManualsStorageAccountName location: location kind: 'StorageV2' sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku }
Salve as alterações no arquivo.
No terminal do Visual Studio Code, execute este código para preparar as alterações, confirmá-las e efetuar push delas para o repositório:
git add deploy/main.bicep git commit -m 'Add Bicep file' git push
Substituir as etapas de pipeline
Em seguida, atualize sua definição de pipeline para implantar o arquivo Bicep no Azure usando a conexão de serviço.
No Visual Studio Code, abra o arquivo deploy/azure-pipelines.yml.
Antes da linha
jobs:
, adicionevariables:
para definir uma variável chamadadeploymentDefaultLocation
:trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs:
Para remover a etapa
script
da definição do pipeline, exclua as duas linhas inferiores do arquivo.Dica
Quando você trabalha no Visual Studio Code e instalou a extensão de Azure Pipelines, tente usar a combinação de teclas Ctrl + Espaço. Ela mostra um menu de contexto com elementos sugeridos para adicionar à posição atual do cursor.
Na parte inferior do arquivo, adicione uma tarefa que usa a tarefa
AzureResourceManagerTemplateDeployment
para implantar o arquivo Bicep:jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
Observação
Uma boa ideia é digitar esse código em vez de copiar e colar do módulo. Preste atenção ao recuo do arquivo. Se o recuo não estiver correto, o arquivo YAML não será válido. O Visual Studio Code indica erros exibindo linhas onduladas.
Esta etapa usa uma variável de sistema,
$(Build.BuildNumber)
, para nomear a implantação. A variável pode ajudá-lo a ver facilmente a qual pipeline executar uma implantação corresponde.A propriedade
location
da tarefa é exigida pela tarefaAzureResourceManagerTemplateDeployment
. Ela especifica a região do Azure na qual um grupo de recursos deve ser criado. Neste exercício, você já criou um grupo de recursos e, portanto, o local especificado aqui não importa. Mas você precisa fornecer o valor de qualquer maneira. Aqui, defina-o como o valor da variáveldeploymentDefaultLocation
que você definiu em uma etapa anterior.Salve as alterações no arquivo. Seu arquivo deve ser semelhante a este exemplo:
trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
No terminal do Visual Studio Code, prepare suas alterações, confirme-as em seu repositório e efetue push delas para o Azure Repos:
git add deploy/azure-pipelines.yml git commit -m 'Add deployment task to pipeline' git push
Adicionar variáveis de pipeline
No navegador, selecione Pipelines.
Selecione seu pipeline.
Selecione Editar.
Selecione Variáveis.
Selecione New variable.
Em Nome, digite ServiceConnectionName. Em Valor, digite ToyWebsite.
Deixe as caixas de seleção desmarcadas e selecione OK.
Para criar mais variáveis, selecione +.
Crie as seguintes variáveis da mesma maneira que você criou a variável ServiceConnectionName:
Nome da variável Valor ResourceGroupName ToyWebsite EnvironmentType nonprod Faça as etapas novamente para criar uma variável chamada DeployToyManualsStorageAccount, com um valor true. Para essa variável, marque a caixa de seleção Permitir que os usuários substituam o valor ao executar esse pipeline.
Depois de criar todas as quatro variáveis, selecione Salvar.
Executar seu pipeline
Agora você está pronto para executar seu pipeline!
Seu modelo inclui uma conta de armazenamento, que sua equipe de site usa para armazenar manuais de instrução para os brinquedos. Como você ainda está testando seu ambiente, não precisa implantar a conta de armazenamento toda vez que implantar o site. Portanto, você criou um parâmetro Bicep para controlar se a conta de armazenamento está implantada. Aqui, você executa o pipeline e substitui a implantação para que ela não implante a conta de armazenamento dessa vez.
Selecione Executar.
O painel Executar pipeline é exibido. Neste painel você pode definir as configurações para essa execução específica do pipeline.
Selecione Variáveis.
Selecione a variável DeployToyManualsStorageAccount e altere seu valor para false. Em seguida, selecione Atualizar.
Selecione a seta voltar.
Para iniciar uma nova execução de pipeline, selecione Executar. O pipeline pode levar alguns minutos para iniciar. Depois que o pipeline é iniciado, a implantação pode levar alguns minutos para finalizar.
Para abrir o trabalho, na seção Trabalhos, escolha Trabalho. Você pode monitorar o trabalho conforme ele é executado ou pode aguardar até que o trabalho seja concluído para examinar seu histórico.
Aguarde a conclusão do trabalho.
Selecione Trabalho.
Selecione 1 variável de tempo de fila usada.
O valor substituído para essa execução de pipeline é mostrado. O valor da variável
DeployToyManualsStorageAccount
é falso porque você substituiu o valor original.Inspecione o restante da saída do pipeline.
O pipeline mostra uma implantação bem-sucedida.
Verificar a implantação
Vá para o Portal do Azure.
No menu esquerdo, selecione Grupo de recursos.
Selecione ToyWebsite.
Em Visão geral, veja o status da implantação. Você pode ver que a implantação foi bem-sucedida.
Selecione 1 Êxito para ver os detalhes da implantação.
O nome da implantação é o mesmo nome da execução do pipeline.
Para ver quais recursos foram implantados, selecione a implantação. Para expandir a implantação para ver mais detalhes, selecione Detalhes da implantação. Nesse caso, há um plano do Serviço de Aplicativo do Azure e um aplicativo.