Resources implementeren met Resource Manager-sjablonen en Azure CLIDeploy resources with Resource Manager templates and Azure CLI

In dit artikel wordt uitgelegd hoe u Azure CLI gebruikt met Resource Manager-sjablonen om uw resources te implementeren in Azure.This article explains how to use Azure CLI with Resource Manager templates to deploy your resources to Azure. Zie overzicht van Azure Resource Managerals u niet bekend bent met de concepten van het implementeren en beheren van uw Azure-oplossingen.If you aren't familiar with the concepts of deploying and managing your Azure solutions, see Azure Resource Manager overview.

Als u wilt uitvoeren in dit voorbeeld, installeer de nieuwste versie van de Azure CLI.To run this sample, install the latest version of the Azure CLI. Voer eerst az login uit om een verbinding op te zetten met Azure.To start, run az login to create a connection with Azure.

Voorbeelden voor Azure CLI zijn geschreven voor de bash shell.Samples for the Azure CLI are written for the bash shell. Als u wilt uitvoeren in dit voorbeeld in Windows PowerShell of Command Prompt, wellicht u elementen van het script wijzigen.To run this sample in Windows PowerShell or Command Prompt, you may need to change elements of the script.

Als Azure CLI niet is geïnstalleerd, kunt u de Cloud shellgebruiken.If you don't have Azure CLI installed, you can use the Cloud Shell.

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.

Gebruik AZ Group Deployment Createom te implementeren in een resource groep:To deploy to a resource group, use az group deployment create:

az group deployment create --resource-group <resource-group-name> --template-file <path-to-template>

Als u wilt implementeren in een abonnement, gebruikt u AZ Deployment Create:To deploy to a subscription, use az deployment create:

az deployment create --location <location> --template-file <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.

Lokale sjabloon implementerenDeploy local template

Wanneer u resources implementeert in azure, doet u het volgende:When deploying resources to Azure, you:

  1. Aanmelden bij uw Azure-accountSign in to your Azure account
  2. Maak een resource groep die fungeert als de container voor de geïmplementeerde resources.Create a resource group that serves as the container for the deployed resources. 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.
  3. Implementeren in de resource groep de sjabloon waarmee de te maken resources worden gedefinieerdDeploy to the resource group the template that defines the resources to create

Een sjabloon kan para meters bevatten waarmee u de implementatie kunt aanpassen.A template can include parameters that enable you to customize the deployment. U kunt bijvoorbeeld waarden opgeven die zijn afgestemd op een bepaalde omgeving (zoals dev, test en productie).For example, you can provide values that are tailored for a particular environment (such as dev, test, and production). De voorbeeld sjabloon definieert een para meter voor de SKU van het opslag account.The sample template defines a parameter for the storage account SKU.

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:

az group create --name ExampleGroup --location "Central US"
az group deployment create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS

De implementatie kan enkele minuten duren.The deployment can take a few minutes to complete. Wanneer het is voltooid, ziet u een bericht met het volgende resultaat:When it finishes, you see a message that includes the result:

"provisioningState": "Succeeded",

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 sjabloon-URI- para meter.To deploy an external template, use the template-uri 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.

az group create --name ExampleGroup --location "Central US"
az group deployment create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json" \
  --parameters storageAccountType=Standard_GRS

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.

Sjabloon implementeren vanuit Cloud ShellDeploy template from Cloud Shell

