Dela via


Bicep CLI-kommandon

I den här artikeln beskrivs de kommandon som du kan använda i Bicep CLI. Du kan köra dessa kommandon med hjälp av Azure CLI eller genom att direkt anropa Bicep CLI-kommandon. Varje metod kräver en distinkt installationsprocess. Mer information om installationer finns i Azure CLI och Azure PowerShell.

Den här vägledningen visar hur du kör kommandona i Azure CLI. När du kör kommandon i Azure CLI startar du dem med az. Om du inte använder Azure CLI kör du kommandona utan az i början av varje. Blir till exempel , och blir .

build

Kommandot build konverterar en Bicep fil till en JSON-Azure Resource Manager-mall (ARM-mall). Normalt behöver du inte köra det här kommandot eftersom det körs automatiskt när du distribuerar en Bicep fil. Kör den manuellt när du vill se JSON ARM-mallen som skapas från din Bicep-fil.

Om du använder någon av följande Bicep funktioner aktiveras automatiskt språkversion 2.0-kodgenerering:

  • användardefinierade typer
  • användardefinierade funktioner
  • kompilera tidsimporter
  • experimentella funktioner

I följande exempel konverteras en Bicep fil med namnet main.bicep till en ARM-mall med namnet main.json. Den nya filen skapas i samma katalog som den Bicep filen:

bicep build main.bicep

I nästa exempel sparas main.json till en annan katalog:

bicep build main.bicep --outdir c:\jsontemplates

I följande exempel anges namnet och platsen för filen som ska skapas:

bicep build main.bicep --outfile c:\jsontemplates\azuredeploy.json

Om du vill skriva ut filen till använder du:

bicep build main.bicep --stdout

Om din Bicep fil innehåller en modul som refererar till ett externt register anropar kommandot build automatiskt restore. Kommandot hämtar filen från registret och lagrar den i den lokala cachen.

Kommentar

Kommandot uppdaterar inte cacheminnet. Mer information finns i Återställa.

Om du vill förhindra automatisk återställning använder du växeln :

bicep build --no-restore <bicep-file>

Om du vill använda växeln --no-restore måste du ha Bicep CLI version 0.4.X eller senare.

Byggprocessen med växeln misslyckas om en av de externa modulerna inte redan är cachelagrad:

The module with reference "br:exampleregistry.azurecr.io/bicep/modules/storage:v1" hasn't been restored.

När du får det här felet kör du antingen kommandot utan växeln eller kör först.

build-params

Kommandot skapar en fil i en JSON-parameterfil:

bicep build-params params.bicepparam

Det här kommandot konverterar en params.bicepparam-parameterfil till en params.json JSON-parameterfil.

Dekompilera

Kommandot decompile konverterar en JSON ARM-mall till en Bicep fil:

bicep decompile main.json

Det här kommandot skapar en fil med namnet main.bicep i samma katalog som main.json. Om main. bicep finns i samma katalog använder du växeln --force för att skriva över den befintliga Bicep filen.

Mer information om hur du använder det här kommandot finns i Decompile JSON ARM-mall till Bicep.

decompile-params

Kommandot dekompileras en JSON-parameterfil till en parameterfil.

bicep decompile-params azuredeploy.parameters.json --bicep-file ./dir/main.bicep

Det här kommandot dekompilerar en azuredeploy.parameters.json-parameterfil till en azuredeploy.parameters.bicepparam-fil . Använd --bicep-file för att ange sökvägen till filen Bicep (i förhållande till filen .bicepparam) som refereras i deklarationen using.

format

Kommandot format formaterar en Bicep fil så att den följer de rekommenderade formatkonventionerna. Se det som en kodformaterare eller "snyggare" för dina Bicep filer. Den har samma funktion som genvägen SHIFT+ALT+F i Visual Studio Code.

bicep format main.bicep

generate-params

Kommandot generate-params skapar en parameterfil från den angivna Bicep-filen och uppdaterar den om det finns en befintlig parameterfil.

bicep generate-params main.bicep --output-format bicepparam --include-params all

