Så här distribuerar du resurser med Bicep och Azure CLI

Den här artikeln förklarar hur du använder Azure CLI med Bicep-filer för att distribuera dina resurser till Azure. Om du inte är bekant med begreppen för att distribuera och hantera dina Azure-lösningar kan du gå till Bicep-översikt.

Förutsättningar

Du behöver en Bicep-fil för att distribuera. Filen måste vara lokal.

Du behöver Azure CLI och vara ansluten till Azure:

  • Installera Azure CLI-kommandon på den lokala datorn. Om du vill distribuera Bicep-filer behöver du Azure CLI version 2.20.0 eller senare.
  • Anslut till Azure med hjälp av az login. Om du har flera Azure-prenumerationer kan du också behöva köra az account set.

Exempel för Azure CLI är skrivna för bash gränssnittet. Om du vill köra det Windows PowerShell i en kommandotolk eller i kommandotolken kan du behöva ändra element i skriptet.

Om du inte har Installerat Azure CLI kan du använda Azure Cloud Shell. Mer information finns i Distribuera Bicep-filer från Azure Cloud Shell.

Distributionsomfång

Du kan rikta distributionen till en resursgrupp, prenumeration, hanteringsgrupp eller klientorganisation. Beroende på distributionens omfattning använder du olika kommandon.

För varje omfång måste den användare som distribuerar Bicep-filen ha de behörigheter som krävs för att skapa resurser.

Distribuera en lokal Bicep-fil

Du kan distribuera en Bicep-fil från din lokala dator eller en som lagras externt. I det här avsnittet beskrivs hur du distribuerar en lokal Bicep-fil.

Om du distribuerar till en resursgrupp som inte finns skapar du resursgruppen. Namnet på resursgruppen får bara innehålla alfanumeriska tecken, punkter, understreck, bindestreck och parenteser. Det kan vara upp till 90 tecken. Namnet får inte sluta inom en punkt.

az group create --name ExampleGroup --location "Central US"

Om du vill distribuera en lokal Bicep-fil använder --template-file du parametern i distributionskommandot. I följande exempel visas också hur du anger ett parametervärde.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file <path-to-bicep> \
  --parameters storageAccountType=Standard_GRS

Det kan ta några minuter att slutföra distributionen. När den är klar visas ett meddelande som innehåller resultatet:

"provisioningState": "Succeeded",

Distribuera bicep-fjärrfil

Azure CLI stöder för närvarande inte distribution av bicep-fjärrfiler. Använd Bicep CLI för att kompilera Bicep-filen till en JSON-mall och läs sedan in JSON-filen till fjärrplatsen.

Parametrar

Om du vill skicka parametervärden kan du använda antingen infogade parametrar eller en parameterfil.

Infogade parametrar

Ange värdena i för att skicka infogade parameters parametrar. Om du till exempel vill skicka en sträng och matris till en Bicep-fil i ett Bash-gränssnitt använder du:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters exampleString='inline string' exampleArray='("value1", "value2")'

Om du använder Azure CLI med Windows kommandotolk (CMD) eller PowerShell skickar du matrisen i formatet: exampleArray="['value1','value2']" .

Du kan också hämta innehållet i filen och ange innehållet som en infogade parameter.

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json

Att hämta ett parametervärde från en fil är användbart när du behöver ange konfigurationsvärden. Du kan till exempel ange cloud-init-värden för en virtuell Linux-dator.

Formatet arrayContent.json är:

[
    "value1",
    "value2"
]

Om du till exempel vill skicka in ett objekt för att ange taggar använder du JSON. Bicep-filen kan till exempel innehålla en parameter som den här:

    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Cost Center": "IT Department"
      }
    }

I det här fallet kan du skicka in en JSON-sträng för att ange parametern enligt följande Bash-skript:

tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"

Använd dubbla citattecken runt den JSON som du vill skicka till objektet.

Du kan använda en variabel som innehåller parametervärdena. I Bash anger du variabeln till alla parametervärden och lägger till den i distributionskommandot.

