Vad är Bicep?

Bicep är ett domänspecifikt språk (DSL) som använder deklarativ syntax för att distribuera Azure-resurser. Det ger koncis syntax, tillförlitlig typsäkerhet och stöd för återanvändning av kod. Vi tror att Bicep erbjuder den bästa redigeringsupplevelsen för dina infrastruktur som kod-lösningar i Azure.

Du kan använda Bicep i stället för JSON för att utveckla Azure Resource Manager mallar (ARM-mallar). JSON-syntaxen för att skapa en ARM-mall kan vara utförlig och kräva komplicerade uttryck. Bicep-syntaxen minskar komplexiteten och förbättrar utvecklingsupplevelsen. Bicep är en transparent abstraktion över ARM-mall-JSON och förlorar inte någon av funktionerna i JSON-mallen. Under distributionen konverterar Bicep CLI en Bicep-fil till ARM-mall-JSON.

Bicep är inte avsett som ett allmänt programmeringsspråk för att skriva program. En Bicep-fil deklarerar Azure-resurser och resursegenskaper utan att behöva skriva en sekvens med programmeringskommandon för att skapa resurser.

Resurstyper, API-versioner och egenskaper som är giltiga i en ARM-mall är giltiga i en Bicep-fil.

Om du vill spåra statusen för Bicep-arbetet kan du gå till lagringsplatsen för Bicep-projektet.

Mer information om Bicep finns i följande video.

Kom igång

Så här börjar du med Bicep:

  1. Installera verktygen. Se Konfigurera utvecklings- och distributionsmiljöer för Bicep. Eller så kan du använda VS Code Devcontainer/Codespaces-lagringsplatsen för att få en förkonfigurerad redigeringsmiljö.
  2. Slutför snabbstarten och Microsoft Learn Bicep-modulerna.

Om du vill dekompilera en befintlig ARM-mall till Bicep, se Decompiling ARM template JSON to Bicep.

Mer information om de resurser som är tillgängliga i bicep-filen finns i Resursreferens för Bicep

Bicep-exempel finns i Bicep-GitHub lagringsplatsen.

Fördelar med Bicep jämfört med andra verktyg

Bicep ger följande fördelar jämfört med andra alternativ:

  • Stöd för alla resurstyper och API-versioner: Bicep stöder omedelbart alla förhandsversioner och GA-versioner för Azure-tjänster. Så snart en resursprovider introducerar nya resurstyper och API-versioner kan du använda dem i din Bicep-fil. Du behöver inte vänta på att verktygen ska uppdateras innan du använder de nya tjänsterna.
  • Enkel syntax: Jämfört med motsvarande JSON-mall är Bicep-filerna mer koncisa och lättare att läsa. Bicep kräver inga tidigare kunskaper om programmeringsspråk. Bicep-syntaxen är deklarativ och anger vilka resurser och resursegenskaper som du vill distribuera.
  • Redigeringsupplevelse: När du använder VS Code för att skapa bicep-filer får du en förstklassig redigeringsupplevelse. Redigeraren innehåller omfattande typsäkerhet, IntelliSense och syntaxvalidering.
  • Modularitet: Du kan dela upp bicep-koden i hanterbara delar med hjälp av moduler. Modulen distribuerar en uppsättning relaterade resurser. Med moduler kan du återanvända kod och förenkla utvecklingen. Lägg till modulen i en Bicep-fil varje gång du behöver distribuera resurserna.
  • Integrering med Azure-tjänster: Bicep är integrerat med Azure-Azure Policy, mallspecifikter och skisser.
  • Inga tillståndsfiler att hantera: Alla tillstånd lagras i Azure. Användare kan samarbeta och vara förtroende för att uppdateringarna hanteras som förväntat. Använd vad om-åtgärden för att förhandsgranska ändringar innan du distribuerar mallen.
  • Ingen kostnad och öppen källkod: Bicep är helt kostnadsfritt. Du behöver inte betala för premiumfunktioner. Det stöds också av Microsofts support.

