Implantar arquivos Bicep usando um fluxo de trabalho

Concluído

Agora que você criou um fluxo de trabalho básico, já pode configurar o fluxo de trabalho para implantar seus arquivos Bicep. Nesta unidade, você aprenderá a implantar código Bicep de um fluxo de trabalho e como configurar as etapas de implantação.

Observação

Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você praticará o que aprendeu aqui em breve.

Confira seu código

Seus arquivos Bicep são armazenados no seu repositório do Git. No GitHub Actions, você precisa dizer explicitamente ao fluxo de trabalho para verificar os arquivos do repositório do Git. Caso contrário, o seu fluxo de trabalho não terá acesso aos arquivos. Essa etapa é geralmente a primeira coisa que o seu trabalho faz.

Para conferir o seu código, use a ação actions/checkout@v3:

name: MyWorkflow

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo

Observe que o fluxo de trabalho inclui a palavra-chave uses. A palavra-chave indica que você deseja usar uma ação predefinida denominada actions/checkout.

Assim como os recursos do Bicep, as ações são sempre com controle de versão. Nesse caso, o fluxo de trabalho usa a versão 3, portanto, @v3 é anexado ao nome da ação.

Depois que o fluxo de trabalho incluir essa ação, o código do repositório será verificado no sistema de arquivos do executor. Especifique o caminho no qual os arquivos devem ser armazenados usando o parâmetro path.

Autenticar no Azure

Ao implantar um arquivo Bicep do seu próprio computador, você usará a CLI do Azure ou o Azure PowerShell. Antes de implantar seu código, você precisa entrar no Azure. Normalmente, as ferramentas solicitam que você insira suas credenciais em um navegador. Depois da verificação de suas credenciais, suas permissões para implantar recursos são confirmadas e você pode usar as ferramentas para implantar seu arquivo Bicep.

Dica

Neste módulo, você criará uma identidade de carga de trabalho para seu fluxo de trabalho usar. O módulo Autenticar o fluxo de trabalho de implantação do Azure usando as identidades de carga de trabalho fornece uma explicação mais detalhada das identidades de carga de trabalho, incluindo como elas funcionam e como fazer para criá-las, atribuir funções a elas e gerenciá-las.

A implantação por fluxo de trabalho também requer autenticação. Como os fluxos de trabalho são executados sem nenhuma intervenção humana, eles precisam se autenticar no Azure usando uma identidade de carga de trabalho. O GitHub e o Microsoft Entra ID trabalham juntos para autenticar seu fluxo de trabalho com segurança sem precisar de credenciais.

Quando o fluxo de trabalho precisa se comunicar com o Azure, uma etapa de fluxo de trabalho entra no Azure usando uma identidade de carga de trabalho. Em seguida, as etapas que são definidas no fluxo de trabalho usam a identidade do fluxo de trabalho.

Diagram that shows a workflow that includes an Azure deployment step, which accesses a secret and then deploys to Azure.

Você deve fazer com que sua entidade de carga de trabalho tenha as permissões necessárias para executar as etapas de implantação. Por exemplo, talvez seja necessário atribuir à identidade da carga de trabalho a função Colaborador para o grupo de recursos em que você implanta seus recursos.

Aviso

Pode parecer mais fácil armazenar as credenciais de usuário no arquivo YAML e, em seguida, entrar usando o comando az login. Você nunca deverá usar essa abordagem para autenticar seu fluxo de trabalho. As credenciais em um arquivo YAML são armazenadas em texto não criptografado. Qualquer pessoa que tenha acesso ao repositório poderá ver e usar as credenciais. Mesmo que você restrinja o acesso ao repositório do GitHub, sempre que alguém clonar seu repositório, o arquivo YAML que contém as credenciais estará no computador dessa pessoa.

Entrar no Azure

Para que seu fluxo de trabalho possa executar comandos no seu ambiente do Azure, primeiro, ele precisa entrar. Há uma ação chamada azure/login que trata do processo de entrada. Você também precisa conceder permissão para que seu fluxo de trabalho funcione com tokens de autenticação.

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

A ação azure/login exige que você forneça três partes da informações para usar uma identidade de carga de trabalho: uma ID do aplicativo Microsoft Entra, sua ID de locatário do Microsoft Entra e a ID de assinatura do Azure com a qual você deseja trabalhar.

Depois que essa ação tiver sido executada, o executor será autenticado e poderá executar instruções em seu ambiente do Azure.

Implantar seu arquivo Bicep

Depois que o fluxo de trabalho entrar no Azure, ele poderá usar a identidade da carga de trabalho para executar a implantação do Bicep. No GitHub Actions, use a ação azure/arm-deploy para iniciar uma implantação do Bicep.

Observação

Há outras maneiras de implantar arquivos Bicep do GitHub Actions. Por exemplo, você pode usar a ação azure/CLI e, em seguida, fornecer os comandos da CLI do Azure para executar suas implantações. No entanto, como a tarefa azure/arm-deploy foi projetada especificamente para implantações, você a usará neste módulo.

Aqui está um exemplo de como você pode configurar uma etapa para usar a ação azure/arm-deploy:

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    - uses: azure/arm-deploy@v1
      with:
        resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
        template: ./deploy/main.bicep
        parameters: environmentType=Test

