Implantar arquivos Bicep usando um fluxo de trabalho
Agora que você criou um fluxo de trabalho básico, está pronto para configurá-lo para implantar seus arquivos Bicep. Nesta unidade, você aprenderá como implantar o código Bicep a partir de um fluxo de trabalho e como configurar as etapas de implantação.
Nota
Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você vai praticar o que você aprende aqui em breve.
Verifique o seu código
Seus arquivos Bicep são armazenados em seu repositório Git. Em Ações do GitHub, você precisa dizer explicitamente ao fluxo de trabalho para fazer check-out dos arquivos do seu repositório Git. Caso contrário, seu fluxo de trabalho não terá acesso aos arquivos. Este passo é geralmente a primeira coisa que o seu trabalho faz.
Para verificar seu código, você pode usar a actions/checkout@v3
ação:
name: MyWorkflow
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
Observe que o fluxo de trabalho inclui a uses
palavra-chave. A palavra-chave indica que você deseja usar uma ação predefinida chamada actions/checkout
.
Como os recursos do Bicep, as ações são sempre versionadas. 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 corredor. Você especifica o caminho no qual os arquivos devem ser armazenados usando o path
parâmetro.
Autenticar no Azure
Ao implantar um arquivo Bicep de seu próprio computador, você usa a CLI do Azure ou o Azure PowerShell. Antes de implantar seu código, você precisa entrar no Azure. Normalmente, as ferramentas pedem que você insira suas credenciais em um navegador. Depois que suas credenciais forem verificadas, suas permissões para implantar recursos serão confirmadas e você poderá usar as ferramentas para implantar seu arquivo Bicep.
Gorjeta
Neste módulo, você criará uma identidade de carga de trabalho para seu fluxo de trabalho usar. O módulo Autenticar seu fluxo de trabalho de implantação do Azure usando identidades de carga de trabalho fornece uma explicação mais detalhada das identidades de carga de trabalho, incluindo como elas funcionam, bem como como você as cria, atribui funções e as gerencia.
A implantação por fluxo de trabalho também requer autenticação. Como os fluxos de trabalho são executados sem intervenção humana, os fluxos de trabalho são autenticados 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 seu fluxo de trabalho precisa se comunicar com o Azure, uma etapa do fluxo de trabalho entra no Azure usando uma identidade de carga de trabalho. Em seguida, as etapas definidas no fluxo de trabalho usam a identidade do fluxo de trabalho.
Você deve garantir que sua identidade de carga de trabalho tenha as permissões necessárias para executar suas etapas de implantação. Por exemplo, talvez seja necessário atribuir a identidade da carga de trabalho à função de Colaborador para o grupo de recursos no qual você implanta seus recursos.
Aviso
Pode parecer mais fácil armazenar suas credenciais de usuário em seu arquivo YAML e, em seguida, entrar usando o az login
comando. Você nunca deve 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 seu repositório pode ver e usar as credenciais. Mesmo que você restrinja o acesso ao seu repositório GitHub, sempre que alguém clonar seu repositório, o arquivo YAML que contém as credenciais estará no computador dessa pessoa.
Iniciar sessão no Azure
Antes que seu fluxo de trabalho possa executar comandos em seu ambiente do Azure, ele primeiro precisa entrar. Há uma ação chamada azure/login
que lida com o 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 azure/login
ação requer que você forneça três informações para usar uma identidade de carga de trabalho: uma ID de aplicativo do Microsoft Entra, sua ID de locatário (diretório) do Microsoft Entra e a ID de assinatura do Azure com a qual você deseja trabalhar.
Depois que essa ação for executada, seu corredor será autenticado e poderá executar instruções em seu ambiente do Azure.
Implante seu arquivo Bicep
Depois que seu fluxo de trabalho entra no Azure, ele pode usar a identidade da carga de trabalho para executar a implantação do Bicep. Em Ações do GitHub, você usa a ação para iniciar uma implantação do azure/arm-deploy
Bicep.
Nota
Há outras maneiras de implantar arquivos Bicep a partir das Ações do GitHub. Por exemplo, você pode usar a azure/CLI
ação e, em seguida, fornecer comandos da CLI do Azure para executar suas implantações. No entanto, como a azure/arm-deploy
tarefa foi projetada especificamente para implantações, você usará isso neste módulo.
Veja um exemplo de como você pode configurar uma etapa para usar a azure/arm-deploy
açã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 }}
- uses: azure/arm-deploy@v1
with:
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
parameters: environmentType=Test
A azure/arm-deploy
ação aceita vários parâmetros, incluindo:
resourceGroupName
: O nome do grupo de recursos onde você deseja implantar os recursos definidos no arquivo Bicep.template
: O caminho para o arquivo Bicep em seu repositório. O caminho é relativo à raiz do repositório.parameters
: Indica quaisquer valores de parâmetro fornecidos no momento da implantação. Neste exemplo, fornecemos um valor para o parâmetro environmentType .
Como a ação anterior azure/login
já conectou seu fluxo de trabalho no Azure, a etapa é executada azure/arm-deploy
em um executor autenticado.
Variáveis
Muitas vezes, seus fluxos de trabalho contêm valores que você deseja reutilizar em vários locais no arquivo de fluxo de trabalho. Você também pode querer armazenar esses valores na parte superior do arquivo de fluxo de trabalho para facilitar a referência e poder alterar os valores facilmente. Em seu 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 em seu arquivo de fluxo de trabalho. No entanto, se você quiser que eles estejam disponíveis para todo o seu arquivo de fluxo de trabalho, defina-os perto da parte superior do arquivo, logo abaixo da sua on
instrução. Para definir suas variáveis, use o env
parâmetro:
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 em seu fluxo de trabalho
Depois de criar uma variável, use uma sintaxe especial para se referir a ela no arquivo YAML do fluxo de trabalho, da seguinte 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 de ambiente padrão contêm informações predefinidas que você pode querer usar em seu fluxo de trabalho. Aqui estão algumas das variáveis de ambiente padrão que você pode usar em seu fluxo de trabalho:
github.sha
: O identificador da confirmação do Git que acionou a execução do fluxo de trabalho.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 aumenta 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 para a execução de fluxo de trabalho específica que a disparou.Nota
Em Ações do GitHub, você pode executar novamente um fluxo de trabalho. Quando você faz isso, o número de execução não muda, portanto, você não deve usar a
github.run_number
variável para contar quantas vezes seu fluxo de trabalho foi executado.
Segredos
Às vezes, você precisa armazenar informações secretas para seu fluxo de trabalho usar, como uma senha de banco de dados ou chave de API. Você usa segredos do GitHub para armazenar com segurança informações que contêm credenciais ou informações confidenciais. Seu fluxo de trabalho pode acessar o valor do segredo.
Os segredos são criados nas configurações do repositório 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 a um ambiente específico.
Aviso
Por padrão, o GitHub Actions ofusca valores de variáveis secretas em logs de fluxo de trabalho, mas você também precisa seguir boas práticas. Suas etapas de fluxo de trabalho têm acesso aos valores de segredos. Se o seu fluxo de trabalho incluir uma etapa que não lida com um segredo de forma segura, há uma chance de que o valor secreto possa ser mostrado nos logs do fluxo de trabalho. Você deve sempre revisar cuidadosamente as alterações feitas em um arquivo de definição de fluxo de trabalho para verificar se os segredos não serão manipulados incorretamente.
Você pode criar segredos usando a interface web do GitHub. Para fazer referência a um valor secreto em seu fluxo de trabalho, use a seguinte sintaxe:
${{ secrets.NAME_OF_THE_SECRET }}
Quando seu fluxo de trabalho é iniciado, o executor que está executando suas etapas de implantação tem acesso ao valor secreto do GitHub descriptografado. O GitHub Actions foi projetado para não revelar valores secretos em seus logs de fluxo de trabalho.
Gorjeta
Assim como os parâmetros do Bíceps, 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 Bicep, não é necessário criar uma variável para o caminho.
Neste módulo, você usará segredos do GitHub para armazenar as informações de que a tarefa precisa para entrar no Azure: sua assinatura do Microsoft Entra e ID de locatário e a ID de registro do aplicativo da identidade da carga de azure/login
trabalho.