Publicera Bicep-kod från ett distributionsarbetsflöde
När du automatiserar publiceringsprocessen för en mallspecifikation eller en Bicep-modul måste du se till att allt du normalt gör på egen hand kan automatiseras och köras i arbetsflödet. I den här lektionen får du lära dig hur du tillämpar några av de principer som du tidigare har lärt dig när du publicerar mallspecifikationer och Bicep-moduler från ett distributionsarbetsflöde.
Mallspecifikationer och -moduler
Med Bicep kan du enkelt återanvända koden. Två vanliga metoder för att återanvända Bicep-koden mellan distributioner är:
- Mallspecifikationer som är optimerade för distribution av kompletta lösningar. Anta till exempel att du har definierat en uppsättning säkerhetshärdade resurser för att distribuera en fullständig virtuell dator enligt företagets specifikationer. Du kan publicera den här koden som en mallspecifikation. Dina kollegor kan sedan använda mallspecifikationen för att distribuera en komplett virtuell dator, även från Azure Portal.
- Moduler som är utformade för att vara komponenter i andra distributioner. Anta till exempel att du har skapat en Bicep-fil som skapar ett lagringskonto. Du behöver förmodligen lagringskonton i många andra distributioner, så du kan publicera Bicep-filen till ett register och använda den som en modul i organisationens distributioner.
När du bestämmer dig mellan mallspecifikationer och Bicep-moduler är en bra tumregel: om mallen ska distribueras som i hela organisationen passar mallspecifikationerna förmodligen bra. Men om du sannolikt kommer att återanvända den här mallen i flera överordnade mallar kan Bicep-moduler tjäna dina behov bättre.
Verifiera återanvändbar kod i ett arbetsflöde
Till skillnad från vanliga Bicep-distributioner distribuerar du inte resurserna direkt till Azure när du skapar en mallspecifikation eller en modul. I stället publicerar du mallspecifikationen eller modulen. Sedan kan du använda mallspecifikationen eller modulen i en annan distribution. Distributionen distribuerar de resurser som du har definierat. På grund av den här skillnaden kan de sätt som du validerar och testar mallspecifikationerna och Bicep-modulerna på skilja sig från den process som du använder för vanliga Bicep-distributioner.
Det är bra att linting din Bicep-kod. Linter identifierar syntaktiska problem och varnar dig om du inte följer de rekommenderade metoderna.
Utöver linting kan du överväga att testa mallspecifikationer och -moduler med hjälp av preflight-validering. Du kan till och med överväga att distribuera mallspecifikationer och moduler till Azure och testa att de resurser de skapar fungerar som förväntat. Det kan dock vara svårt att köra dessa typer av tester från ett distributionsarbetsflöde av två skäl:
- För validering och distributioner krävs en Azure-miljö för att distribuera resurserna till. Du kan behöva underhålla en dedikerad Azure-prenumeration eller resursgrupp som ska användas för att distribuera och testa dina moduler.
- Många mallspecifikationer och moduler kräver att du anger en uppsättning parametrar. Du kan behöva skapa en testuppsättning med parametrar för mallspecifikationer eller -moduler som ska användas när de distribueras.
Du bör välja om du vill inkludera arbetsflödessteg som distribuerar och testar mallspecifikationer och moduler. I den här Microsoft Learn-utbildningsmodulen skriver vi Bicep-koden men inkluderar inte andra former av testning. Om du vill testa mallspecifikationer och moduler bör du överväga hur du ska distribuera dem till Azure. Fundera också på om du ska använda dedikerade prenumerationer eller resursgrupper för att distribuera resurserna.
Dricks
Vi rekommenderar att du läser Testa din Bicep-kod med hjälp av GitHub Actions för mer information om hur du testar dina Bicep-filer i ett automatiserat arbetsflöde.
Autentisering och auktorisering
När du publicerar mallspecifikationer till Azure själv måste din Microsoft Entra-användare beviljas åtkomst till resursgruppen som innehåller mallspecifikationsresursen. På samma sätt måste din Microsoft Entra-användare ha behörighet att skriva till den Azure Container Registry-instans som din organisation använder för sina Bicep-moduler när du publicerar en Bicep-modul till ett register.
När du arbetar med ett automatiserat distributionsarbetsflöde gäller samma principer. Men eftersom du inte är den person som kör distributionen måste du se till att arbetsflödets identitet ges lämplig åtkomst till resursgruppen för publicering av mallspecifikationen eller till containerregistret för publicering av moduler.
Dricks
När du publicerar en modul i ett register behöver arbetsbelastningsidentiteten som kör distributionen förmodligen inte mycket behörighet. När ditt register använder Microsoft Entra-auktorisering behöver arbetsbelastningsidentiteten endast AcrPush-behörigheten i registret.
Överväg att använda säkerhetsprincipen för lägsta behörighet. Ange arbetsflödets identitet med endast åtkomst till containerregistret och inte till en resursgrupp eller prenumeration.
Publicera mallspecifikationer och moduler från ett arbetsflöde
När du publicerar en mallspecifikation från din egen dator med hjälp av Azure CLI använder du ett kommando som liknar följande:
az ts create \
--name StorageWithoutSAS \
--location westus3 \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1 \
--template-file main.bicep
Du kan konvertera det här Azure CLI-kommandot till ett GitHub Actions-steg:
- name: Publish template spec
uses: azure/cli@v1
with:
inlineScript: |
az ts create \
--name StorageWithoutSAS \
--location westus3 \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1 \
--template-file main.bicep
Arbetsflödet använder samma process för att publicera mallspecifikationen som du skulle använda själv.
På samma sätt använder du ett kommando som liknar följande när du publicerar en Bicep-modul från din egen dator med hjälp av Azure CLI:
az bicep publish \
--file module.bicep \
--target 'br:toycompany.azurecr.io/mymodules/myqueue:2'
Du kan också konvertera det här Azure CLI-kommandot till ett GitHub Actions-steg:
- name: Publish Bicep module
uses: azure/cli@v1
with:
inlineScript: |
az bicep publish \
--file module.bicep \
--target 'br:toycompany.azurecr.io/mymodules/myqueue:2'
Dricks
I det här exemplet är Bicep-registrets värdnamn (toycompany.azurecr.io
) inbäddat i arbetsflödets stegdefinition. Det här är ingen bra idé. Du kan använda miljövariabler för att ange konfigurationsinställningar som detta. Du får se hur detta fungerar senare i den här Microsoft Learn-utbildningsmodulen.
Inom kort får du se hur du kan publicera en mallspecifikation från ett arbetsflöde med hjälp av stegen som beskrivs i den här lektionen.
Använda en modul eller mallspecifikation
I tidigare Microsoft Learn-utbildningsmoduler lärde du dig hur du distribuerar de resurser som definierats i mallspecifikationer och hur du använder Bicep-moduler som lagras i register. Oavsett om du publicerar mallspecifikationer och moduler manuellt eller från ett distributionsarbetsflöde använder och distribuerar du dem på samma sätt.
Du kan till exempel distribuera en mallspecifikation eller en Bicep-fil till en resursgrupp med hjälp az deployment group create
av Azure CLI-kommandot eller cmdleten New-AzResourceGroupDeployment
med Azure PowerShell.