Resources implementeren met Resource Manager-sjablonen en Azure PowerShellDeploy resources with Resource Manager templates and Azure PowerShell

Meer informatie over het gebruik van Azure PowerShell met Resource Manager-sjablonen voor het implementeren van uw resources in Azure.Learn how to use Azure PowerShell with Resource Manager templates to deploy your resources to Azure. Zie Azure Resource Manager Overviewvoor meer informatie over de concepten van het implementeren en beheren van uw Azure-oplossingen.For more information about the concepts of deploying and managing your Azure solutions, see Azure Resource Manager overview.

Implementatie bereikDeployment scope

U kunt uw implementatie richten op een Azure-abonnement of een resource groep binnen een abonnement.You can target your deployment to either an Azure subscription or a resource group within a subscription. In de meeste gevallen moet u de implementatie richten op een resource groep.In most cases, you'll target deployment to a resource group. Gebruik abonnements implementaties om beleids regels en roltoewijzingen toe te passen op het abonnement.Use subscription deployments to apply policies and role assignments across the subscription. U kunt ook abonnements implementaties gebruiken voor het maken van een resource groep en het implementeren van resources.You also use subscription deployments to create a resource group and deploy resources to it. Afhankelijk van het bereik van de implementatie, gebruikt u verschillende opdrachten.Depending on the scope of the deployment, you use different commands.

Als u wilt implementeren in een resource groep, gebruikt u New-AzResourceGroupDeployment:To deploy to a resource group, use New-AzResourceGroupDeployment:

New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-template>

Als u wilt implementeren in een abonnement, gebruikt u New-AzDeployment:To deploy to a subscription, use New-AzDeployment:

New-AzDeployment -Location <location> -TemplateFile <path-to-template>

Zie resource groepen en-resources op abonnements niveau makenvoor meer informatie over implementaties op abonnements niveau.For more information about subscription level deployments, see Create resource groups and resources at the subscription level.

Op dit moment worden implementaties van beheer groepen alleen ondersteund via de REST API.Currently, management group deployments are only supported through the REST API. Zie resources maken op het niveau van de beheer groepvoor meer informatie over implementaties op het niveau van beheer groepen.For more information about management group level deployments, see Create resources at the management group level.

In de voor beelden in dit artikel worden de implementaties van resource groepen gebruikt.The examples in this article use resource group deployments.

VereistenPrerequisites

U hebt een sjabloon nodig om te implementeren.You need a template to deploy. Als u er nog geen hebt, kunt u een voorbeeld sjabloon downloaden en opslaan vanuit de Azure Quick Start-sjablonen opslag plaats.If you don't already have one, download and save an example template from the Azure Quickstart templates repo. De lokale bestands naam die in dit artikel wordt gebruikt, is c:\MyTemplates\azuredeploy.json.The local file name used in this article is c:\MyTemplates\azuredeploy.json.

Tenzij u de Azure Cloud shell gebruikt om sjablonen te implementeren, moet u Azure PowerShell installeren en verbinding maken met Azure:Unless you use the Azure Cloud shell to deploy templates, you need to install Azure PowerShell and connect to Azure:

Lokale sjabloon implementerenDeploy local template

In het volgende voor beeld wordt een resource groep gemaakt en een sjabloon van uw lokale computer geĆÆmplementeerd.The following example creates a resource group, and deploys a template from your local machine. De naam van de resource groep mag alleen alfanumerieke tekens, punten, onderstrepings teken, afbreek streepjes en haakjes bevatten.The name of the resource group can only include alphanumeric characters, periods, underscores, hyphens, and parenthesis. Het kan Maxi maal 90 tekens lang zijn.It can be up to 90 characters. Deze kan niet eindigen op een punt.It can't end in a period.

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json

De implementatie kan enkele minuten duren.The deployment can take a few minutes to complete.

Externe sjabloon implementerenDeploy remote template