Bicep-förbättringar

Bicep erbjuder en enklare och mer koncis syntax jämfört med motsvarande JSON. Du använder inte uttryck med hakparenteser. [...] I stället anropar du funktioner direkt och hämtar värden från parametrar och variabler. Du ger varje distribuerad resurs ett symboliskt namn, vilket gör det enkelt att referera till resursen i mallen.

Till exempel returnerar följande JSON ett utdatavärde från en resursegenskap.

"outputs": {
  "hostname": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
    },
}

Det motsvarande utdatauttrycket i Bicep är lättare att skriva. I följande exempel returneras samma egenskap med hjälp av det symboliska namnet publicIP för en resurs som definieras i mallen:

output hostname string = publicIP.properties.dnsSettings.fqdn

En fullständig jämförelse av syntaxen finns i Jämföra JSON och Bicep för mallar.

Bicep hanterar automatiskt beroenden mellan resurser. Du kan undvika att dependsOn ange när det symboliska namnet på en resurs används i en annan resursdeklaration.

Strukturen för Bicep-filen är mer flexibel än JSON-mallen. Du kan deklarera parametrar, variabler och utdata var som helst i filen. I JSON måste du deklarera alla parametrar, variabler och utdata i motsvarande avsnitt i mallen.

Vanliga frågor

Varför ska jag skapa ett nytt språk i stället för att använda ett befintligt?

Du kan tänka på Bicep som en revision av det befintliga ARM-mallspråket i stället för ett nytt språk. Syntaxen har ändrats, men huvudfunktionerna och körningen förblir desamma.

Innan vi utvecklade Bicep övervägde vi att använda ett befintligt programmeringsspråk. Vi har bestämt att det skulle bli lättare för målgruppen att lära sig Bicep i stället för att komma igång med ett annat språk.

Varför inte fokusera din energi på Terraform eller andra tjänster för infrastruktur från tredje part som kod?

Olika användare föredrar olika konfigurationsspråk och verktyg. Vi vill se till att alla dessa verktyg ger en bra upplevelse i Azure. Bicep är en del av det arbetet.

Om du är nöjd med Terraform finns det ingen anledning att byta. Microsoft strävar efter att se till att Terraform på Azure är det bästa möjliga.

För kunder som har valt ARM-mallar tror vi att Bicep förbättrar redigeringen. Bicep hjälper också till med övergången för kunder som inte har infört infrastruktur som kod.

Är den redo för produktionsanvändning?

Ja. Från och med version 0.3 stöds Bicep av Microsofts supportplaner. Bicep har paritet med vad som kan åstadkommas med ARM-mallar. Det finns inga större ändringar som är planerade för närvarande, men det är möjligt att vi behöver skapa större ändringar i framtiden.

Är Bicep endast för Azure?

För närvarande planerar vi inte att Bicep ska utökas bortom Azure. Vi vill ha fullständigt stöd för Azure och optimera distributionsupplevelsen.

För att uppfylla det målet krävs att du arbetar med vissa API:er som ligger utanför Azure. Vi förväntar oss att tillhandahålla utökningspunkter för dessa scenarier.

Vad händer med mina befintliga ARM-mallar?

De fortsätter att fungera precis som de alltid har gjort. Du behöver inte göra några ändringar. Vi fortsätter att stödja det underliggande JSON-språket för ARM-mallar. Bicep-filer kompileras till JSON och JSON skickas till Azure för distribution.

När du är klar kan du dekompilera JSON-filerna till Bicep.

Kan jag använda Bicep för att distribuera till Azure Stack Hub?

Ja, du kan använda Bicep för Azure Stack Hub distributioner, men observera att Bicep kan visa typer som ännu inte är tillgängliga i Azure Stack Hub. Du kan visa en uppsättning exempel i snabbstartsmallen Azure Stack Hub i GitHub lagringsplatsen.

Nästa steg

Kom igång med snabbstarten.