params="prefix=start suffix=end"

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters $params

Men om du använder Azure CLI med Windows kommandotolk (CMD) eller PowerShell anger du variabeln till en JSON-sträng. Undvik citattecknen: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }' .

Parameterfiler

I stället för att skicka parametrar som infogade värden i skriptet, kan det vara lättare att använda en JSON-fil som innehåller parametervärdena. Parameterfilen måste vara en lokal fil. Externa parameterfiler stöds inte med Azure CLI. Bicep-filen använder JSON-parameterfiler.

Mer information om parameterfilen finns i Skapa en parameterfil för Resource Manager.

Om du vill skicka en lokal parameterfil använder @ du för att ange en lokal fil med namnet storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.bicep \
  --parameters @storage.parameters.json

Förhandsgranska ändringar

Innan du distribuerar Bicep-filen kan du förhandsgranska de ändringar som Bicep-filen kommer att göra i din miljö. Använd vad om-åtgärden för att verifiera att Bicep-filen gör de ändringar som du förväntar dig. Vad om validerar även Bicep-filen för fel.

Distribuera mallspecifikter

Azure CLI har för närvarande inte stöd för att skapa mallspecifikter genom att tillhandahålla Bicep-filer. Du kan dock skapa en Bicep-fil med resursen Microsoft.Resources/templateSpecs för att distribuera en mallspecifikt. Exemplet på att skapa mallspecifikt visar hur du skapar en mallspecifikt i en Bicep-fil. Du kan också skapa din Bicep-fil till JSON med hjälp av Bicep CLI och sedan skapa en mallspecifikt med JSON-mallen.

Distributionsnamn

När du distribuerar en Bicep-fil kan du ge distributionen ett namn. Det här namnet kan hjälpa dig att hämta distributionen från distributionshistoriken. Om du inte anger ett namn för distributionen används namnet på Bicep-filen. Om du till exempel distribuerar en Bicep-fil med namnet och main.bicep inte anger ett distributionsnamn får distributionen namnet main .

Varje gång du kör en distribution läggs en post till i resursgruppens distributionshistorik med distributionsnamnet. Om du kör en annan distribution och ger den samma namn ersätts den tidigare posten med den aktuella distributionen. Om du vill behålla unika poster i distributionshistoriken ger du varje distribution ett unikt namn.

Om du vill skapa ett unikt namn kan du tilldela ett slumptal.

deploymentName='ExampleDeployment'$RANDOM

Du kan också lägga till ett datumvärde.

deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")

Om du kör samtidiga distributioner till samma resursgrupp med samma distributionsnamn slutförs bara den senaste distributionen. Alla distributioner med samma namn som inte har slutförts ersätts av den senaste distributionen. Om du till exempel kör en distribution med namnet som distribuerar ett lagringskonto med namnet och samtidigt kör en annan distribution med namnet som distribuerar ett lagringskonto med namnet distribuerar du bara ett newStorage storage1 newStorage storage2 lagringskonto. Det resulterande lagringskontot heter storage2 .

Men om du kör en distribution med namnet som distribuerar ett lagringskonto med namnet och omedelbart efter att den är klar kör du en annan distribution med namnet som distribuerar ett lagringskonto med namnet , så har newStorage storage1 du två newStorage storage2 lagringskonton. Den ena storage1 heter och den andra heter storage2 . Men du har bara en post i distributionshistoriken.

När du anger ett unikt namn för varje distribution kan du köra dem samtidigt utan konflikter. Om du kör en distribution med namnet som distribuerar ett lagringskonto med namnet och samtidigt kör en annan distribution med namnet som distribuerar ett lagringskonto med namnet har du två lagringskonton och två poster i newStorage1 storage1 newStorage2 storage2 distributionshistoriken.

För att undvika konflikter med samtidiga distributioner och för att säkerställa unika poster i distributionshistoriken ger du varje distribution ett unikt namn.

Nästa steg