In plaats van het opslaan van Resource Manager-sjablonen op de lokale computer, kunt u ze beter opslaan op een externe locatie.Instead of storing Resource Manager templates on your local machine, you may prefer to store them in an external location. U kunt sjablonen opslaan in een broncode beheer bibliotheek (zoals GitHub).You can store templates in a source control repository (such as GitHub). U kunt ze ook opslaan in een Azure-opslag account voor gedeelde toegang in uw organisatie.Or, you can store them in an Azure storage account for shared access in your organization.

Als u een externe sjabloon wilt implementeren, gebruikt u de para meter TemplateUri .To deploy an external template, use the TemplateUri parameter. Gebruik de URI in het voor beeld om de voorbeeld sjabloon te implementeren vanuit GitHub.Use the URI in the example to deploy the sample template from GitHub.

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json

In het voor gaande voor beeld is een openbaar toegankelijke URI vereist voor de sjabloon, die voor de meeste scenario's werkt, omdat uw sjabloon geen gevoelige gegevens mag bevatten.The preceding example requires a publicly accessible URI for the template, which works for most scenarios because your template shouldn't include sensitive data. Als u gevoelige gegevens (zoals een beheerders wachtwoord) moet opgeven, geeft u die waarde als een beveiligde para meter door.If you need to specify sensitive data (like an admin password), pass that value as a secure parameter. Als u niet wilt dat uw sjabloon openbaar toegankelijk is, kunt u deze beveiligen door deze op te slaan in een persoonlijke opslag container.However, if you don't want your template to be publicly accessible, you can protect it by storing it in a private storage container. Zie voor meer informatie over het implementeren van een sjabloon waarvoor een SAS-token (Shared Access Signature) is vereist een persoonlijke sjabloon implementeren met SAS-token.For information about deploying a template that requires a shared access signature (SAS) token, see Deploy private template with SAS token. Als u een zelf studie wilt door lopen, raadpleegt u zelf studie: Azure Key Vault integreren in Resource Manager Sjabloonimlementatie.To go through a tutorial, see Tutorial: Integrate Azure Key Vault in Resource Manager Template deployment.

Implementeren vanuit Azure Cloud shellDeploy from Azure Cloud shell

U kunt de Azure Cloud shell gebruiken om uw sjabloon te implementeren.You can use the Azure Cloud Shell to deploy your template. Als u een externe sjabloon wilt implementeren, geeft u de URI van de sjabloon op.To deploy an external template, provide the URI of the template. Als u een lokale sjabloon wilt implementeren, moet u uw sjabloon eerst laden in het opslag account voor uw Cloud Shell.To deploy a local template, you must first load your template into the storage account for your Cloud Shell. Als u bestanden naar de shell wilt uploaden, selecteert u het menu pictogram bestanden uploaden/downloaden in het shell-venster.To upload files to the shell, select the Upload/Download files menu icon from the shell window.

Als u de Cloud shell wilt openen, bladert u naar https://shell.azure.comof selecteert u try-it in de volgende code sectie:To open the Cloud shell, browse to https://shell.azure.com, or select Try-It from the following code section:

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json

Als u de code in de shell wilt plakken, klikt u met de rechter muisknop in de shell en selecteert u Plakken.To paste the code into the shell, right-click inside the shell and then select Paste.

Parameter waarden door gevenPass parameter values

Als u parameter waarden wilt door geven, kunt u inline-para meters of een parameter bestand gebruiken.To pass parameter values, you can use either inline parameters or a parameter file.

Inline-para metersInline parameters

Als u inline-para meters wilt door geven, geeft u de namen van de para meter op met de opdracht New-AzResourceGroupDeployment.To pass inline parameters, provide the names of the parameter with the New-AzResourceGroupDeployment command. Als u bijvoorbeeld een teken reeks en een matrix wilt door geven aan een sjabloon, gebruikt u:For example, to pass a string and array to a template, use:

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile c:\MyTemplates\demotemplate.json `
  -exampleString "inline string" `
  -exampleArray $arrayParam

