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 naar Azure.Learn how to use Azure PowerShell with Resource Manager templates to deploy your resources to Azure. Zie voor meer informatie over de concepten van implementeren en beheren van uw Azure-oplossingen, overzicht van Azure Resource Manager.For more information about the concepts of deploying and managing your Azure solutions, see Azure Resource Manager overview.

Voor het implementeren van een sjabloon, moet u doorgaans twee stappen:To deploy a template, you typically need two steps:

  1. Maak een resourcegroep.Create a resource group. Resourcegroep fungeert als de container voor de geïmplementeerde resources.Resource group serves as the container for the deployed resources. De naam van de resourcegroep kan alleen alfanumerieke tekens, punten, onderstrepingstekens, afbreekstreepjes en haakjes bevatten.The name of the resource group can only include alphanumeric characters, periods, underscores, hyphens, and parenthesis. Het kan maximaal 90 tekens zijn.It can be up to 90 characters. Deze mag niet eindigen op een punt.It can't end in a period.
  2. Een sjabloon implementeren.Deploy a template. De sjabloon definieert de resources te maken.The template defines the resources to create. De implementatie maakt de resources in de resourcegroep die is opgegeven.The deployment creates the resources in the resource group specified.

Deze implementatiemethode verificatie in twee stappen wordt in dit artikel gebruikt.This two-step deployment method is used in this article. De andere optie is voor het implementeren van een resourcegroep en de resources op hetzelfde moment.The other option is to deploy a resource group and the resources at the same time. Zie voor meer informatie, resourcegroep maken en implementeren van resources.For more information, see Create resource group and deploy resources.

VereistenPrerequisites

Tenzij u de Azure Cloud shell voor het implementeren van sjablonen, 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:

Notitie

Dit artikel is bijgewerkt voor het gebruik van de nieuwe Azure PowerShell Az-module.This article has been updated to use the new Azure PowerShell Az module. Zie voor meer informatie over de nieuwe Az-module en compatibiliteit met AzureRM Introductie van de nieuwe Az-module van Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Zie Azure PowerShell installeren voor installatie-instructies.For installation instructions, see Install Azure PowerShell.

Lokaal opgeslagen sjablonen implementerenDeploy templates stored locally

Het volgende voorbeeld wordt een resourcegroep en implementeert u een sjabloon van uw lokale computer:The following example creates a resource group, and deploys a template from your local machine:

$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

Houd er rekening mee c:\MyTemplates\azuredeploy.json is een quickstart-sjabloon.Note c:\MyTemplates\azuredeploy.json is a quickstart template. Zie Vereisten.See Prerequisites.

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

Implementeren van sjablonen die extern zijn opgeslagenDeploy templates stored externally

In plaats van Resource Manager-sjablonen op uw lokale computer, wellicht kunt u beter om op te slaan in 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 opslagplaats voor bronbeheer (zoals GitHub).You can store templates in a source control repository (such as GitHub). Of u kunt ze opslaan in Azure storage-account voor gedeelde toegang in uw organisatie.Or, you can store them in an Azure storage account for shared access in your organization.

Voor het implementeren van een externe-sjabloon, gebruiken de TemplateUri parameter.To deploy an external template, use the TemplateUri parameter. Gebruik de URI in het voorbeeld om de voorbeeldsjabloon uit GitHub te implementeren.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

Het vorige voorbeeld vereist een openbaar toegankelijke URI voor de sjabloon die voor de meeste scenario's, werkt omdat de sjabloon mag niet de gevoelige gegevens 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 nodig hebt om op te geven van gevoelige gegevens (zoals een beheerderswachtwoord), moet u die waarde als een beveiligde parameter.If you need to specify sensitive data (like an admin password), pass that value as a secure parameter. Echter, als u niet dat de sjabloon openbaar toegankelijk moeten zijn wilt, kunt u deze beschermen door in een persoonlijke opslagcontainer op te slaan.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 die de token van een shared access signature (SAS) is vereist, persoonlijke sjablonen 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. Zie voor een zelfstudie doorloopt, zelfstudie: Azure Key Vault integreren in de Resource Manager-sjabloonimplementatie voor meer informatie.To go through a tutorial, see Tutorial: Integrate Azure Key Vault in Resource Manager Template deployment.

Sjablonen van Azure Cloud shell implementerenDeploy templates from Azure Cloud shell

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

