Guia de início rápido: integrar o Bicep com o Azure Pipelines

Este guia de início rápido mostra como integrar arquivos Bicep com o Azure Pipelines para integração contínua e implantação contínua.

Ele fornece uma breve introdução à tarefa de pipeline que você precisa para implantar um arquivo Bicep.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Você também precisa de uma organização do Azure DevOps. Se você não tiver um, crie um gratuitamente. Se sua equipe já tiver uma organização de DevOps do Azure, verifique se você é um administrador do projeto de DevOps do Azure que deseja usar.

Você precisa ter configurado uma conexão de serviço à sua assinatura do Azure. As tarefas no pipeline são executadas usando a identidade da entidade de serviço. Para conhecer as etapas para criar a conexão, consulte Criar um projeto de DevOps.

Você precisa de um arquivo Bicep que defina a infraestrutura para o seu projeto. Este arquivo está em um repositório.

Você precisa de um arquivo '.bicepparam' que define os parâmetros que o seu arquivo Bicep usa. Este arquivo está em um repositório.

Criar canalização

  1. Na sua organização do Azure DevOps, selecione Pipelines e Criar pipeline.

    Captura de ecrã da criação de um novo pipeline.

  2. Especifique onde o código está armazenado. Este guia de início rápido usa repositórios Git do Repositórios do Azure.

    Captura de tela da seleção da fonte do código.

  3. Selecione o repositório que tem o código para o seu projeto.

    Captura de tela da seleção do repositório.

  4. Selecione pipeline inicial para o tipo de pipeline a ser criado.

    Captura de ecrã da seleção do pipeline.

Implantar arquivos Bicep

Pode implementar um ficheiro Bicep usando a tarefa Bicep Deploy, a tarefa de implementação do modelo Azure Resource Manager ou uma tarefa CLI do Azure. A tarefa Bicep Deploy é a opção recomendada para novos pipelines.

Usar a tarefa de implementação do Bicep

A tarefa Bicep Deploy (BicepDeploy@0) é uma tarefa de primeira parte criada especificamente para o Bicep. Implementa os ficheiros .bicep e .bicepparam diretamente, sem os pré-compilar em modelos ARM JSON, e transfere automaticamente e armazena em cache a CLI do Bicep. A tarefa suporta:

  • Implementações padrão nos escopos de grupo de recursos, subscrição, grupo de gestão e inquilino.
  • Pilhas de implementação, incluindo configurações de negação e ações em recursos não geridos, para que possa gerir uma coleção de recursos como uma única unidade.
  • Operações hipotéticas para pré-visualizar alterações antes de as aplicar.
  • Validação de modelos de Bicep antes da implementação.
  • Mascaramento de saída para saídas sensíveis como segredos e cadeias de ligação.

A tarefa corre num agente Azure Pipelines — a infraestrutura informática com software agente instalado que executa os seus trabalhos de pipeline — e requer a versão 2.144.0 ou posterior do software agente. Os agentes alojados na Microsoft são mantidos automaticamente atualizados e cumprem sempre este requisito. Se executares a tarefa num agente auto-hospedado, certifica-te de que o agente está na versão 2.144.0 ou posterior.

Implantar um ficheiro Bicep

  1. Substitua o seu pipeline inicial pelo seguinte código YAML. Utiliza a tarefa Bicep Deploy para implementar um ficheiro Bicep e .bicepparam para um grupo de recursos existente.

    trigger:
    - main
    
    name: Deploy Bicep files
    
    parameters:
    - name: azureServiceConnection
      type: string
      default: '<your-connection-name>'
    
    variables:
      vmImageName: 'ubuntu-latest'
      subscriptionId: '<your-subscription-id>'
      resourceGroupName: 'exampleRG'
      templateFile: './main.bicep'
      parametersFile: './main.bicepparam'
    
    pool:
      vmImage: $(vmImageName)
    
    steps:
    - task: BicepDeploy@0
      inputs:
        azureResourceManagerConnection: '${{ parameters.azureServiceConnection }}'
        type: 'deployment'
        operation: 'create'
        scope: 'resourceGroup'
        subscriptionId: '$(subscriptionId)'
        resourceGroupName: '$(resourceGroupName)'
        name: 'DeployPipelineTemplate'
        templateFile: '$(templateFile)'
        parametersFile: '$(parametersFile)'
    
  2. Atualize os valores de azureServiceConnection, subscriptionId, e resourceGroupName.

  3. Verifique se você tem um arquivo de main.bicep válido em seu repositório.

  4. Verifique se você tem um arquivo de main.bicepparam válido em seu repositório que contenha uma instrução using.

  5. Verifica se o grupo de recursos alvo já existe. A tarefa Bicep Deploy coloca recursos num grupo de recursos existente no resourceGroup âmbito; não cria o grupo de recursos para si.

  6. Selecione Guardar. O pipeline de compilação é executado automaticamente. Volte para o resumo da linha de produção e observe o estado.

Para obter a lista completa dos parâmetros da tarefa, consulte a referência da tarefa Bicep Deploy.

Implementar uma stack de implementação

Para gerir os seus recursos como uma pilha de implementação em vez de uma implementação padrão, defina type e deploymentStack forneça as entradas da pilha de implementação. O passo seguinte cria ou atualiza uma stack de implementação, elimina os recursos que tenham sido removidos do modelo e bloqueia operações de escrita e eliminação fora de banda nos recursos geridos:

steps:
- task: BicepDeploy@0
  inputs:
    azureResourceManagerConnection: '${{ parameters.azureServiceConnection }}'
    type: 'deploymentStack'
    operation: 'create'
    name: 'production-stack'
    scope: 'resourceGroup'
    subscriptionId: '$(subscriptionId)'
    resourceGroupName: '$(resourceGroupName)'
    templateFile: '$(templateFile)'
    parametersFile: '$(parametersFile)'
    actionOnUnmanageResources: 'delete'
    denySettingsMode: 'denyWriteAndDelete'

Para pré-visualizar as alterações que uma stack de implementação introduz antes de as aplicar, defina operation como whatIf. Para obter mais informações sobre a operação what-if, consulte Pré-visualizar alterações com what-if.

Utilize a tarefa de implantação do modelo do Azure Resource Manager

Observação

A partir da versão 3.235.0 da tarefa de implantação de modelo do Azure Resource Manager, é suportada a utilização de ficheiros '.bicepparam'.

Observação

A tarefa AzureResourceManagerTemplateDeployment@3 requer que os arquivos Bicep e .bicepparam sejam fornecidos ao usar .bicepparam. O arquivo Bicep pode fazer referência a todos os locais suportados para referências aos módulos. O arquivo .bicepparam deve fazer referência ao arquivo Bicep local na instrução using.

  1. Substitua o seu pipeline inicial pelo seguinte código YAML. Ele usa a tarefa de implantação de modelo do Azure Resource Manager para criar um grupo de recursos e implantar um arquivo Bicep e .bicepparam.

    trigger:
    - main
    
    name: Deploy Bicep files
    
    parameters:
    - name: azureServiceConnection
      type: string
      default: '<your-connection-name>'
    
    variables:
      vmImageName: 'ubuntu-latest'
      resourceGroupName: 'exampleRG'
      location: '<your-resource-group-location>'
      templateFile: './main.bicep'
      csmParametersFile: './main.bicepparam'
    
    pool:
      vmImage: $(vmImageName)
    
    steps:
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        action: 'Create Or Update Resource Group'
        resourceGroupName: '$(resourceGroupName)'
        location: '$(location)'
        templateLocation: 'Linked artifact'
        csmFile: '$(templateFile)'
        csmParametersFile: '$(csmParametersFile)'
        overrideParameters: '-storageAccountType Standard_LRS'
        deploymentMode: 'Incremental'
        deploymentName: 'DeployPipelineTemplate'
        connectedServiceName: '${{ parameters.azureServiceConnection }}'
    
  2. Atualize os valores de azureServiceConnection e location.

  3. Verifique se você tem um arquivo de main.bicep válido em seu repositório.

  4. Verifique se você tem um arquivo de main.bicepparam válido em seu repositório que contenha uma instrução using.

  5. Selecione Guardar. O pipeline de compilação é executado automaticamente. Volte para o resumo da linha de produção e observe o estado.

Usar a tarefa CLI do Azure

Observação

O comando az deployment group create requer apenas um arquivo bicepparam.. A instrução using no arquivo .bicepparam pode direcionar qualquer local suportado para fazer referência ao arquivo Bicep. Um arquivo Bicep só é necessário em seu repositório quando using de um caminho de disco local com a CLI do Azure.

Observação

Quando você usa um arquivo .bicepparam com o comando az deployment group create, não pode substituir parâmetros.

  1. Substitua o seu pipeline inicial pelo seguinte código YAML. Ele cria um grupo de recursos e implanta um arquivo de .bicepparam usando uma tarefa de CLI do Azure :

    trigger:
    - main
    
    name: Deploy Bicep files
    
    parameters:
      azureServiceConnection: '<your-connection-name>'
    
    variables:
      vmImageName: 'ubuntu-latest'
      resourceGroupName: 'exampleRG'
      location: '<your-resource-group-location>'
      bicepParamFile: './main.bicepparam'
    
    pool:
      vmImage: $(vmImageName)
    
    steps:
    - task: AzureCLI@2
      inputs:
        azureSubscription: '${{ parameters.azureServiceConnection }}'
        scriptType: bash
        scriptLocation: inlineScript
        useGlobalConfig: false
        inlineScript: |
          az --version
          az group create --name $(resourceGroupName) --location $(location)
          az deployment group create `
            --resource-group $(resourceGroupName) `
            --parameters $(bicepParamFile) `
            --name DeployPipelineTemplate
    

    Para obter as descrições das entradas das tarefas, consulte a tarefa da CLI do Azure v2. Ao usar a tarefa na nuvem air-gaped, você deve definir a propriedade useGlobalConfig da tarefa como true. O valor predefinido é false.

  2. Atualize os valores de azureServiceConnection e location.

  3. Verifique se você tem um arquivo de main.bicepparam válido em seu repositório que contenha uma instrução using.

  4. Selecione Guardar. O pipeline de compilação é executado automaticamente. Volte para o resumo da linha de produção e observe o estado.

Limpar recursos

Quando os recursos do Azure não forem mais necessários, use a CLI do Azure ou o Azure PowerShell para excluir o grupo de recursos de início rápido.

az group delete --name exampleRG

Próximos passos