Implantar modelos do ARM usando o GitHub Actions.
O GitHub Actions é um pacote de recursos do GitHub usado para automatizar seus fluxos de trabalho de desenvolvimento de software no mesmo local em que você armazena o código e colabora com outras pessoas em solicitações de pull e problemas.
Use a Ação Azure Resource Manager Modelo de Implantação para automatizar a implantação de um modelo arm (modelo arm) de Azure Resource Manager no Azure.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Uma conta do GitHub. Caso ainda não tenha uma, inscreva-se gratuitamente.
- Um repositório GitHub para armazenar seus modelos do Resource Manager e seus arquivos de fluxo de trabalho. Para criá-lo, confira Como criar um repositório.
Visão geral do arquivo do fluxo de trabalho
Um fluxo de trabalho é definido por um arquivo YAML (.yml) no caminho /.github/workflows/
no repositório. Essa definição contém as várias etapas e os parâmetros que compõem o fluxo de trabalho.
O arquivo tem duas seções:
Seção | Tarefas |
---|---|
Autenticação | 1. Gerar as credenciais de implantação. |
Implantar | 1. Implantar o modelo do Resource Manager. |
Gerar as credenciais de implantação
Crie uma entidade de serviço com o comando az ad sp create-for-rbac na CLI do Azure. Execute esse comando com o Azure Cloud Shell no portal do Azure ou selecionando o botão Experimentar.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
O parâmetro --json-auth
está disponível nas versões da CLI do Azure >= 2.51.0. Versões anteriores a essa usam --sdk-auth
com um aviso de substituição.
No exemplo acima, substitua os espaços reservados pela ID da assinatura, nome do grupo de recursos e nome do aplicativo. A saída é um objeto JSON com as credenciais de atribuição de função que fornecem acesso ao aplicativo do Serviço de Aplicativo semelhante ao mostrado abaixo. Copie esse objeto JSON para uso posterior.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Configurar os segredos do GitHub
No GitHub, acesse seu repositório.
Acesse Configurações no menu de navegação.
Selecione Segurança > Segredos e variáveis > Ações.
Selecione Novo segredo de repositório.
Cole toda a saída JSON do comando da CLI do Azure no campo valor do segredo. Dê ao segredo o nome
AZURE_CREDENTIALS
.Selecione Adicionar segredo.
Adicionar modelo do Resource Manager
Adicione um modelo do Resource Manager ao repositório GitHub. O modelo cria uma conta de armazenamento.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Você pode colocar o arquivo em qualquer lugar do repositório. O exemplo do fluxo de trabalho na próxima seção presume que o arquivo de modelo foi denominado como azuredeploy.json e armazenado na raiz do seu repositório.
Criar fluxo de trabalho
O arquivo de fluxo de trabalho deve ser armazenado na pasta .github/workflows, na raiz do repositório. A extensão do arquivo do fluxo de trabalho pode ser .yml ou .yaml.
- No repositório GitHub, selecione Actions no menu superior.
- Selecione Novo fluxo de trabalho.
- Selecione Configurar fluxo de trabalho por conta própria.
- Renomeie o arquivo do fluxo de trabalho se preferir usar um nome diferente de main.yml. Por exemplo: deployStorageAccount.yml.
- Substitua o conteúdo do arquivo yml pelo seguinte:
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@main
# Log into Azure
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy ARM template
- name: Run ARM deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
resourceGroupName: ${{ secrets.AZURE_RG }}
template: ./azuredeploy.json
parameters: storageAccountType=Standard_LRS
# output containerName variable from template
- run: echo ${{ steps.deploy.outputs.containerName }}
Observação
Em vez disso, você pode especificar um arquivo de parâmetros de formato JSON na ação De implantação do ARM (exemplo: .azuredeploy.parameters.json
).
A primeira seção do arquivo de fluxo de trabalho inclui:
- nome: Nome do fluxo de trabalho.
- Ativado: o nome dos eventos do GitHub que acionam o fluxo de trabalho. O fluxo de trabalho é acionado quando há um evento no qual efetua-se o push na ramificação principal, que modifica pelo menos um dos dois arquivos especificados. Os dois arquivos correspondem ao arquivo de fluxo de trabalho e ao arquivo de modelo.
- Selecione Confirmar início.
- Selecione Confirmar diretamente na ramificação principal.
- Selecione Confirmar novo arquivo (ou Confirmar alterações).
Como o fluxo de trabalho está configurado para ser acionado pelo arquivo de fluxo de trabalho ou pelo arquivo de modelo que está sendo atualizado, ele é iniciado logo após você confirmar as alterações.
Verificar status do fluxo de trabalho
- Selecione a guia Actions. Você verá listado um fluxo de trabalho Criar deployStorageAccount.yml. O fluxo de trabalho leva de um a dois minutos para ser executado.
- Selecione o fluxo de trabalho para abri-lo.
- Selecione Executar implantação do ARM no menu para verificar a implantação.
Limpar os recursos
Quando seu grupo de recursos e repositório não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos e o repositório GitHub.