Een sjabloon exporteren met Azure PowerShell

Als u wilt helpen bij het maken van Azure Resource Manager-sjablonen, kunt u een sjabloon exporteren uit bestaande resources. De geëxporteerde sjabloon helpt u inzicht te krijgen in de JSON-syntaxis en eigenschappen waarmee uw resources worden geïmplementeerd. Als u toekomstige implementaties wilt automatiseren, begint u met de geëxporteerde sjabloon en wijzigt u deze voor uw scenario. Tijdens het exportsjabloonproces wordt geprobeerd een bruikbare sjabloon te maken. Voor de meeste geëxporteerde sjablonen zijn echter enkele wijzigingen vereist voordat ze kunnen worden gebruikt om Azure-resources te implementeren.

met Resource Manager kunt u een of meer resources kiezen voor het exporteren naar een sjabloon. U kunt zich richten op precies de resources die u nodig hebt in de sjabloon.

In dit artikel wordt beschreven hoe u sjablonen exporteert via Azure PowerShell. Zie voor andere opties:

De juiste exportoptie kiezen

Er zijn twee manieren om een sjabloon te exporteren:

  • Exporteren uit resourcegroep of resource. Met deze optie wordt een nieuwe sjabloon gegenereerd op basis van bestaande resources. De geëxporteerde sjabloon is een 'momentopname' van de huidige status van de resourcegroep. U kunt een volledige resourcegroep of specifieke resources binnen die resourcegroep exporteren.

  • Opslaan vanuit de geschiedenis. Met deze optie wordt een exacte kopie opgehaald van een sjabloon die wordt gebruikt voor implementatie. U geeft de implementatie op vanuit de implementatiegeschiedenis.

Afhankelijk van de optie die u kiest, hebben de geëxporteerde sjablonen verschillende kwaliteiten.

Van resourcegroep of resource Uit de geschiedenis
Sjabloon wordt automatisch gegenereerd. Waarschijnlijk wilt u de code verbeteren voordat u deze implementeert. Sjabloon is een exacte kopie van de kopie die is gemaakt door de auteur van de sjabloon. Het is klaar om opnieuw te worden geïmplementeerd zonder wijzigingen.
Sjabloon is een momentopname van de huidige status van de resources. Het bevat eventuele handmatige wijzigingen die u hebt aangebracht na de implementatie. Sjabloon toont alleen de status van resources op het moment van implementatie. Handmatige wijzigingen die u na de implementatie hebt aangebracht, worden niet opgenomen.
U kunt selecteren welke resources uit een resourcegroep u wilt exporteren. Alle resources voor een specifieke implementatie zijn opgenomen. U kunt geen subset van deze resources kiezen of resources toevoegen die op een ander tijdstip zijn toegevoegd.
De sjabloon bevat alle eigenschappen voor de resources, inclusief enkele eigenschappen die u normaal gesproken niet zou instellen tijdens de implementatie. U kunt deze eigenschappen verwijderen of opschonen voordat u de sjabloon opnieuw gebruikt. Sjabloon bevat alleen de eigenschappen die nodig zijn voor de implementatie. De sjabloon is meer verspreid en gemakkelijker te lezen.
De sjabloon bevat waarschijnlijk niet alle parameters die u nodig hebt voor hergebruik. De meeste eigenschapswaarden zijn vastgelegd in de sjabloon. Als u de sjabloon opnieuw wilt implementeren in andere omgevingen, moet u parameters toevoegen die de mogelijkheid om de resources te configureren vergroten. U kunt de selectie van Parameters opnemen opheffen, zodat u uw eigen parameters kunt maken. De sjabloon bevat parameters waarmee u eenvoudig opnieuw kunt implementeren in verschillende omgevingen.

Exporteer de sjabloon uit een resourcegroep of resource wanneer:

  • U moet wijzigingen vastleggen in de resources die zijn aangebracht na de oorspronkelijke implementatie.
  • U wilt selecteren welke resources worden geëxporteerd.
  • De resources zijn niet gemaakt met een sjabloon.

Exporteer de sjabloon uit de geschiedenis wanneer:

  • U wilt een sjabloon die eenvoudig opnieuw kan worden gebruikt.
  • U hoeft geen wijzigingen op te nemen die u hebt aangebracht na de oorspronkelijke implementatie.

Beperkingen

Exporteren is niet gegarandeerd. Exporteren is geen betrouwbare manier om bestaande resources om te zetten in sjablonen die in productie kunnen worden gebruikt. Het is beter om resources helemaal zelf te maken met behulp van een handgeschreven Bicep-bestand, ARM-sjabloon of terraform.

Bij het exporteren vanuit een resourcegroep of resource wordt de geëxporteerde sjabloon gegenereerd op basis van de gepubliceerde schema's voor elk resourcetype. Soms heeft het schema niet de meest recente versie voor een resourcetype. Controleer de geëxporteerde sjabloon om te controleren of deze de eigenschappen bevat die u nodig hebt. Bewerk indien nodig de geëxporteerde sjabloon om de API-versie te gebruiken die u nodig hebt.

Sommige wachtwoordparameters ontbreken mogelijk in de geëxporteerde sjablonen. U moet de sjabloonreferentie controleren en deze parameters handmatig toevoegen voordat u de sjablonen kunt gebruiken om resources te implementeren.

De functie voor het exporteren van sjablonen biedt geen ondersteuning voor het exporteren van Azure Data Factory resources. Zie Een data factory kopiëren of klonen in Azure Data Factory voor meer informatie over het exporteren van Data Factory-resources.

Als u resources wilt exporteren die zijn gemaakt via het klassieke implementatiemodel, moet u deze migreren naar het Resource Manager-implementatiemodel.

Als u een waarschuwing krijgt bij het exporteren van een sjabloon die aangeeft dat een resourcetype niet is geëxporteerd, kunt u nog steeds de eigenschappen voor die resource detecteren. Zie sjabloonreferentie voor resource-eigenschappen. U kunt ook de Azure REST API bekijken voor het resourcetype.

Er is een limiet van 200 resources in de resourcegroep waarvoor u de geëxporteerde sjabloon maakt. Als u een resourcegroep met meer dan 200 resources probeert te exporteren, wordt het foutbericht Export template is not supported for resource groups more than 200 resources weergegeven.

Sjabloon exporteren vanuit een resourcegroep

Nadat u de resourcegroep hebt ingesteld, kunt u een Azure Resource Manager-sjabloon voor de resourcegroep exporteren.

Als u alle resources in een resourcegroep wilt exporteren, gebruikt u de cmdlet Export-AzResourceGroup en geeft u de naam van de resourcegroep op.

Export-AzResourceGroup -ResourceGroupName demoGroup

De sjabloon wordt opgeslagen als een lokaal bestand.

In plaats van alle resources in de resourcegroep te exporteren, kunt u selecteren welke resources u wilt exporteren.

Als u één resource wilt exporteren, geeft u die resource-id op.

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

Als u meer dan één resource wilt exporteren, geeft u de resource-id's door in een matrix.

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

Wanneer u de sjabloon exporteert, kunt u opgeven of parameters worden gebruikt in de sjabloon. Standaard zijn parameters voor resourcenamen opgenomen, maar ze hebben geen standaardwaarde.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Als u de -SkipResourceNameParameterization parameter gebruikt bij het exporteren van de sjabloon, worden parameters voor resourcenamen niet opgenomen in de sjabloon. In plaats daarvan wordt de resourcenaam rechtstreeks op de resource ingesteld op de huidige waarde. U kunt de naam niet aanpassen tijdens de implementatie.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Als u de -IncludeParameterDefaultValue parameter gebruikt bij het exporteren van de sjabloon, bevat de sjabloonparameter een standaardwaarde die is ingesteld op de huidige waarde. U kunt deze standaardwaarde gebruiken of de standaardwaarde overschrijven door een andere waarde door te geven.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Sjabloon opslaan vanuit de implementatiegeschiedenis

U kunt een sjabloon uit een implementatie opslaan in de implementatiegeschiedenis. De sjabloon die u opkrijgt, is precies de sjabloon die is gebruikt voor de implementatie.

Als u een sjabloon wilt ophalen uit een resourcegroepimplementatie, gebruikt u de cmdlet Save-AzResourceGroupDeploymentTemplate . U geeft de naam op van de implementatie die moet worden opgehaald. Zie Implementatiegeschiedenis weergeven met Azure Resource Manager voor hulp bij het ophalen van de naam van een implementatie.

Save-AzResourceGroupDeploymentTemplate -ResourceGroupName demoGroup -DeploymentName demoDeployment

De sjabloon wordt opgeslagen als een lokaal bestand met de naam van de implementatie.

Als u sjablonen op andere niveaus wilt implementeren, gebruikt u:

Volgende stappen