U kunt ook de inhoud van het bestand ophalen en deze inhoud als een inline-para meter opgeven.You can also get the contents of file and provide that content as an inline parameter.

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile c:\MyTemplates\demotemplate.json `
  -exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
  -exampleArray $arrayParam

Het ophalen van een parameter waarde uit een bestand is handig wanneer u configuratie waarden moet opgeven.Getting a parameter value from a file is helpful when you need to provide configuration values. U kunt bijvoorbeeld Cloud-init-waarden opgeven voor een virtuele Linux-machine.For example, you can provide cloud-init values for a Linux virtual machine.

Als u een matrix met objecten wilt door geven, maakt u hash-tabellen in Power shell en voegt u deze toe aan een matrix.If you need to pass in an array of objects, create hash tables in PowerShell and add them to an array. Geef deze matrix als een para meter door tijdens de implementatie.Pass that array as a parameter during deployment.

$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 c:\MyTemplates\demotemplate.json `
  -exampleArray $subnetArray

Parameter bestandenParameter files

In plaats van para meters als inline waarden door te geven in uw script, is het wellicht eenvoudiger een JSON-bestand te gebruiken dat de parameter waarden bevat.Rather than passing parameters as inline values in your script, you may find it easier to use a JSON file that contains the parameter values. Het parameter bestand kan een lokaal bestand of een extern bestand met een toegankelijke URI zijn.The parameter file can be a local file or an external file with an accessible URI.

Zie voor meer informatie over het parameter bestand Resource Manager-parameter bestand maken.For more information about the parameter file, see Create Resource Manager parameter file.

Als u een lokaal parameter bestand wilt door geven, gebruikt u de para meter TemplateParameterFile :To pass a local parameter file, use the TemplateParameterFile parameter:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

Als u een extern parameter bestand wilt door geven, gebruikt u de para meter TemplateParameterUri :To pass an external parameter file, use the TemplateParameterUri parameter:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json `
  -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.parameters.json

Sjabloon implementaties testenTest template deployments

Als u uw sjabloon en parameter waarden wilt testen zonder daad werkelijk resources te implementeren, gebruikt u test-AzureRmResourceGroupDeployment.To test your template and parameter values without actually deploying any resources, use Test-AzureRmResourceGroupDeployment.

Test-AzResourceGroupDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\azuredeploy.json -storageAccountType Standard_GRS

Als er geen fouten worden gedetecteerd, wordt de opdracht zonder antwoord voltooid.If no errors are detected, the command finishes without a response. Als er een fout wordt gedetecteerd, retourneert de opdracht een fout bericht.If an error is detected, the command returns an error message. Als er bijvoorbeeld een onjuiste waarde voor de SKU van het opslag account wordt door gegeven, wordt de volgende fout geretourneerd:For example, passing an incorrect value for the storage account SKU, returns the following error:

Test-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile c:\MyTemplates\azuredeploy.json -storageAccountType badSku

Code    : InvalidTemplate
Message : Deployment template validation failed: 'The provided value 'badSku' for the template parameter 'storageAccountType'
          at line '15' and column '24' is not valid. The parameter value is not part of the allowed value(s):
          'Standard_LRS,Standard_ZRS,Standard_GRS,Standard_RAGRS,Premium_LRS'.'.
Details :

Als uw sjabloon een syntaxis fout bevat, retourneert de opdracht een fout melding die aangeeft dat de sjabloon niet kan worden geparseerd.If your template has a syntax error, the command returns an error indicating it couldn't parse the template. Het bericht geeft het regel nummer en de positie van de Parseerfout aan.The message indicates the line number and position of the parsing error.

Test-AzResourceGroupDeployment : After parsing a value an unexpected character was encountered: 
  ". Path 'variables', line 31, position 3.

Volgende stappenNext steps