Det här kommandot skapar en Bicep parameterfil med namnet main.bicepparam. Parameterfilen innehåller alla parametrar i filen Bicep, oavsett om den är konfigurerad med standardvärden eller inte.

bicep generate-params main.bicep --outfile main.parameters.json

Det här kommandot skapar en parameterfil med namnet main.parameters.json. Parameterfilen innehåller endast parametrarna utan standardvärden som konfigurerats i filen Bicep.

installera

Kommandot install lägger till Bicep CLI i din lokala miljö och är endast tillgängligt via Azure CLI. Mer information finns i Installera Bicep verktyg.

Om du vill installera den senaste versionen använder du:

N/A

Om du vill installera en viss version använder du följande kommando:

N/A

jsonrpc

Kommandot jsonrpc kör Bicep CLI med ett JSON-RPC-gränssnitt. Med det här gränssnittet kan du interagera programmatiskt med strukturerade utdata. Du kan också undvika fördröjningar vid kallstart vid kompilering av flera filer. Den här konfigurationen stöder att skapa bibliotek för att interagera med Bicep filer programmatiskt på icke-.NET språk.

Trådformatet för att skicka och ta emot indata och utdata är sidhuvudavgränsat. Den använder följande struktur, där och representerar vagnretur och radmatningstecken:

Content-Length: <length>\r\n\r\n<message>\r\n\r\n
  • är längden på strängen , inklusive den avslutande .
  • är det råa JSON-meddelandet.

Till exempel:

Content-Length: 72\r\n\r\n{"jsonrpc": "2.0", "id": 0, "method": "bicep/version", "params": {}}\r\n\r\n

Följande metoder är tillgängliga via JSON-RPC-gränssnittet:

  • bicep/format

    Formaterar en Bicep fil.

    • Begäran:

      {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "bicep/format",
        "params": {
          "path": "/path/to/file.bicep"
        }
      }
      
    • Svaret:

      {
        "jsonrpc": "2.0",
        "id": 1,
        "result": {
          "success": true,
          "diagnostics": [],
          "contents": "param foo string\n\nresource storage 'Microsoft.Storage/storageAccounts@2025-01-01' = {\n  name: 'mystorageaccount'\n  location: 'East US'\n}\n"
        }
      }
      

      Vid lyckat resultat returneras "success": true, med innehåll som innehåller den formaterade Bicep källan. Vid fel, med att beskriva felet.

  • bicep/version

    Returnerar versionen av Bicep CLI.

    • Begäran:

      {
        "jsonrpc": "2.0",
        "id": 0,
        "method": "bicep/version",
        "params": {}
      }
      
    • Svaret:

      {
        "jsonrpc": "2.0",
        "id": 0,
        "result": {
          "version": "0.24.211"
        }
      }
      

Tillgängliga metoder och begärande- och svarsorgan finns i ICliJsonRpcProtocol.cs. Ett exempel på hur du upprättar en JSONRPC-anslutning och interagerar med Bicep filer programmatiskt med hjälp av Node finns i jsonrpc.test.ts.

Användning för namngivet rör

Använd följande syntax för att ansluta till en befintlig namngiven pipe som en JSONRPC-klient:

bicep jsonrpc --pipe <named_pipe>`

är en befintlig namngiven pipe som JSONRPC-klienten ska anslutas till.

Så här ansluter du till ett namngivet rör i macOS eller Linux:

bicep jsonrpc --pipe /tmp/bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock

Så här ansluter du till ett namngivet rör på Windows:

bicep jsonrpc --pipe \\.\pipe\\bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock`

Fler exempel finns i C# och node.js.

Användning för TCP-socket

Använd följande syntax för att ansluta till en befintlig TCP-socket som en JSONRPC-klient:

bicep jsonrpc --socket <tcp_socket>

är det socketnummer som JSONRPC-klienten ansluter till.

Så här ansluter du till en TCP-socket:

bicep jsonrpc --socket 12345

Användning för stdin och stdout

Om du vill köra JSONRPC-gränssnittet använder du följande syntax. Använd och för meddelanden:

bicep jsonrpc --stdio

ludd

Kommandot lint returnerar felen och linterregeln överträdelser av en Bicep fil.