A ação azure/arm-deploy aceita vários parâmetros, incluindo:

  • resourceGroupName: O nome do grupo de recursos em que você deseja implantar os recursos definidos no arquivo do Bicep.
  • template: O caminho para o arquivo do Bicep no seu repositório. O caminho é referente à raiz do repositório.
  • parameters: Indica os valores de parâmetro que você fornece no momento da implantação. Neste exemplo, fornecemos um valor para o parâmetro environmentType.

Como a ação azure/login anterior já conectou seu fluxo de trabalho ao Azure, a etapa azure/arm-deploy será executada em um executor autenticado.

Variáveis

Geralmente, seus fluxos de trabalho contêm valores que você deseja reutilizar em vários locais no arquivo de fluxo de trabalho. Talvez você também queira armazenar esses valores na parte superior do arquivo de fluxo de trabalho para facilitar a referência e poder alterar os valores facilmente. No fluxo de trabalho, as variáveis definidas serão exibidas como variáveis de ambiente. Para definir valores reutilizáveis, use variáveis.

Criar uma variável

Você pode criar variáveis em diferentes níveis no arquivo do fluxo de trabalho. No entanto, se você quiser que elas estejam disponíveis para todo o arquivo do fluxo de trabalho, defina-as próximo à parte superior do arquivo, logo abaixo da instrução on. Para definir suas variáveis, use o parâmetro env:

env:
    AZURE_RESOURCEGROUP_NAME: gh-actions
    AZURE_WEBAPP_NAME: webapp-gh-actions

No exemplo anterior, especificamos duas variáveis de ambiente.

Usar uma variável no fluxo de trabalho

Depois de criar uma variável, use uma sintaxe especial para fazer referência a ela no arquivo YAML do fluxo de trabalho, desta forma:

${{ env.AZURE_RESOURCEGROUP_NAME }}

Variáveis de ambiente padrão

O GitHub Actions também usa variáveis de ambiente padrão. As variáveis do ambiente padrão contêm informações predefinidas que talvez você queira usar no seu fluxo de trabalho. Aqui estão algumas das variáveis de ambiente padrão que você pode usar no seu fluxo de trabalho:

  • github.sha: o identificador da confirmação do Git que disparou o fluxo de trabalho a ser executado.
  • github.run_number: um número exclusivo para cada execução de um fluxo de trabalho específico em um repositório. Esse número começa em 1 para a primeira execução do fluxo de trabalho e é incrementado a cada nova execução. Você pode usar essa variável para nomear sua implantação do Azure, para que possa acompanhar a implantação de volta na execução do fluxo de trabalho específica que a disparou.

    Observação

    No GitHub Actions, você pode executar novamente um fluxo de trabalho. Quando você faz isso, o número de execuções não é alterado, portanto, você não deve usar a variável github.run_number para contar quantas vezes seu fluxo de trabalho foi executado.

Segredos

Às vezes, você precisa armazenar informações secretas para o fluxo de trabalho usar, como uma senha de banco de dados ou uma chave de API. Você usa os segredos do GitHub para armazenar com segurança informações que contêm credenciais ou informações confidenciais. O fluxo de trabalho pode acessar o valor do segredo.

Os segredos são criados nas configurações do repositório do GitHub. Um segredo está disponível para todos os fluxos de trabalho no repositório. Em um módulo posterior, você aprenderá sobre ambientes, que permitem restringir o uso de segredos para implantações em um ambiente específico.

Aviso

Por padrão, o GitHub Actions ofusca os valores de variáveis secretas em logs de fluxo de trabalho, mas você também precisará seguir as práticas recomendadas. As etapas do fluxo de trabalho têm acesso aos valores dos segredos. Se o fluxo de trabalho incluir uma etapa que não trate um segredo de forma segura, há uma chance de que o valor do segredo possa ser mostrado nos logs de fluxo de trabalho. Você sempre deve revisar cuidadosamente as alterações em um arquivo de definição de fluxo de trabalho para verificar se os segredos não serão tratados de forma inadequada.

Você pode criar segredos usando a interface da Web do GitHub. Para se referir a um valor secreto em seu fluxo de trabalho, use a seguinte sintaxe:

${{ secrets.NAME_OF_THE_SECRET }}

Quando o fluxo de trabalho é iniciado, o executor que está executando as etapas de implantação tem acesso ao valor do segredo do GitHub descriptografado. O GitHub Actions foi projetado para não revelar valores secretos em seus logs de fluxo de trabalho.

Dica

Assim como os parâmetros Bicep, você não precisa criar variáveis para tudo. É uma boa ideia criar variáveis para qualquer coisa que possa mudar entre ambientes e segredos do GitHub para qualquer coisa que seja secreta. Como o fluxo de trabalho sempre usará o mesmo arquivo do Bicep, você não precisa criar uma variável para o caminho.

Neste módulo, você usará os segredos do GitHub para armazenar as informações de que a tarefa azure/login precisa para entrar no Azure: sua assinatura do Microsoft Entra e a ID do locatário e a ID de registro do aplicativo da identidade da carga de trabalho.