Resources implementeren met Bicep en Azure CLI
In dit artikel wordt uitgelegd hoe u Azure CLI gebruikt met Bicep-bestanden om uw resources te implementeren in Azure. Als u niet bekend bent met de concepten van het implementeren en beheren van uw Azure-oplossingen, raadpleegt u het Bicep-overzicht.
Vereisten
U hebt een Bicep-bestand nodig om te implementeren. Het bestand moet lokaal zijn.
U hebt Azure CLI nodig en moet zijn verbonden met Azure:
- Installeer Azure CLI-opdrachten op uw lokale computer. Als u Bicep-bestanden wilt implementeren, hebt u Azure CLI versie 2.20.0 of hoger nodig.
- Maak verbinding met Azure met behulp van az login. Als u meerdere Azure-abonnementen hebt, moet u mogelijk ook az account set uitvoeren.
Voorbeelden voor de Azure CLI zijn geschreven voor de bash
-shell. Als u dit voorbeeld wilt uitvoeren in Windows PowerShell of opdrachtprompt, moet u mogelijk elementen van het script wijzigen.
Als u Azure CLI niet hebt geïnstalleerd, kunt u Azure Cloud Shell gebruiken. Zie Bicep-bestanden implementeren vanuit Azure Cloud Shell voor meer informatie.
Vereiste machtigingen
Als u een Bicep-bestand of ARM-sjabloon wilt implementeren, hebt u schrijftoegang nodig voor de resources die u implementeert en moet u zijn gemachtigd om alle bewerkingen op het resourcetype Microsoft.Resources/deployments te kunnen uitvoeren. Als u bijvoorbeeld een virtuele machine wilt implementeren, hebt u de benodigde machtigingen en Microsoft.Resources/deployments/*
machtigingen nodigMicrosoft.Compute/virtualMachines/write
. De wat-als-bewerking heeft dezelfde machtigingsvereisten.
Zie Ingebouwde Azure-rollen voor een lijst met rollen en machtigingen.
Implementatiebereik
U kunt uw implementatie richten op een resourcegroep, abonnement, beheergroep of tenant. Afhankelijk van het bereik van de implementatie gebruikt u verschillende opdrachten.
Als u wilt implementeren in een resourcegroep, gebruikt u az deployment group create:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-bicep>
Als u wilt implementeren in een abonnement, gebruikt u az deployment sub create:
az deployment sub create --location <location> --template-file <path-to-bicep>
Zie Resourcegroepen en resources maken op abonnementsniveau op abonnementsniveau voor meer informatie over implementaties op abonnementsniveau.
Als u wilt implementeren in een beheergroep, gebruikt u az deployment mg create:
az deployment mg create --location <location> --template-file <path-to-bicep>
Zie Resources maken op het niveau van de beheergroep voor meer informatie over implementaties op beheergroepniveau.
Als u wilt implementeren in een tenant, gebruikt u az deployment tenant create:
az deployment tenant create --location <location> --template-file <path-to-bicep>
Zie Resources maken op tenantniveau voor meer informatie over implementaties op tenantniveau.
Voor elk bereik moet de gebruiker die het Bicep-bestand implementeert, over de vereiste machtigingen beschikken om resources te maken.
Lokaal Bicep-bestand implementeren
U kunt een Bicep-bestand implementeren vanaf uw lokale computer of een bestand dat extern is opgeslagen. In deze sectie wordt beschreven hoe u een lokaal Bicep-bestand implementeert.
Als u implementeert in een resourcegroep die niet bestaat, maakt u de resourcegroep. De naam van de resourcegroep kan alleen alfanumerieke tekens, punten, onderstrepingstekens, afbreekstreepjes en haakjes bevatten. Het mag maximaal 90 tekens zijn. De naam kan niet eindigen in een punt.
az group create --name ExampleGroup --location "Central US"
Als u een lokaal Bicep-bestand wilt implementeren, gebruikt u de --template-file
switch in de implementatieopdracht. In het volgende voorbeeld ziet u ook hoe u een parameterwaarde instelt.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-bicep> \
--parameters storageAccountType=Standard_GRS
De implementatie kan enkele minuten duren. Wanneer dit is voltooid, ziet u een bericht met het resultaat:
"provisioningState": "Succeeded",
Extern Bicep-bestand implementeren
Momenteel biedt Azure CLI geen ondersteuning voor het implementeren van externe Bicep-bestanden. U kunt Bicep CLI gebruiken om het Bicep-bestand te bouwen naar een JSON-sjabloon en vervolgens het JSON-bestand naar de externe locatie te laden. Zie Externe ARM JSON-sjablonen implementeren voor meer informatie.
Parameters
Als u parameterwaarden wilt doorgeven, kunt u inlineparameters of een parameterbestand gebruiken. Het parameterbestand kan een Bicep-parametersbestand of een JSON-parametersbestand zijn.
Inlineparameters
Als u inlineparameters wilt doorgeven, geeft u de waarden op in parameters
. Als u bijvoorbeeld een tekenreeks en matrix wilt doorgeven aan een Bicep-bestand in een Bash-shell, gebruikt u:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters exampleString='inline string' exampleArray='["value1", "value2"]'
Als u Azure CLI gebruikt met Windows Command Prompt (CMD) of PowerShell, geeft u de matrix door in de volgende indeling: exampleArray="['value1','value2']"
U kunt ook de inhoud van het bestand ophalen en die inhoud opgeven als een inlineparameter. De bestandsnaam vooraf laten gaan door @.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
Het ophalen van een parameterwaarde uit een bestand is handig wanneer u configuratiewaarden moet opgeven. U kunt bijvoorbeeld cloud-init-waarden opgeven voor een virtuele Linux-machine.
De arrayContent.json-indeling is:
[
"value1",
"value2"
]
Als u bijvoorbeeld een object wilt doorgeven om tags in te stellen, gebruikt u JSON. Uw Bicep-bestand kan bijvoorbeeld een parameter als deze bevatten:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
In dit geval kunt u een JSON-tekenreeks doorgeven om de parameter in te stellen, zoals wordt weergegeven in het volgende Bash-script:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Gebruik dubbele aanhalingstekens rond de JSON die u wilt doorgeven aan het object.
Als u Azure CLI gebruikt met Windows Command Prompt (CMD) of PowerShell, geeft u het object door in de volgende indeling:
$tags="{'Owner':'Contoso','Cost Center':'2345-324'}"
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags=$tags
U kunt een variabele gebruiken om de parameterwaarden te bevatten. Stel in Bash de variabele in op alle parameterwaarden en voeg deze toe aan de implementatieopdracht.
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters $params
Als u echter Azure CLI gebruikt met Windows Command Prompt (CMD) of PowerShell, stelt u de variabele in op een JSON-tekenreeks. Escape de aanhalingstekens: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'
.
De evaluatie van parameters volgt een opeenvolgende volgorde, wat betekent dat als een waarde meerdere keren wordt toegewezen, alleen de laatst toegewezen waarde wordt gebruikt. Om de juiste parametertoewijzing te garanderen, is het raadzaam om het parameterbestand in eerste instantie op te geven en selectief specifieke parameters te overschrijven met behulp van de syntaxis KEY=VALUE . Het is belangrijk te vermelden dat als u een bicepparam
parameterbestand opgeeft, u dit argument slechts één keer kunt gebruiken.
Bicep-parameterbestanden
In plaats van parameters als inlinewaarden in uw script door te geven, is het wellicht gemakkelijker om een parameterbestand te gebruiken, ofwel een Bicep-parametersbestand of een JSON-parameterbestand dat de parameterwaarden bevat. Het parameterbestand moet een lokaal bestand zijn. Externe parameterbestanden worden niet ondersteund met Azure CLI. Zie Het parameterbestand Resource Manager maken voor meer informatie over het parameterbestand.
Met Azure CLI versie 2.53.0 of hoger en Bicep CLI versie 0.22.X of hoger kunt u een Bicep-bestand implementeren met behulp van een Bicep-parameterbestand. Met de using
instructie in het Bicep-parametersbestand hoeft u de --template-file
schakeloptie niet op te geven wanneer u een Bicep-parameterbestand voor de --parameters
switch opgeeft. Als u de --template-file
schakeloptie opneemt, wordt de fout 'Alleen een BICEP-sjabloon is toegestaan met een BICEPPARAM-bestand'.
In het volgende voorbeeld ziet u een parameterbestand met de naam storage.bicepparam. Het bestand bevindt zich in dezelfde map waarin de opdracht wordt uitgevoerd.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
JSON-parameterbestanden
In het volgende voorbeeld ziet u een parameterbestand met de naam storage.parameters.json. Het bestand bevindt zich in dezelfde map waarin de opdracht wordt uitgevoerd.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.bicep \
--parameters '@storage.parameters.json'
Zie Het parameterbestand Resource Manager maken voor meer informatie over het parameterbestand.
U kunt inlineparameters en een locatieparametersbestand gebruiken in dezelfde implementatiebewerking. Zie Parameterprioriteit voor meer informatie.
Voorbeeld van wijzigingen weergeven
Voordat u uw Bicep-bestand implementeert, kunt u een voorbeeld bekijken van de wijzigingen die het Bicep-bestand in uw omgeving aanbrengt. Gebruik de wat-als-bewerking om te controleren of het Bicep-bestand de verwachte wijzigingen aanbrengt. What-if valideert ook het Bicep-bestand op fouten.
Sjabloonspecificaties implementeren
Momenteel biedt Azure CLI geen ondersteuning voor het maken van sjabloonspecificaties door Bicep-bestanden op te geven. U kunt echter een Bicep-bestand maken met de resource Microsoft.Resources/templateSpecs om een sjabloonspecificatie te implementeren. In het voorbeeld sjabloonspecificatie maken ziet u hoe u een sjabloonspecificatie maakt in een Bicep-bestand. U kunt uw Bicep-bestand ook bouwen naar JSON met behulp van de Bicep CLI en vervolgens een sjabloonspecificatie maken met de JSON-sjabloon.
Naam van implementatie
Wanneer u een Bicep-bestand implementeert, kunt u de implementatie een naam geven. Met deze naam kunt u de implementatie ophalen uit de implementatiegeschiedenis. Als u geen naam opgeeft voor de implementatie, wordt de naam van het Bicep-bestand gebruikt. Als u bijvoorbeeld een Bicep-bestand met de naam main.bicep
implementeert en geen implementatienaam opgeeft, krijgt de implementatie de naam main
.
Telkens wanneer u een implementatie uitvoert, wordt er een vermelding toegevoegd aan de implementatiegeschiedenis van de resourcegroep met de implementatienaam. Als u een andere implementatie uitvoert en deze dezelfde naam geeft, wordt de eerdere vermelding vervangen door de huidige implementatie. Als u unieke vermeldingen in de implementatiegeschiedenis wilt behouden, geeft u elke implementatie een unieke naam.
Als u een unieke naam wilt maken, kunt u een willekeurig getal toewijzen.
deploymentName='ExampleDeployment'$RANDOM
U kunt ook een datumwaarde toevoegen.
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
Als u gelijktijdige implementaties uitvoert naar dezelfde resourcegroep met dezelfde implementatienaam, wordt alleen de laatste implementatie voltooid. Implementaties met dezelfde naam die nog niet zijn voltooid, worden vervangen door de laatste implementatie. Als u bijvoorbeeld een implementatie uitvoert die newStorage
een opslagaccount met de naam storage1
implementeert en tegelijkertijd een andere implementatie newStorage
uitvoert die een opslagaccount met de naam storage2
implementeert, implementeert u slechts één opslagaccount. Het resulterende opslagaccount heeft de naam storage2
.
Als u echter een implementatie uitvoert die newStorage
een opslagaccount met de naam storage1
implementeert en onmiddellijk nadat u een andere implementatie hebt uitgevoerd met de naam newStorage
die een opslagaccount met de naam storage2
implementeert, hebt u twee opslagaccounts. De ene heet storage1
en de andere heet storage2
. Maar u hebt slechts één vermelding in de implementatiegeschiedenis.
Wanneer u een unieke naam opgeeft voor elke implementatie, kunt u deze gelijktijdig uitvoeren zonder conflict. Als u een implementatie newStorage1
uitvoert die een opslagaccount met de naam storage1
implementeert en tegelijkertijd een andere implementatie uitvoert die newStorage2
een opslagaccount met de naam storage2
implementeert, hebt u twee opslagaccounts en twee vermeldingen in de implementatiegeschiedenis.
Geef elke implementatie een unieke naam om conflicten met gelijktijdige implementaties te voorkomen en unieke vermeldingen in de implementatiegeschiedenis te garanderen.
Volgende stappen
- Zie De structuur en syntaxis van Bicep-bestanden begrijpen voor meer informatie over het definiëren van parameters in uw bestand.