Functies voor gebruik met Azure Blueprints

Azure Blueprints functies die een blauwdrukdefinitie dynamischer maken. Deze functies zijn voor gebruik met blauwdrukdefinities en blauwdrukartefacten. Een Azure Resource Manager sjabloon (ARM-sjabloon) ondersteunt het volledige gebruik van Resource Manager-functies, naast het verkrijgen van een dynamische waarde via een blauwdrukparameter.

De volgende functies worden ondersteund:

Artefacten

artifacts(artifactName)

Retourneert een object met eigenschappen dat is gevuld met de uitvoer van blauwdrukartefacten.

Notitie

De artifacts() functie kan niet worden gebruikt vanuit een ARM-sjabloon. De functie kan alleen worden gebruikt in de blauwdrukdefinitie JSON of in de JSON van het artefact bij het beheren van de blauwdruk met Azure PowerShell of REST API als onderdeel van Blueprints-as-code.

Parameters

Parameter Vereist Type Description
artifactName Yes tekenreeks De naam van een blauwdrukartefact.

Retourwaarde

Een object van uitvoereigenschappen. De uitvoereigenschappen zijn afhankelijk van het type blauwdrukartefact waarnaar wordt verwezen. Alle typen hebben de volgende indeling:

{
  "outputs": {collectionOfOutputProperties}
}

Beleidstoewijzingsartefact

{
    "outputs": {
        "policyAssignmentId": "{resourceId-of-policy-assignment}",
        "policyAssignmentName": "{name-of-policy-assignment}",
        "policyDefinitionId": "{resourceId-of-policy-definition}",
    }
}

ARM-sjabloonartefact

De uitvoereigenschappen van het geretourneerde object worden gedefinieerd in de ARM-sjabloon en geretourneerd door de implementatie.

Roltoewijzingsartefact

{
    "outputs": {
        "roleAssignmentId": "{resourceId-of-role-assignment}",
        "roleDefinitionId": "{resourceId-of-role-definition}",
        "principalId": "{principalId-role-is-being-assigned-to}",
    }
}

Voorbeeld

Een ARM-sjabloonartefact met de id myTemplateArtifact met de volgende voorbeelduitvoer-eigenschap:

{
    "$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
            }
        }
    }
}

Enkele voorbeelden van het ophalen van gegevens uit het myTemplateArtifact-voorbeeld zijn:

Expression Type Waarde
[artifacts("myTemplateArtifact").outputs.myArray] Matrix ["first", "second"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] Tekenreeks 'first'
[artifacts("myTemplateArtifact").outputs.myString] Tekenreeks 'mijn tekenreekswaarde'
[artifacts("myTemplateArtifact").outputs.myObject] Object { "myproperty": "mijn waarde", "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] Tekenreeks 'mijn waarde'
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Booleaanse waarde True

Concat

concat(string1, string2, string3, ...)

Combineert meerdere tekenreekswaarden en retourneert de samenvoegde tekenreeks.

Parameters

Parameter Vereist Type Description
tekenreeks1 Yes tekenreeks De eerste waarde voor samenvoeging.
aanvullende argumenten No tekenreeks Aanvullende waarden in sequentiële volgorde voor samenvoeging

Retourwaarde

Een tekenreeks met samenvoegingswaarden.

Opmerkingen

De Azure Blueprints verschilt van de ARM-sjabloonfunctie in dat deze alleen werkt met tekenreeksen.

Voorbeeld

concat(parameters('organizationName'), '-vm')

parameters

parameters(parameterName)

Retourneert een blauwdrukparameterwaarde. De opgegeven parameternaam moet worden gedefinieerd in de blauwdrukdefinitie of in blauwdrukartefacten.

Parameters

Parameter Vereist Type Description
parameterName Yes tekenreeks De naam van de parameter die moet worden retourneren.

Retourwaarde

De waarde van de opgegeven blauwdruk- of blauwdrukartefactparameter.

Opmerkingen

De Azure Blueprints verschilt van de ARM-sjabloonfunctie in dat deze alleen werkt met blauwdrukparameters.

Voorbeeld

Definieer parameter-principalIds in de blauwdrukdefinitie:

{
    "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"
                }
            }
        },
        ...
    }
}

Gebruik vervolgens principalIds als argument voor parameters() in een blauwdrukartefact:

{
    "type": "Microsoft.Blueprint/blueprints/artifacts",
    "kind": "roleAssignment",
    ...
    "properties": {
        "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
        "principalIds": "[parameters('principalIds')]",
        ...
    }
}

resourceGroup

resourceGroup()

Retourneert een -object dat de huidige resourcegroep vertegenwoordigt.

