Funktioner för användning med Azure Blueprints
Azure Blueprints innehåller funktioner som gör en skissdefinition mer dynamisk. Dessa funktioner används med skissdefinitioner och skissartefakter. En Azure Resource Manager-mallartefakt (ARM-mall) stöder fullständig användning av Resource Manager-funktioner utöver att hämta ett dynamiskt värde via en skissparameter.
Följande funktioner stöds:
Artefakter
artifacts(artifactName)
Returnerar ett objekt med egenskaper som fylls i med skissartefakter som matas ut.
Anteckning
Funktionen artifacts() kan inte användas inifrån en ARM-mall. Funktionen kan bara användas i skissdefinitionens JSON eller i artefakt-JSON när du hanterar skissen med Azure PowerShell eller REST API som en del av Blueprints-as-code.
Parametrar
| Parameter | Krävs | Typ | Beskrivning |
|---|---|---|---|
| artifactName | Ja | sträng | Namnet på en skissartefakt. |
Returvärde
Ett objekt med utdataegenskaper. Utdataegenskaperna är beroende av vilken typ av skissartefakt som refereras. Alla typer följer formatet:
{
"outputs": {collectionOfOutputProperties}
}
Principtilldelningsartefakt
{
"outputs": {
"policyAssignmentId": "{resourceId-of-policy-assignment}",
"policyAssignmentName": "{name-of-policy-assignment}",
"policyDefinitionId": "{resourceId-of-policy-definition}",
}
}
ARM-mallartefakt
Utdataegenskaperna för det returnerade objektet definieras i ARM-mallen och returneras av distributionen.
Rolltilldelningsartefakt
{
"outputs": {
"roleAssignmentId": "{resourceId-of-role-assignment}",
"roleDefinitionId": "{resourceId-of-role-definition}",
"principalId": "{principalId-role-is-being-assigned-to}",
}
}
Exempel
En ARM-mallartefakt med ID:t myTemplateArtifact som innehåller följande exempelegenskap för utdata:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
...
"outputs": {
"myArray": {
"type": "array",
"value": ["first", "second"]
},
"myString": {
"type": "string",
"value": "my string value"
},
"myObject": {
"type": "object",
"value": {
"myProperty": "my value",
"anotherProperty": true
}
}
}
}
Några exempel på hämtning av data från myTemplateArtifact-exemplet är:
| Uttryck | Typ | Värde |
|---|---|---|
[artifacts("myTemplateArtifact").outputs.myArray] |
Matris | ["first", "second"] |
[artifacts("myTemplateArtifact").outputs.myArray[0]] |
Sträng | "first" |
[artifacts("myTemplateArtifact").outputs.myString] |
Sträng | "mitt strängvärde" |
[artifacts("myTemplateArtifact").outputs.myObject] |
Objekt | { "myproperty": "my value", "anotherProperty": true } |
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] |
Sträng | "mitt värde" |
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] |
Bool | Sant |
Concat
concat(string1, string2, string3, ...)
Kombinerar flera strängvärden och returnerar den sammanfogade strängen.
Parametrar
| Parameter | Krävs | Typ | Beskrivning |
|---|---|---|---|
| string1 | Ja | sträng | Det första värdet för sammanfogning. |
| ytterligare argument | Inga | sträng | Ytterligare värden i sekventiell ordning för sammanfogning |
Returvärde
En sträng med sammanfogade värden.
Kommentarer
Funktionen Azure Blueprints skiljer sig från ARM-mallfunktionen på så sätt att den bara fungerar med strängar.
Exempel
concat(parameters('organizationName'), '-vm')
parametrar
parameters(parameterName)
Returnerar ett skissparametervärde. Det angivna parameternamnet måste definieras i skissdefinitionen eller i skissartefakter.
Parametrar
| Parameter | Krävs | Typ | Beskrivning |
|---|---|---|---|
| parameterName | Ja | sträng | Namnet på parametern som ska returneras. |
Returvärde
Värdet för den angivna skissen eller skissartefaktparametern.
Kommentarer
Funktionen Azure Blueprints skiljer sig från ARM-mallfunktionen på så sätt att den endast fungerar med skissparametrar.
Exempel
Definiera parametern principalIds i skissdefinitionen:
{
"type": "Microsoft.Blueprint/blueprints",
"properties": {
...
"parameters": {
"principalIds": {
"type": "array",
"metadata": {
"displayName": "Principal IDs",
"description": "This is a blueprint parameter that any artifact can reference. We'll display these descriptions for you in the info bubble. Supply principal IDs for the users,groups, or service principals for the Azure role assignment.",
"strongType": "PrincipalId"
}
}
},
...
}
}
Använd sedan principalIds som argument för i parameters() en skissartefakt:
{
"type": "Microsoft.Blueprint/blueprints/artifacts",
"kind": "roleAssignment",
...
"properties": {
"roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
"principalIds": "[parameters('principalIds')]",
...
}
}
resourceGroup
resourceGroup()
Returnerar ett objekt som representerar den aktuella resursgruppen.
Returvärde
Det returnerade objektet har följande format:
{
"name": "{resourceGroupName}",
"location": "{resourceGroupLocation}",
}
Kommentarer
Funktionen Azure Blueprints skiljer sig från ARM-mallfunktionen. Funktionen resourceGroup() kan inte användas i en artefakt på prenumerationsnivå eller skissdefinitionen. Det kan bara användas i skissartefakter som ingår i en resursgruppsartefakt.
Ett vanligt sätt att använda resourceGroup() funktionen är att skapa resurser på samma plats som resursgruppsartefakten.
Exempel
Om du vill använda resursgruppens plats anger du i skissdefinitionen eller under tilldelningen, som plats för en annan artefakt, deklarerar du ett platshållarobjekt för resursgruppen i skissdefinitionen. I det här exemplet är NetworkingPlaceholder namnet på platshållaren för resursgruppen.
{
"type": "Microsoft.Blueprint/blueprints",
"properties": {
...
"resourceGroups": {
"NetworkingPlaceholder": {
"location": "eastus"
}
}
}
}
Använd sedan funktionen resourceGroup() i kontexten för en skissartefakt som är riktad mot ett platshållarobjekt för en resursgrupp. I det här exemplet distribueras mallartefakten till resursgruppen NetworkingPlaceholder och tillhandahåller parametern resourceLocation dynamiskt ifylld med resursgruppen NetworkingPlaceholder till mallen. Platsen för resursgruppen NetworkingPlaceholder kan ha statiskt definierats i skissdefinitionen eller ha definierats dynamiskt under tilldelningen. I båda fallen tillhandahålls mallartefakten den informationen som en parameter och använder den för att distribuera resurserna till rätt plats.
{
"type": "Microsoft.Blueprint/blueprints/artifacts",
"kind": "template",
"properties": {
"template": {
...
},
"resourceGroup": "NetworkingPlaceholder",
...
"parameters": {
"resourceLocation": {
"value": "[resourceGroup().location]"
}
}
}
}
resourceGroups
resourceGroups(placeholderName)
Returnerar ett -objekt som representerar den angivna resursgruppsartefakten. Till skillnad från , som kräver kontext för artefakten, används den här funktionen för att hämta egenskaperna för en specifik platshållare för resursgrupper när den inte finns i resourceGroup() kontexten för den resursgruppen.
Parametrar
| Parameter | Krävs | Typ | Beskrivning |
|---|---|---|---|
| placeholderName | Ja | sträng | Platshållarnamnet för den resursgruppsartefakt som ska returneras. |
Returvärde
Det returnerade objektet har följande format:
{
"name": "{resourceGroupName}",
"location": "{resourceGroupLocation}",
}
Exempel
Om du vill använda resursgruppens plats anger du i skissdefinitionen eller under tilldelningen, som plats för en annan artefakt, deklarerar du ett platshållarobjekt för resursgruppen i skissdefinitionen. I det här exemplet är NetworkingPlaceholder namnet på platshållaren för resursgruppen.
{
"type": "Microsoft.Blueprint/blueprints",
"properties": {
...
"resourceGroups": {
"NetworkingPlaceholder": {
"location": "eastus"
}
}
}
}
Använd sedan funktionen resourceGroups() från kontexten för en skissartefakt för att hämta en referens till platshållarobjektet för resursgruppen. I det här exemplet distribueras mallartefakten utanför resursgruppen NetworkingPlaceholder och tillhandahåller parametern artifactLocation dynamiskt ifylld med resursgruppen NetworkingPlaceholder till mallen. Platsen för resursgruppen NetworkingPlaceholder kan ha statiskt definierats i skissdefinitionen eller ha definierats dynamiskt under tilldelningen. I båda fallen tillhandahålls mallartefakten den informationen som en parameter och använder den för att distribuera resurserna till rätt plats.
{
"kind": "template",
"properties": {
"template": {
...
},
...
"parameters": {
"artifactLocation": {
"value": "[resourceGroups('NetworkingPlaceholder').location]"
}
}
},
"type": "Microsoft.Blueprint/blueprints/artifacts",
"name": "myTemplate"
}
prenumeration
subscription()
Returnerar information om prenumerationen för den aktuella skisstilldelningen.
Returvärde
Det returnerade objektet har följande format:
{
"id": "/subscriptions/{subscriptionId}",
"subscriptionId": "{subscriptionId}",
"tenantId": "{tenantId}",
"displayName": "{name-of-subscription}"
}
Exempel
Använd prenumerationens visningsnamn och funktionen för att concat() skapa en namngivningskonvention som skickas som parametern resourceName till mallartefakten.
{
"kind": "template",
"properties": {
"template": {
...
},
...
"parameters": {
"resourceName": {
"value": "[concat(subscription().displayName, '-vm')]"
}
}
},
"type": "Microsoft.Blueprint/blueprints/artifacts",
"name": "myTemplate"
}
Nästa steg
- Mer information om livscykeln för en skiss.
- Förstå hur du använder statiska och dynamiska parametrar.
- Lär dig hur du anpassar sekvensordningen för en skiss.
- Lär dig hur du använder resurslåsning för en skiss.
- Lär dig hur du uppdaterar befintliga tilldelningar.
- Lös problem som kan uppstå vid tilldelningen av en skiss med allmän felsökning.