Implantar arquivos Bicep usando um fluxo de trabalho
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.
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.