bicep lint main.bicep

Om din Bicep fil innehåller en modul som refererar till ett externt register anropar kommandot lint automatiskt restore. Kommandot hämtar filen från registret och lagrar den i den lokala cachen.

Kommentar

Kommandot uppdaterar inte cacheminnet. Mer information finns i Återställa.

Om du vill förhindra automatisk återställning använder du växeln :

bicep lint --no-restore <bicep-file>

Lintprocessen med växeln misslyckas om en av de externa modulerna inte redan är cachelagrad:

The module with reference "br:exampleregistry.azurecr.io/bicep/modules/storage:v1" has not been restored.

När du får det här felet kör du antingen kommandot utan växeln eller kör först.

listversioner

Kommandot list-versions returnerar alla tillgängliga versioner av Bicep CLI. Använd det här kommandot för att se om du vill uppgradera eller installera en ny version. Det här kommandot är endast tillgängligt via Azure CLI.

N/A

publicera

Kommandot lägger till en modul i ett register. Det Azure containerregistret måste finnas och kontopublicering till registret måste ha rätt behörigheter. Mer information om hur du konfigurerar ett modulregister finns i Använd privat register för Bicep moduler. För att kunna publicera en modul måste kontot ha rätt profil och behörighet för att få åtkomst till registret. Du kan konfigurera profil- och autentiseringsprioritet för autentisering till registret i Bicep konfigurationsfilen.

När du har publicerat filen i registret kan du referera till den i en modul.

Du måste ha Bicep CLI version 0.14.X eller senare för att kunna använda kommandot publish och parametern --documentationUri/-d.

Om du vill publicera en modul till ett register använder du:

bicep publish <bicep-file> --target br:<registry-name>.azurecr.io/<module-path>:<tag> --documentationUri <documentation-uri>

Till exempel:

bicep publish storage.bicep --target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 --documentationUri https://www.contoso.com/exampleregistry.html

Kommandot känner inte igen alias som anges i en bicepconfig.json fil. Ange den fullständiga modulsökvägen.

Varning

Publicering till samma mål skriver över den gamla modulen. Öka versionen vid uppdatering.

återställ

När Bicep-filen använder moduler som du publicerar i ett register hämtar kommandot restore kopior av alla moduler som krävs från registret. Den lagrar dessa kopior i en lokal cache. En Bicep fil kan bara skapas när de externa filerna är tillgängliga i den lokala cachen. Normalt är det inte nödvändigt att köra återställning eftersom den utlöses automatiskt av byggprocessen.

Om du vill återställa externa moduler till den lokala cachen måste kontot ha rätt profil och behörigheter för att få åtkomst till registret. Du kan konfigurera profile och autentiseringsprioritet för autentisering till registret i Bicep konfigurationsfilen.

Om du vill använda kommandot restore måste du ha Bicep CLI version 0.14.X eller senare.

Om du vill återställa de externa modulerna för en fil manuellt använder du:

bicep restore <bicep-file>

Den Bicep fil som du anger är den fil som du vill distribuera. Den måste innehålla en modul som länkar till ett register. Du kan till exempel återställa följande fil:

module stgModule 'br:exampleregistry.azurecr.io/bicep/modules/storage:v1' = {
  name: 'storageDeploy'
  params: {
    storagePrefix: 'examplestg1'
  }
}

Du hittar den lokala cachen i:

  • På Windows

    %USERPROFILE%\.bicep\br\<registry-name>.azurecr.io\<module-path\<tag>
    
  • I Linux

    /home/<username>/.bicep
    
  • På Mac

    ~/.bicep
    

Kommandot uppdaterar inte cacheminnet om en modul redan har cachelagrats. Om du vill uppdatera cacheminnet kan du antingen ta bort modulsökvägen från cacheminnet eller använda växeln med kommandot .

snapshot

