Resources implementeren met Bicep en Azure PowerShell

In dit artikel wordt uitgelegd hoe u Azure PowerShell bicep-bestanden gebruikt om uw resources in Azure te implementeren. Zie Bicep overview (Bicep-overzicht) als u niet bekend bent met de concepten van het implementeren en beheren van uw Azure-oplossingen.

Als u Bicep-bestanden wilt implementeren, moet Azure PowerShell versie 5.6.0 of hoger hebben.

Vereisten

U hebt een Bicep-bestand nodig om te implementeren. De lokale bestandsnaam die in dit artikel wordt gebruikt, is C:\MyTemplates\azuredeploy.bicep.

U moet de Azure PowerShell en verbinding maken met Azure:

Als PowerShell nog niet is geïnstalleerd, kunt u deze Azure Cloud Shell. Zie Bicep-bestanden implementeren vanuit Azure Cloud Shell voor meer Azure Cloud Shell.

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 New-AzResourceGroupDeployment:

    New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>
    
  • Als u wilt implementeren in een abonnement, gebruikt u New-AzSubscriptionDeployment.Dit is een alias van de New-AzDeployment cmdlet :

    New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>
    

    Zie Resourcegroepen en resources maken op abonnementsniveau voor meer informatie over implementaties op abonnementsniveau.

  • Als u wilt implementeren in een beheergroep, gebruikt u New-AzManagementGroupDeployment.

    New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>
    

    Zie Resources maken op beheergroepniveau voor meer informatie over implementaties op beheergroepniveau.

  • Als u wilt implementeren in een tenant, gebruikt u New-AzTenantDeployment.

    New-AzTenantDeployment -Location <location> -TemplateFile <path-to-bicep>
    

    Zie Resources maken op tenantniveau voor meer informatie over implementaties op tenantniveau.

Voor elk bereik moet de gebruiker die de sjabloon 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 naar een resourcegroep die niet bestaat, maakt u de resourcegroep. De naam van de resourcegroep kan alleen alfanumerieke tekens, punten, onderstrepingstekens, afbreekstreepingstekens en haakjes bevatten. Deze mag maximaal 90 tekens lang zijn. De naam mag niet eindigen op een punt.

New-AzResourceGroup -Name ExampleGroup -Location "Central US"

Als u een lokaal Bicep-bestand wilt implementeren, gebruikt u -TemplateFile de parameter 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

Momenteel biedt Azure PowerShell geen ondersteuning voor het implementeren van externe Bicep-bestanden. Gebruik Bicep CLI om het Bicep-bestand te compileren naar een JSON-sjabloon en laad het JSON-bestand vervolgens op de externe locatie.

Parameters

Als u parameterwaarden wilt doorgeven, kunt u inlineparameters of een parameterbestand gebruiken.

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 ook de inhoud van het bestand op halen 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 is handig om een parameterwaarde uit een bestand op te geven wanneer u configuratiewaarden moet opgeven. U kunt bijvoorbeeld cloud-init-waarden voor een virtuele Linux-machine leveren.

Als u een matrix met objecten wilt doorgeven, maakt u hashtabellen in 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

Parameterbestanden

In plaats van parameters als inline waarden door te geven in uw script, is het wellicht eenvoudiger een JSON-bestand te gebruiken dat de parameterwaarden bevat. Het parameterbestand kan een lokaal bestand of een extern bestand met een toegankelijke URI zijn. Bicep-bestand maakt gebruik van JSON-parameterbestanden.

Zie Een Resource Manager-parameterbestand maken voor meer informatie over het parameterbestand.

Gebruik de parameter om een lokaal parameterbestand door te TemplateParameterFile geven:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-bicep> `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

Als u een extern parameterbestand wilt doorgeven, gebruikt u de TemplateParameterUri parameter :

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-bicep> `
  -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json

Voorbeeld van wijzigingen bekijken

Voordat u uw Bicep-bestand implementeert, kunt u een voorbeeld bekijken van de wijzigingen die het Bicep-bestand aan uw omgeving aan zal brengen. Gebruik de what-if-bewerking om te controleren of het Bicep-bestand de wijzigingen aan de hand heeft die u verwacht. Met Wat-als wordt ook het Bicep-bestand gevalideerd op fouten.

Sjabloonspecificaties implementeren

Momenteel biedt Azure PowerShell 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 inbouwen in een ARM-sjabloon-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 op geeft voor de implementatie, wordt de naam van het Bicep-bestand gebruikt. Als u bijvoorbeeld een Bicep met de naam implementeert en geen implementatienaam azuredeploy.bicep opgeeft, heeft de implementatie de naam azuredeploy .

Telkens wanneer u een implementatie uitgevoerd, wordt er een vermelding toegevoegd aan de implementatiegeschiedenis van de resourcegroep met de naam van de implementatie. Als u een andere implementatie hebt uitgevoerd 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

Of voeg een datumwaarde toe.

$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"

Als u gelijktijdige implementaties naar dezelfde resourcegroep met dezelfde implementatienaam hebt uitgevoerd, 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 met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en tegelijkertijd een andere implementatie met de naam die een opslagaccount met de naam implementeert, implementeert u slechts één newStorage storage1 newStorage storage2 opslagaccount. Het resulterende opslagaccount heeft de naam storage2 .

Als u echter een implementatie met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en onmiddellijk nadat het is voltooid, hebt u een andere implementatie met de naam die een opslagaccount met de naam implementeert, en hebt u twee newStorage storage1 newStorage storage2 opslagaccounts. De ene heeft storage1 de naam en de andere heeft de naam storage2 . Maar u hebt slechts één vermelding in de implementatiegeschiedenis.

Wanneer u voor elke implementatie een unieke naam opgeeft, kunt u deze gelijktijdig zonder conflicten uitvoeren. Als u een implementatie met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en tegelijkertijd een andere implementatie met de naam die een opslagaccount met de naam implementeert, hebt u twee opslagaccounts en twee vermeldingen in de newStorage1 storage1 newStorage2 storage2 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 Terugdraaien bij fout naar geslaagde implementatie als u wilt terugdraaien naar een geslaagde implementatie wanneer er een foutmelding wordt weergegeven.
  • Zie Inzicht in de structuur en syntaxis van Bicep-bestanden voor meer inzicht in het definiëren van parameters in uw bestand.
  • Zie Persoonlijke ARM-sjabloon implementeren met SAS-tokenvoor meer informatie over het implementeren van een sjabloon die een SAS-token vereist.