U kunt Cloud Shell gebruiken om uw sjabloon te implementeren.You can use Cloud Shell to deploy your template. Als u een externe sjabloon wilt implementeren, geeft u de URI van de sjabloon op exact dezelfde manier als bij elke externe implementatie.To deploy an external template, provide the URI of the template exactly as you would for any external deployment. 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. In deze sectie wordt beschreven hoe u de sjabloon in uw Cloud shell-account laadt en implementeert als een lokaal bestand.This section describes how to load the template to your cloud shell account, and deploy it as a local file. Als u Cloud Shell niet hebt gebruikt, raadpleegt u overzicht van Azure Cloud shell voor informatie over het instellen hiervan.If you haven't used Cloud Shell, see Overview of Azure Cloud Shell for information about setting it up.

  1. Meld u aan bij de Azure Portal.Sign in to the Azure portal.

  2. Selecteer de Cloud Shell-resourcegroep.Select your Cloud Shell resource group. Het naampatroon is cloud-shell-storage-<region>.The name pattern is cloud-shell-storage-<region>.

    Resourcegroep selecteren

  3. Selecteer het opslagaccount voor Cloud Shell.Select the storage account for your Cloud Shell.

    Opslagaccount selecteren

  4. Selecteer Blobs.Select Blobs.

    Blobs selecteren

  5. Selecteer + Container.Select + Container.

    Container toevoegen

  6. Geef de container een naam en een toegangs niveau.Give your container a name and an access level. De voorbeeld sjabloon in dit artikel bevat geen gevoelige informatie, dus sta anonieme lees toegang toe.The sample template in this article contains no sensitive information, so allow anonymous read access. Selecteer OK.Select OK.

    Container waarden opgeven

  7. Selecteer de container die u hebt gemaakt.Select the container you created.

    Nieuwe container selecteren

  8. Selecteer Uploaden.Select Upload.

    BLOB uploaden

  9. Zoek de sjabloon en upload deze.Find and upload your template.

    Bestand uploaden

  10. Nadat de app is geüpload, selecteert u de sjabloon.After it has uploaded, select the template.

    Nieuwe sjabloon selecteren

  11. Kopieer de URL.Copy the URL.

    URL kopiëren

  12. Open de prompt.Open the prompt.

    Cloud Shell openen

Gebruik de volgende opdrachten in de Cloud Shell:In the Cloud Shell, use the following commands:

az group create --name examplegroup --location "South Central US"
az group deployment create --resource-group examplegroup \
  --template-uri <copied URL> \
  --parameters storageAccountType=Standard_GRS

ParametersParameters

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 waarden op in parameters.To pass inline parameters, provide the values in parameters. 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 is a Bash shell, use:

az group deployment create \
  --resource-group testgroup \
  --template-file demotemplate.json \
  --parameters exampleString='inline string' exampleArray='("value1", "value2")'

Als u Azure CLI gebruikt met Windows-opdracht prompt (CMD) of Power shell, geeft u de matrix de volgende notatie: exampleArray="['value1','value2']".If you're using Azure CLI with Windows Command Prompt (CMD) or PowerShell, pass the array in the format: exampleArray="['value1','value2']".

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.

az group deployment create \
  --resource-group testgroup \
  --template-file demotemplate.json \
  --parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json

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.

De indeling arrayContent. json is:The arrayContent.json format is:

[
    "value1",
    "value2"
]

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 moet een lokaal bestand zijn.The parameter file must be a local file. Externe parameter bestanden worden niet ondersteund met Azure CLI.External parameter files aren't supported with Azure CLI.

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 @ om een lokaal bestand met de naam Storage. para meters. json op te geven.To pass a local parameter file, use @ to specify a local file named storage.parameters.json.

az group deployment create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Uitgebreide JSON-indeling verwerkenHandle extended JSON format

Als u een sjabloon wilt implementeren met teken reeksen of opmerkingen met meerdere regels, moet u de --handle-extended-json-format schakelaar gebruiken.To deploy a template with multi-line strings or comments, you must use the --handle-extended-json-format switch. Bijvoorbeeld:For example:

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Een sjabloon implementatie testenTest a template deployment

Als u uw sjabloon en parameter waarden wilt testen zonder daad werkelijk resources te implementeren, gebruikt u AZ Group Deployment validate.To test your template and parameter values without actually deploying any resources, use az group deployment validate.

az group deployment validate \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Als er geen fouten worden gedetecteerd, wordt met de opdracht informatie over de test implementatie geretourneerd.If no errors are detected, the command returns information about the test deployment. In het bijzonder ziet u dat de fout waarde Null is.In particular, notice that the error value is null.

{
  "error": null,
  "properties": {
      ...

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:

{
  "error": {
    "code": "InvalidTemplate",
    "details": null,
    "message": "Deployment template validation failed: 'The provided value 'badSKU' for the template parameter
      'storageAccountType' at line '13' and column '20' is not valid. The parameter value is not part of the allowed
      value(s): 'Standard_LRS,Standard_ZRS,Standard_GRS,Standard_RAGRS,Premium_LRS'.'.",
    "target": null
  },
  "properties": null
}

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.

{
  "error": {
    "code": "InvalidTemplate",
    "details": null,
    "message": "Deployment template parse failed: 'After parsing a value an unexpected character was encountered:
      \". Path 'variables', line 31, position 3.'.",
    "target": null
  },
  "properties": null
}

Volgende stappenNext steps