Retourwaarde

Het geretourneerde object heeft de volgende indeling:

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Opmerkingen

De Azure Blueprints functie verschilt van de arm-sjabloonfunctie. De functie kan niet worden gebruikt in een artefact op resourceGroup() abonnementsniveau of in de blauwdrukdefinitie. Deze kan alleen worden gebruikt in blauwdrukartefacten die deel uitmaken van een resourcegroepartefact.

Een veelgebruikte functie resourceGroup() is het maken van resources op dezelfde locatie als het artefact van de resourcegroep.

Voorbeeld

Als u de locatie van de resourcegroep wilt gebruiken, stelt u in de blauwdrukdefinitie of tijdens de toewijzing in als de locatie voor een ander artefact, declareer dan een tijdelijke aanduiding voor de resourcegroep in uw blauwdrukdefinitie. In dit voorbeeld is NetworkingPlaceholder de naam van de tijdelijke aanduiding voor de resourcegroep.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Gebruik vervolgens de functie resourceGroup() in de context van een blauwdrukartefact dat is gericht op een tijdelijke aanduiding voor een resourcegroepobject. In dit voorbeeld wordt het sjabloonartefact geïmplementeerd in de resourcegroep NetworkingPlaceholder en wordt de parameter resourceLocation dynamisch ingevuld met de locatie van de resourcegroep NetworkingPlaceholder voor de sjabloon. De locatie van de resourcegroep NetworkingPlaceholder kan statisch zijn gedefinieerd in de blauwdrukdefinitie of dynamisch zijn gedefinieerd tijdens de toewijzing. In beide gevallen wordt aan het sjabloonartefact die informatie verstrekt als parameter en gebruikt om de resources op de juiste locatie te implementeren.

{
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "kind": "template",
  "properties": {
      "template": {
        ...
      },
      "resourceGroup": "NetworkingPlaceholder",
      ...
      "parameters": {
        "resourceLocation": {
          "value": "[resourceGroup().location]"
        }
      }
  }
}

resourceGroups

resourceGroups(placeholderName)

Retourneert een -object dat het opgegeven resourcegroepartefact vertegenwoordigt. In tegenstelling tot , waarvoor context van het artefact is vereist, wordt deze functie gebruikt om de eigenschappen van een specifieke tijdelijke aanduiding voor een resourcegroep op te halen wanneer deze resourceGroup() niet in de context van die resourcegroep valt.

Parameters

Parameter Vereist Type Description
tijdelijke aanduidingName Yes tekenreeks De tijdelijke aanduidingsnaam van het resourcegroepartefact dat moet worden retourneren.

Retourwaarde

Het geretourneerde object heeft de volgende indeling:

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Voorbeeld

Als u de locatie van de resourcegroep wilt gebruiken, stelt u in de blauwdrukdefinitie of tijdens de toewijzing in als de locatie voor een ander artefact, declareer dan een tijdelijke aanduiding voor de resourcegroep in uw blauwdrukdefinitie. In dit voorbeeld is NetworkingPlaceholder de naam van de tijdelijke aanduiding voor de resourcegroep.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Gebruik vervolgens de functie resourceGroups() uit de context van een blauwdrukartefact om een verwijzing naar het tijdelijke aanduidingsobject voor de resourcegroep op te halen. In dit voorbeeld wordt het sjabloonartefact geïmplementeerd buiten de resourcegroep NetworkingPlaceholder en wordt parameter artifactLocation dynamisch ingevuld met de locatie van de resourcegroep NetworkingPlaceholder voor de sjabloon. De locatie van de resourcegroep NetworkingPlaceholder kan statisch zijn gedefinieerd in de blauwdrukdefinitie of dynamisch zijn gedefinieerd tijdens de toewijzing. In beide gevallen wordt aan het sjabloonartefact die informatie verstrekt als parameter en gebruikt om de resources op de juiste locatie te implementeren.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "artifactLocation": {
          "value": "[resourceGroups('NetworkingPlaceholder').location]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

abonnement

subscription()

Retourneert details over het abonnement voor de huidige blauwdruktoewijzing.

Retourwaarde

Het geretourneerde object heeft de volgende indeling:

{
    "id": "/subscriptions/{subscriptionId}",
    "subscriptionId": "{subscriptionId}",
    "tenantId": "{tenantId}",
    "displayName": "{name-of-subscription}"
}

Voorbeeld

Gebruik de weergavenaam van het abonnement en de functie om een naamconventie te maken die als concat() parameter resourceName wordt doorgegeven aan het sjabloonartefact.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "resourceName": {
          "value": "[concat(subscription().displayName, '-vm')]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

Volgende stappen