Med hjälp av Bicep CLI v0.41.2 eller senare kan du använda kommandot snapshot för att skapa en normaliserad, deterministisk representation av en Bicep distribution från en .bicepparam fil. Du kan jämföra den här ögonblicksbilden med senare ögonblicksbilder för att förstå vilka ändringar en refaktor skulle orsaka, utan att distribuera något för att Azure. Det här kommandot är särskilt användbart för:

  • Visuellaiff: Om du ser exakt hur en refaktor (som att flytta kod till en modul) ändrar de underliggande resursdefinitionerna.
  • Komplexa uttryck: Förstå vad en komplex sträng eller variabel faktiskt utvärderas till före distributionen.
  • CI/CD-validering: Fånga automatiskt oavsiktliga ändringar i infrastrukturlogik under pull-begäranden.

Skapa en ögonblicksbild

Det här kommandot genererar en fil. Den här filen är "normaliserad", vilket innebär att den tar bort brus som modulgränser så att du kan fokusera på själva resurserna.

bicep snapshot --mode overwrite <bicep-param-file>

Följande JSON-fil visar ett exempel på en ögonblicksbild:

{
  "predictedResources": [
    {
      "id": "[format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/stmyappstorage001', subscription().subscriptionId, resourceGroup().name)]",
      "type": "Microsoft.Storage/storageAccounts",
      "name": "stmyappstorage001",
      "apiVersion": "2025-01-01",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    }
  ],
  "diagnostics": []
}

Verifiera ändringar

När du har skapat en ögonblicksbild kör du kommandot i valideringsläge. Den jämför din aktuella Bicep kod med den sparade ögonblicksbilden och visar ett visuellt diff, ungefär som kommandot what-if men helt lokalt.

bicep snapshot --mode validate <bicep-param-file>

Ett exempel på utdata ser ut så här:

PS C:\bicep> bicep snapshot --mode validate main.bicepparam
Snapshot validation failed. Expected no changes, but found the following:

Scope: <unknown>

  ~ [format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/stmyappstorage001', subscription().subscriptionId, resourceGroup().name)]
    ~ apiVersion: "2025-01-01" => "2025-06-01"
    ~ sku.name:   "Standard_LRS" => "Standard_GRS"

"Valideringen av ögonblicksbilden misslyckades" anger skillnader mellan de två ögonblicksbilderna.

Bicep CLI-ögonblicksbild och Vad händer om har dessa skillnader:

Feature bicep snapshot az deployment group what-if
Avrättning Endast lokalt (offline) Molnbaserad (online)
Jämförelse Jämför kod jämfört med en sparad fil Jämför kod jämfört med live-Azure tillstånd
Hastighet Extremt snabb Långsammare (kräver API-anrop)
Användningsfall Refaktorisering och logiktestning Slutlig kontroll före distribution

Ange kontext

När du kör Bicep ögonblicksbild utför CLI en lokal utvärdering av koden. Eftersom den inte pratar med Azure kan den inte "fråga" molnet om ditt prenumerations-ID eller det aktuella resursgruppsnamnet.

Om din kod använder miljöfunktioner (t.ex . ) misslyckas ögonblicksbilden eller returnerar platshållare om du inte anger specifik kontext via CLI-argument.

Om du vill simulera en verklig distributionsmiljö kan du skicka följande flaggor:

Argument Avsikt Exempelvärde
--subscription-id Ersätter värdet som returneras av 00000000-1111-2222-3333-444444444444
--resource-group Ersätter värdet som returneras av my-production-rg
--location Anger standardplatsen för westeurope
--tenant-id Ersätter värdet som returneras av 72f988bf-86f1-41af-91ab-2d7cd011db47
--management-group Ersätter värdet som returneras av my-corp-mg
bicep snapshot main.bicepparam \
  --subscription-id 00000000-0000-0000-0000-000000000000 \
  --resource-group my-temp-rg \
  --location eastus \
  --mode overwrite

uppgradera

Kommandot uppdaterar den installerade versionen med den senaste versionen. Det här kommandot är endast tillgängligt via Azure CLI.

N/A

version

Kommandot returnerar den installerade versionen:

bicep --version

Om du inte har installerat Bicep CLI visas ett felmeddelande om att Bicep CLI inte hittades.

Kommandot visar versionsnumret:

Bicep CLI version 0.29.45 (57a44c0230)

Nästa steg

Mer information om hur du distribuerar en Bicep-fil finns i: