Distribuera ARM-mallar med hjälp av GitHub Actions
GitHub Actions är en uppsättning funktioner i GitHub för att automatisera dina arbetsflöden för programvaruutveckling på samma plats som du lagrar kod och samarbetar med pull-begäranden och problem.
Använd åtgärden Distribuera Azure Resource Manager-mall för att automatisera distributionen av en Azure Resource Manager-mall (ARM-mall) till Azure.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Ett GitHub-konto. Om du inte har ett sådant kan du registrera dig utan kostnad.
- En GitHub-lagringsplats för att lagra dina Resource Manager-mallar och dina arbetsflödesfiler. Information om hur du skapar en finns i Skapa en ny lagringsplats.
Översikt över arbetsflödesfil
Ett arbetsflöde definieras av en YAML-fil (.yml) i /.github/workflows/
sökvägen på lagringsplatsen. Den här definitionen innehåller de olika steg och parametrar som utgör arbetsflödet.
Filen har två avsnitt:
Avsnitt | Uppgifter |
---|---|
Autentisering | 1. Generera autentiseringsuppgifter för distribution. |
Distribuera | 1. Distribuera Resource Manager-mallen. |
Generera autentiseringsuppgifter för distribution
Om du vill använda Azure Login-åtgärden med OIDC måste du konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program eller en användartilldelad hanterad identitet.
Alternativ 1: Microsoft Entra-program
- Skapa ett Microsoft Entra-program med tjänstens huvudnamn genom att Azure Portal, Azure CLI eller Azure PowerShell.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela tjänstens huvudnamn en lämplig roll genom att Azure Portal, Azure CLI eller Azure PowerShell.
- Konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
Alternativ 2: Användartilldelad hanterad identitet
- Skapa en användartilldelad hanterad identitet.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela en lämplig roll till din användartilldelade hanterade identitet.
- Konfigurera en federerad identitetsautentiseringsuppgift för en användartilldelad hanterad identitet för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
Konfigurera GitHub-hemligheterna
Du måste ange programmets klient-ID, katalog-ID (klient)-ID och prenumerations-ID för inloggningsåtgärden. Dessa värden kan antingen anges direkt i arbetsflödet eller lagras i GitHub-hemligheter och refereras till i arbetsflödet. Att spara värdena som GitHub-hemligheter är det säkrare alternativet.
Gå till din lagringsplats i GitHub.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
Välj Ny lagringsplatshemlighet.
Kommentar
Om du vill förbättra arbetsflödets säkerhet på offentliga lagringsplatser använder du miljöhemligheter i stället för lagringsplatshemligheter. Om miljön kräver godkännande kan ett jobb inte komma åt miljöhemligheter förrän en av de nödvändiga granskarna godkänner det.
Skapa hemligheter för
AZURE_CLIENT_ID
,AZURE_TENANT_ID
ochAZURE_SUBSCRIPTION_ID
. Kopiera dessa värden från ditt Microsoft Entra-program eller användartilldelade hanterade identiteter för dina GitHub-hemligheter:GitHub-hemlighet Microsoft Entra-program eller användartilldelad hanterad identitet AZURE_CLIENT_ID Client ID AZURE_SUBSCRIPTION_ID Prenumerations-ID:t AZURE_TENANT_ID Katalog-ID (klientorganisation) Kommentar
Av säkerhetsskäl rekommenderar vi att du använder GitHub Secrets i stället för att skicka värden direkt till arbetsflödet.
Lägg till Resource Manager-mall
Lägg till en Resource Manager-mall till din GitHub-lagringsplats. Den här mallen skapar ett lagringskonto.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Du kan placera filen var som helst på lagringsplatsen. Arbetsflödesexemplet i nästa avsnitt förutsätter att mallfilen heter azuredeploy.json och lagras i roten på lagringsplatsen.
Skapa arbetsflöde
Arbetsflödesfilen måste lagras i mappen .github/workflows i roten på lagringsplatsen. Filtillägget för arbetsflödet kan vara antingen .yml eller .yaml.
- På din GitHub-lagringsplats väljer du Åtgärder på den översta menyn.
- Välj Nytt arbetsflöde.
- Välj konfigurera ett arbetsflöde själv.
- Byt namn på arbetsflödesfilen om du föredrar ett annat namn än main.yml. Till exempel: deployStorageAccount.yml.
- Ersätt innehållet i YML-filen med följande:
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 }}
Kommentar
Du kan ange en JSON-formatparametrarfil i stället i åtgärden ARM Deploy (exempel: .azuredeploy.parameters.json
).
Det första avsnittet i arbetsflödesfilen innehåller:
- name: Namnet på arbetsflödet.
- on: Namnet på de GitHub-händelser som utlöser arbetsflödet. Arbetsflödet utlöses när det finns en push-händelse på huvudgrenen, som ändrar minst en av de två angivna filerna. De två filerna är arbetsflödesfilen och mallfilen.
- Välj Start commit (Starta incheckning).
- Välj Checka in direkt till huvudgrenen.
- Välj Checka in ny fil (eller Genomför ändringar).
Eftersom arbetsflödet har konfigurerats för att utlösas av antingen arbetsflödesfilen eller mallfilen som uppdateras, startar arbetsflödet direkt efter att du har checkat in ändringarna.
Kontrollera arbetsflödesstatus
- Välj fliken Åtgärder . Du ser arbetsflödet Skapa deployStorageAccount.yml . Det tar 1–2 minuter att köra arbetsflödet.
- Välj arbetsflödet för att öppna det.
- Välj Kör ARM-distribution på menyn för att verifiera distributionen.
Rensa resurser
När resursgruppen och lagringsplatsen inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen och GitHub-lagringsplatsen.