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