Bicep-bestanden implementeren met Azure PowerShell
In dit artikel wordt uitgelegd hoe u Azure PowerShell gebruikt met Bicep-bestanden om uw resources te implementeren in Azure. Als u niet bekend bent met het implementeren en beheren van uw Azure-oplossingen, raadpleegt u Wat is Bicep?
Vereisten
U hebt een Bicep-bestand nodig om te implementeren en het bestand moet lokaal zijn. U hebt ook Azure PowerShell nodig en moet zijn verbonden met Azure:
- Installeer Azure PowerShell-cmdlets op uw lokale computer. Als u Bicep-bestanden wilt implementeren, hebt u Azure PowerShell versie 5.6.0 of hoger nodig. Zie Aan de slag met Azure PowerShell voor meer informatie.
- Installeer de Bicep CLI. U moet bicep CLI handmatig installeren omdat Azure PowerShell deze niet automatisch installeert.
- Gebruik
Connect-AzAccount
dit om verbinding te maken met Azure. Als u meerdere Azure-abonnementen hebt, moet u mogelijk ook worden uitgevoerdSet-AzContext
. Zie Meerdere Azure-abonnementen gebruiken voor meer informatie.
Als u PowerShell niet hebt geïnstalleerd, kunt u Azure Cloud Shell gebruiken. Zie Bicep-bestanden implementeren met 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 en moet de gebruiker die het Bicep-bestand implementeert, over de vereiste machtigingen beschikken om resources voor elk bereik te maken.
Als u wilt implementeren in een resourcegroep, gebruikt u
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>
Als u wilt implementeren in een abonnement, gebruikt
New-AzSubscriptionDeployment
u een alias van deNew-AzDeployment
cmdlet:New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>
Als u wilt implementeren in een beheergroep, gebruikt u
New-AzManagementGroupDeployment
.New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>
Als u wilt implementeren in een tenant, gebruikt u
New-AzTenantDeployment
.New-AzTenantDeployment -Location <location> -TemplateFile <path-to-bicep>
Lokaal Bicep-bestand implementeren
In deze sectie wordt beschreven hoe u een lokaal Bicep-bestand implementeert. U kunt een Bicep-bestand implementeren vanaf uw lokale computer of een externe.
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 kan maximaal 90 tekens zijn en kan niet eindigen in een periode.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
Als u een lokaal Bicep-bestand wilt implementeren, gebruikt u de -TemplateFile
switch in de implementatieopdracht:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-bicep>
Het kan enkele minuten duren voordat de implementatie is voltooid.
Extern Bicep-bestand implementeren
Azure PowerShell biedt momenteel geen ondersteuning voor het implementeren van externe Bicep-bestanden. U kunt de Bicep CLI gebruiken om het Bicep-bestand te bouwen naar een JSON-sjabloon en vervolgens het JSON-bestand naar een externe locatie te laden. Zie Externe sjabloon 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 namen van de parameter op met de New-AzResourceGroupDeployment
opdracht. Als u bijvoorbeeld een tekenreeks en matrix wilt doorgeven aan een Bicep-bestand, gebruikt u:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString "inline string" `
-exampleArray $arrayParam
U kunt de TemplateParameterObject
parameter gebruiken om een hashtabel door te geven die de parameters voor de sjabloon bevat:
$params = @{
exampleString = "inline string"
exampleArray = "value1", "value2"
}
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-TemplateParameterObject $params
U kunt ook de inhoud van het bestand ophalen en die inhoud opgeven als een inlineparameter:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
-exampleArray $arrayParam
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.
Als u een matrix met objecten moet doorgeven, maakt u hash-tabellen in Azure PowerShell en voegt u deze toe aan een matrix. Geef die matrix door als een parameter tijdens de implementatie:
$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleArray $subnetArray
Bicep-parametersbestanden
In plaats van parameters door te geven als inlinewaarden in uw script, is het wellicht gemakkelijker om een Bicep-parametersbestand of een JSON-parameterbestand te gebruiken dat de parameterwaarden bevat. Het Bicep-parametersbestand moet een lokaal bestand zijn, terwijl het JSON-sjabloonbestand zich ergens online kan bevinden. Zie Parametersbestanden maken voor Bicep-implementatie voor meer informatie over parametersbestanden.
U kunt een Bicep-parametersbestand gebruiken om een Bicep-bestand te implementeren met Azure PowerShell versie 10.4.0 of hoger en Bicep CLI versie 0.22.X of hoger. Met de using
instructie in het Bicep-parametersbestand hoeft u de -TemplateFile
schakeloptie niet op te geven bij het opgeven van een Bicep-parametersbestand voor de -TemplateParameterFile
switch.
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:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateParameterFile storage.bicepparam
JSON-parametersbestanden
Het JSON-parameterbestand kan lokaal of een extern bestand met een toegankelijke URI.
Als u een lokaal parameterbestand wilt doorgeven, gebruikt u de TemplateParameterFile
schakeloptie met een JSON-parameterbestand:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterFile c:\BicepFiles\storage.parameters.json
Als u een bestand met externe parameters wilt doorgeven, gebruikt u de TemplateParameterUri
parameter:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
Omdat de TemplateParameterUri
parameter alleen JSON-parametersbestanden ondersteunt, worden bestanden niet ondersteund .bicepparam
.
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
Azure PowerShell biedt momenteel geen Bicep-bestanden om sjabloonspecificaties te maken. 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 JSON-sjabloon om een sjabloonspecificatie te maken.
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. 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:
$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix
U kunt ook een datumwaarde toevoegen:
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"
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 met de naam newStorage
een opslagaccount met de naam storage1
en een andere implementatie uitvoert met de naam newStorage
een opslagaccount dat tegelijkertijd 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 een andere implementatie uitvoert die newStorage
een opslagaccount implementeert dat is genoemd storage2
nadat de eerste implementatie is voltooid, 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 een andere implementatie uitvoert met de naam newStorage2
die tegelijkertijd 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.