Als u wilt openen in de cloudshell, blader naar https://shell.azure.com , of selecteer Try It van de volgende sectie met voorbeeldcode: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 wilt de code in de shell plakt, de shell met de rechtermuisknop en selecteer vervolgens plakken.To paste the code into the shell, right-click inside the shell and then select Paste.

Implementeren naar meerdere resourcegroepen of abonnementenDeploy to multiple resource groups or subscriptions

Normaal gesproken implementeren u alle resources in uw sjabloon één resourcegroep bestaan.Typically, you deploy all the resources in your template to a single resource group. Er zijn echter scenario's waarin u wilt een set met resources samen te implementeren, maar plaats deze in verschillende resourcegroepen of abonnementen.However, there are scenarios where you want to deploy a set of resources together but place them in different resource groups or subscriptions. U kunt implementeren met slechts vijf resourcegroepen in een enkele implementatie.You can deploy to only five resource groups in a single deployment. Zie voor meer informatie, implementeren-Azure-resources aan meerdere resourcegroepen en abonnementen.For more information, see Deploy Azure resources to multiple resource groups and subscriptions.

Opnieuw implementeren wanneer de implementatie misluktRedeploy when deployment fails

Wanneer een implementatie is mislukt, kunt u automatisch opnieuw implementeren de implementatie van een eerdere, geslaagde geschiedenis van uw implementatie.When a deployment fails, you can automatically redeploy an earlier, successful deployment from your deployment history. Als u opnieuw implementeren, gebruiken de -RollbackToLastDeployment of -RollBackDeploymentName parameter in de implementatieopdracht.To specify redeployment, use either the -RollbackToLastDeployment or -RollBackDeploymentName parameter in the deployment command.

Als u wilt deze optie gebruikt, moeten uw implementaties unieke namen hebben, zodat ze kunnen worden geïdentificeerd in de geschiedenis.To use this option, your deployments must have unique names so they can be identified in the history. Als u geen unieke namen, overschrijft de huidige mislukte implementatie mogelijk de eerder geslaagde implementatie in de geschiedenis.If you don't have unique names, the current failed deployment might overwrite the previously successful deployment in the history. U kunt deze optie alleen gebruiken met niveau root-implementaties.You can only use this option with root level deployments. Implementaties van een geneste sjabloon zijn niet beschikbaar voor opnieuw implementeren.Deployments from a nested template aren't available for redeployment.

Toevoegen als u wilt implementeren in de laatste geslaagde implementatie, de -RollbackToLastDeployment parameter als een vlag.To redeploy the last successful deployment, add the -RollbackToLastDeployment parameter as a flag.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollbackToLastDeployment

Als u wilt implementeren op een specifieke implementatie, gebruikt u de -RollBackDeploymentName parameter en geef de naam van de implementatie.To redeploy a specific deployment, use the -RollBackDeploymentName parameter and provide the name of the deployment.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollBackDeploymentName ExampleDeployment01

De opgegeven implementatie moet zijn geslaagd.The specified deployment must have succeeded.

Parameterwaarden doorgevenPass parameter values

Als u wilt doorgeven van parameterwaarden, kunt u parameters inline of een parameterbestand.To pass parameter values, you can use either inline parameters or a parameter file. De voorgaande voorbeelden in dit artikel weergeven inline parameters.The preceding examples in this article show inline parameters.

Inline-parametersInline parameters

Als u wilt in line-parameters kunt toevoegen, bevatten de namen van de parameter met de New-AzResourceGroupDeployment opdracht.To pass inline parameters, provide the names of the parameter with the New-AzResourceGroupDeployment command. Bijvoorbeeld: een tekenreeks of matrix doorgeven aan een sjabloon, gebruiken: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 bestand ophalen en verstrekken die inhoud als een inline-parameter.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

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

ParameterbestandenParameter files

In plaats van de parameters doorgeven als inline-waarden in het script, wellicht vindt u het eenvoudiger te gebruiken van een JSON-bestand met de parameterwaarden.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. De parameter-bestand kan een lokaal bestand of een extern bestand aan een URI die toegankelijk zijn.The parameter file can be a local file or an external file with an accessible URI.

De parameterbestand moet zich in de volgende indeling:The parameter file must be in the following format:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
     "storageAccountType": {
         "value": "Standard_GRS"
     }
  }
}

