Azure Resource Manager sjabloonspecificaties
Een sjabloonspecificatie is een resourcetype voor het opslaan van Azure Resource Manager arm-sjabloon (ARM-sjabloon) in Azure voor latere implementatie. Met dit resourcetype kunt u ARM-sjablonen delen met andere gebruikers in uw organisatie. Net als bij elke andere Azure-resource kunt u op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om de sjabloonspecificatie te delen.
Microsoft.Resources/templateSpecs is het resourcetype voor sjabloonspecificaties. Het bestaat uit een hoofdsjabloon en een aantal gekoppelde sjablonen. Azure slaat sjabloonspecificaties veilig op in resourcegroepen. Sjabloonspecificaties ondersteuning voor versieversies.
Als u de sjabloonspecificatie wilt implementeren, gebruikt u standaard Azure-hulpprogramma's zoals PowerShell, Azure CLI, Azure Portal, REST en andere ondersteunde SDK's en clients. U gebruikt dezelfde opdrachten als voor de sjabloon.
Notitie
Als u sjabloonspecificatie wilt Azure PowerShell, moet u versie 5.0.0 of hoger installeren. Voor gebruik met Azure CLI hebt u versie 2.14.2 of hoger nodig.
Houd bij het ontwerpen van uw implementatie altijd rekening met de levenscyclus van de resources en groeperen de resources die een vergelijkbare levenscyclus delen in één sjabloonspecificatie. Uw implementaties bevatten bijvoorbeeld meerdere exemplaren van Cosmos DB met elk exemplaar met eigen databases en containers. Gezien de databases en containers niet veel veranderen, wilt u één sjabloonspecificatie maken om een Cosmo DB-exemplaar en de onderliggende databases en containers op te nemen. Vervolgens kunt u voorwaardelijke instructies in uw sjablonen en kopieerlussen gebruiken om meerdere exemplaren van deze resources te maken.
Microsoft Learn
Zie Publish libraries of reusable infrastructure code by using template specs (Bibliotheken van herbruikbare infrastructuurcode publiceren met behulp van sjabloonspecificaties) voor meer informatie over sjabloonspecificaties Microsoft Learn.
Waarom sjabloonspecificaties gebruiken?
Sjabloonspecificaties bieden de volgende voordelen:
- U gebruikt standaard ARM-sjablonen voor uw sjabloonspecificatie.
- U beheert de toegang via Azure RBAC in plaats van SAS-tokens.
- Gebruikers kunnen de sjabloonspecificatie implementeren zonder schrijftoegang tot de sjabloon.
- U kunt de sjabloonspecificatie integreren in het bestaande implementatieproces, zoals PowerShell-script of DevOps-pijplijn.
Met sjabloonspecificaties kunt u canonieke sjablonen maken en deze delen met teams in uw organisatie. De sjabloonspecificaties zijn veilig omdat ze beschikbaar zijn voor Azure Resource Manager implementatie, maar niet toegankelijk zijn voor gebruikers zonder de juiste machtiging. Gebruikers hebben alleen leestoegang nodig tot de sjabloonspecificatie om de sjabloon te implementeren, zodat u de sjabloon kunt delen zonder dat anderen deze hoeven te wijzigen.
Als u uw sjablonen momenteel in een GitHub-opslagplaats of opslagaccount hebt, hebt u te maken met verschillende uitdagingen bij het delen en gebruiken van de sjablonen. Als u de sjabloon wilt implementeren, moet u de sjabloon openbaar toegankelijk maken of toegang beheren met SAS-tokens. Om deze beperking te omzeilen, kunnen gebruikers lokale kopieën maken, die uiteindelijk afwijken van uw oorspronkelijke sjabloon. Sjabloonspecificaties vereenvoudigen het delen van sjablonen.
De sjablonen die u in een sjabloonspecificatie hebt opgeslagen, moeten worden geverifieerd door beheerders in uw organisatie om de vereisten en richtlijnen van de organisatie te volgen.
Sjabloonspecificatie maken
In het volgende voorbeeld ziet u een eenvoudige sjabloon voor het maken van een opslagaccount in Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[concat('store', uniquestring(resourceGroup().id))]",
"location": "[resourceGroup().location]",
"kind": "StorageV2",
"sku": {
"name": "[parameters('storageAccountType')]"
}
}
]
}
Wanneer u de sjabloonspecificatie maakt, worden de PowerShell- of CLI-opdrachten doorgegeven aan het hoofdsjabloonbestand. Als de hoofdsjabloon verwijst naar gekoppelde sjablonen, worden deze met de opdrachten gevonden en verpakt om de sjabloonspecificatie te maken. Zie Een sjabloonspecificatie maken met gekoppelde sjablonen voor meer informatie.
Maak een sjabloonspecificatie met behulp van:
New-AzTemplateSpec -Name storageSpec -Version 1.0a -ResourceGroupName templateSpecsRg -Location westus2 -TemplateFile ./mainTemplate.json
U kunt alle sjabloonspecificaties in uw abonnement weergeven met behulp van:
Get-AzTemplateSpec
U kunt details van een sjabloonspecificatie bekijken, inclusief de versies ervan met:
Get-AzTemplateSpec -ResourceGroupName templateSpecsRG -Name storageSpec
Sjabloonspecificatie implementeren
Nadat u de sjabloonspecificatie hebt gemaakt, kunnen gebruikers met leestoegang tot de sjabloonspecificatie deze implementeren. Zie Zelfstudie: Een groep toegang verlenen tot Azure-resourcesmet behulp van Azure PowerShell.
Sjabloonspecificaties kunnen worden geïmplementeerd via de portal, PowerShell, Azure CLI of als een gekoppelde sjabloon in een grotere sjabloonimplementatie. Gebruikers in een organisatie kunnen een sjabloonspecificatie implementeren voor elk bereik in Azure (resourcegroep, abonnement, beheergroep of tenant).
In plaats van een pad of URI voor een sjabloon door te geven, implementeert u een sjabloonspecificatie door de resource-id op te geven. De resource-id heeft de volgende indeling:
/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Resources/templateSpecs/{template-spec-name}/versions/{template-spec-version}
U ziet dat de resource-id een versienaam bevat voor de sjabloonspecificatie.
U implementeert bijvoorbeeld een sjabloonspecificatie met de volgende opdracht.
$id = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/templateSpecsRG/providers/Microsoft.Resources/templateSpecs/storageSpec/versions/1.0a"
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName demoRG
In de praktijk moet u doorgaans of uitvoeren om de id op te halen van de sjabloonspecificatie Get-AzTemplateSpec az ts show die u wilt implementeren.
$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0a).Versions.Id
New-AzResourceGroupDeployment `
-ResourceGroupName demoRG `
-TemplateSpecId $id
U kunt ook een URL in de volgende indeling openen om een sjabloonspecificatie te implementeren:
https://portal.azure.com/#create/Microsoft.Template/templateSpecVersionId/%2fsubscriptions%2f{subscription-id}%2fresourceGroups%2f{resource-group-name}%2fproviders%2fMicrosoft.Resources%2ftemplateSpecs%2f{template-spec-name}%2fversions%2f{template-spec-version}
Parameters
Het doorgeven van parameters aan de sjabloonspecificatie is precies hetzelfde als het doorgeven van parameters aan een ARM-sjabloon. Voeg de parameterwaarden inline of in een parameterbestand toe.
Als u een parameter inline wilt doorgeven, gebruikt u:
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName demoRG `
-StorageAccountType Standard_GRS
Als u een lokaal parameterbestand wilt maken, gebruikt u:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"StorageAccountType": {
"value": "Standard_GRS"
}
}
}
En geef dat parameterbestand door met:
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName demoRG `
-TemplateParameterFile ./mainTemplate.parameters.json
Versiebeheer
Wanneer u een sjabloonspecificatie maakt, geeft u er een versienaam voor op. Wanneer u de sjablooncode itereert, kunt u een bestaande versie (voor hotfixes) bijwerken of een nieuwe versie publiceren. De versie is een tekstreeks. U kunt ervoor kiezen om elk versiesysteem te volgen, inclusief semantisch versiesysteem. Gebruikers van de sjabloonspecificatie kunnen de versienaam geven die ze willen gebruiken bij het implementeren ervan.
Tags gebruiken
Tags zijn een hulpmiddel bij het logisch ordenen van uw resources. U kunt tags toevoegen aan sjabloonspecificaties met behulp van Azure PowerShell en Azure CLI:
New-AzTemplateSpec `
-Name storageSpec `
-Version 1.0a `
-ResourceGroupName templateSpecsRg `
-Location westus2 `
-TemplateFile ./mainTemplate.json `
-Tag @{Dept="Finance";Environment="Production"}
Set-AzTemplateSpec `
-Name storageSpec `
-Version 1.0a `
-ResourceGroupName templateSpecsRg `
-Location westus2 `
-TemplateFile ./mainTemplate.json `
-Tag @{Dept="Finance";Environment="Production"}
Bij het maken of wijzigen van een sjabloonspecificatie met de opgegeven versieparameter, maar zonder de parameter tag/tags:
- Als de sjabloonspecificatie bestaat en tags bevat, maar de versie niet bestaat, neemt de nieuwe versie dezelfde tags over als de bestaande sjabloonspecificatie.
Wanneer u een sjabloonspecificatie maakt of wijzigt met zowel de parameter tag/tags als de opgegeven versieparameter:
- Als zowel de sjabloonspecificatie als de versie niet bestaat, worden de tags toegevoegd aan zowel de nieuwe sjabloonspecificatie als de nieuwe versie.
- Als de sjabloonspecificatie bestaat, maar de versie niet bestaat, worden de tags alleen toegevoegd aan de nieuwe versie.
- Als zowel de sjabloonspecificatie als de versie bestaan, zijn de tags alleen van toepassing op de versie.
Wanneer u een sjabloon wijzigt met de parameter tag/tags die is opgegeven, maar zonder de opgegeven versieparameter, worden de tags alleen toegevoegd aan de sjabloonspecificatie.
Een sjabloonspecificatie met gekoppelde sjablonen maken
Als de hoofdsjabloon voor uw sjabloonspecificatie verwijst naar gekoppelde sjablonen, kunnen de PowerShell- en CLI-opdrachten de gekoppelde sjablonen automatisch zoeken en verpakken vanaf uw lokale station. U hoeft opslagaccounts of opslagplaatsen niet handmatig te configureren om de sjabloonspecificaties te hosten. Alles staat op zichzelf in de resource voor de sjabloonspecificatie.
Het volgende voorbeeld bestaat uit een hoofdsjabloon met twee gekoppelde sjablonen. Het voorbeeld is slechts een fragment van de sjabloon. U ziet dat deze een eigenschap met de naam relativePath gebruikt om een koppeling te maken met de andere sjablonen. U moet apiVersion of later gebruiken voor de 2020-06-01 implementatieresource.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
...
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "artifacts/webapp.json"
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
...
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "artifacts/database.json"
}
}
}
],
"outputs": {}
}
Wanneer de PowerShell- of CLI-opdracht voor het maken van de sjabloonspecificatie wordt uitgevoerd voor het vorige voorbeeld, zoekt de opdracht drie bestanden- de hoofdsjabloon, de web-app-sjabloon ( ) en de databasesjabloon ( ) - en verpakt deze in de webapp.json database.json sjabloonspecificatie.
Zie Zelfstudie: Een sjabloonspecificatie maken met gekoppelde sjablonen voor meer informatie.
Sjabloonspecificatie implementeren als gekoppelde sjabloon
Zodra u een sjabloonspecificatie hebt gemaakt, kunt u deze eenvoudig opnieuw gebruiken vanuit een ARM-sjabloon of een andere sjabloonspecificatie. U koppelt aan een sjabloonspecificatie door de resource-id toe te voegen aan uw sjabloon. De gekoppelde sjabloonspecificatie wordt automatisch geïmplementeerd wanneer u de hoofdsjabloon implementeert. Met dit gedrag kunt u modulaire sjabloonspecificaties ontwikkelen en deze waar nodig opnieuw gebruiken.
U kunt bijvoorbeeld een sjabloonspecificatie maken die netwerkbronnen implementeert en een andere sjabloonspecificatie die opslagbronnen implementeert. In ARM-sjablonen koppelt u aan deze twee sjabloonspecificaties wanneer u netwerk- of opslagbronnen moet configureren.
Het volgende voorbeeld is vergelijkbaar met het vorige voorbeeld, maar u gebruikt de eigenschap om een koppeling te maken naar een sjabloonspecificatie in plaats van de eigenschap om een koppeling naar een id relativePath lokale sjabloon te maken. Gebruik 2020-06-01 voor de API-versie voor de implementatieresource. In het voorbeeld staan de sjabloonspecificaties in een resourcegroep met de naam templateSpecsRG.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "networkingDeployment",
...
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('templateSpecsRG', 'Microsoft.Resources/templateSpecs/versions', 'networkingSpec', '1.0a')]"
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "storageDeployment",
...
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('templateSpecsRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0a')]"
}
}
}
],
"outputs": {}
}
Zie Zelfstudie: Een sjabloonspecificatie implementeren als gekoppelde sjabloon voor meer informatie over het koppelen van sjabloonspecificaties.
Volgende stappen
Zie Quickstart: Sjabloonspecificatie maken en implementeren als u een sjabloonspecificatie wilt maken en implementeren.
Zie Zelfstudie: Een sjabloonspecificatie maken met gekoppelde sjablonen voor meer informatie over het koppelen van sjablonen in sjabloonspecificaties.
Zie Zelfstudie: Een sjabloonspecificatie implementeren als gekoppelde sjabloon voor meer informatie over het implementeren van een sjabloonspecificatie als gekoppelde sjabloon.