U ziet dat de parametersectie bevat een parameternaam op die overeenkomt met de parameter die is gedefinieerd in uw sjabloon (parameter).Notice that the parameters section includes a parameter name that matches the parameter defined in your template (storageAccountType). Het parameterbestand bevat een waarde voor de parameter.The parameter file contains a value for the parameter. Deze waarde wordt automatisch doorgegeven aan de sjabloon tijdens de implementatie.This value is automatically passed to the template during deployment. U kunt meer dan één parameterbestand maken, en geeft u in de juiste parameter-bestand voor het scenario.You can create more than one parameter file, and then pass in the appropriate parameter file for the scenario.

Kopieer het voorgaande voorbeeld en sla deze op als een bestand met de naam storage.parameters.json.Copy the preceding example and save it as a file named storage.parameters.json.

Als u wilt een lokale parameterbestand doorgeven, gebruikt u de TemplateParameterFile parameter: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 wilt een parameterbestand met externe doorgeven, gebruikt u de TemplateParameterUri parameter: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

Parameter-prioriteitParameter precedence

U kunt gebruiken in line-parameters en een lokale parameterbestand in dezelfde implementatiebewerking.You can use inline parameters and a local parameter file in the same deployment operation. U kunt bijvoorbeeld enkele waarden in de lokale parameterbestand opgeven en toevoegen van andere waarden inline tijdens de implementatie.For example, you can specify some values in the local parameter file and add other values inline during deployment. Als u waarden voor een parameter in de lokale parameterbestand en inline opgeeft, wordt de waarde inline voorrang.If you provide values for a parameter in both the local parameter file and inline, the inline value takes precedence.

Echter wanneer u een externe parameterbestand gebruikt, geeft u de kan geen andere waarden de inline of vanuit een lokaal bestand.However, when you use an external parameter file, you can't pass other values either inline or from a local file. Wanneer u een parameterbestand in de TemplateParameterUri parameter, alle inline parameters worden genegeerd.When you specify a parameter file in the TemplateParameterUri parameter, all inline parameters are ignored. Geef alle parameterwaarden in het externe bestand.Provide all parameter values in the external file. Als uw sjabloon een gevoelige waarde die u niet in het parameterbestand opnemen bevat, die waarde toevoegen aan een key vault of dynamisch alle parameter waarden inline opgeeft tussen.If your template includes a sensitive value that you can't include in the parameter file, either add that value to a key vault, or dynamically provide all parameter values inline.

Parameter naamconflictenParameter name conflicts

Als de sjabloon een parameter met dezelfde naam als een van de parameters in de PowerShell-opdracht bevat, PowerShell biedt de parameter van de sjabloon voor het achtervoegsel FromTemplate.If your template includes a parameter with the same name as one of the parameters in the PowerShell command, PowerShell presents the parameter from your template with the postfix FromTemplate. Bijvoorbeeld, een parameter met de naam ResourceGroupName in uw sjabloon veroorzaakt een conflict met de ResourceGroupName parameter in de New-AzResourceGroupDeployment de cmdlet.For example, a parameter named ResourceGroupName in your template conflicts with the ResourceGroupName parameter in the New-AzResourceGroupDeployment cmdlet. U wordt gevraagd om een waarde voor ResourceGroupNameFromTemplate.You're prompted to provide a value for ResourceGroupNameFromTemplate. In het algemeen moet u deze verwarring voorkomen door het niet naming parameters met dezelfde naam als parameters gebruikt voor implementatiebewerkingen.In general, you should avoid this confusion by not naming parameters with the same name as parameters used for deployment operations.

Sjabloon testimplementatiesTest template deployments

U kunt de waarden van uw sjabloon en de parameterbestanden testen zonder daadwerkelijk de resources te implementeren met 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 aangetroffen, wordt de opdracht is voltooid zonder een reactie.If no errors are detected, the command finishes without a response. Als er een fout wordt gedetecteerd, wordt de opdracht een foutbericht weergegeven.If an error is detected, the command returns an error message. Doorgeven van een onjuiste waarde voor het opslagaccount-SKU, retourneert bijvoorbeeld de volgende fout: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 syntaxisfout heeft, retourneert de opdracht een foutbericht met dat de sjabloon kan niet worden geparseerd.If your template has a syntax error, the command returns an error indicating it couldn't parse the template. Het bericht geeft aan dat het regelnummer en de positie van de fout bij het parseren.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