Dynamische blauwdrukken maken met parameters

Een volledig gedefinieerde blauwdruk met verschillende artefacten, zoals resourcegroepen, Azure Resource Manager-sjablonen (ARM-sjablonen), beleidsregels of roltoewijzingen, biedt het snel maken en consistent maken van objecten in Azure. Om flexibel gebruik van deze herbruikbare ontwerppatronen en -containers mogelijk te maken, ondersteunt Azure Blueprints parameters. De parameter biedt flexibiliteit, zowel tijdens de definitie als toewijzing, om eigenschappen te wijzigen van de artefacten die door de blauwdruk worden geïmplementeerd.

Een eenvoudig voorbeeld is het artefact van de resourcegroep. Wanneer een resourcegroep wordt gemaakt, moeten er twee vereiste waarden worden opgegeven: naam en locatie. Wanneer u een resourcegroep toevoegt aan uw blauwdruk en er geen parameters bestaan, definieert u die naam en locatie voor elk gebruik van de blauwdruk. Deze herhaling zou ertoe leiden dat bij elk gebruik van de blauwdruk artefacten in dezelfde resourcegroep worden gemaakt. Resources in die resourcegroep worden gedupliceerd en veroorzaken een conflict.

Notitie

Het is geen probleem voor twee verschillende blauwdrukken om een resourcegroep met dezelfde naam op te nemen. Als er al een resourcegroep in een blauwdruk bestaat, blijft de blauwdruk de gerelateerde artefacten in die resourcegroep maken. Dit kan een conflict veroorzaken omdat er twee resources met dezelfde naam zijn en het resourcetype niet binnen een abonnement kan bestaan.

De oplossing voor dit probleem zijn parameters. Azure Blueprints kunt u de waarde voor elke eigenschap van het artefact definiëren tijdens de toewijzing aan een abonnement. Met de parameter kunt u een blauwdruk hergebruiken die een resourcegroep en andere resources binnen één abonnement maakt zonder dat er een conflict ontstaat.

Blauwdrukparameters

Via de REST API parameters kunnen parameters worden gemaakt op de blauwdruk zelf. Deze parameters verschillen van de parameters voor elk van de ondersteunde artefacten. Wanneer een parameter wordt gemaakt op de blauwdruk, kan deze worden gebruikt door de artefacten in die blauwdruk. Een voorbeeld hiervan is het voorvoegsel voor de naamgeving van de resourcegroep. Het artefact kan de blauwdrukparameter gebruiken om een 'voornamelijk dynamische' parameter te maken. Omdat de parameter ook kan worden gedefinieerd tijdens de toewijzing, maakt dit patroon een consistentie mogelijk die kan voldoen aan naamgevingsregels. Zie Statische parameters instellen - parameter op blauwdrukniveau voor stappen.

Parameters secureString en secureObject gebruiken

Een ARM-sjabloonartefact ondersteunt parameters van de typen secureString en secureObject, maar Azure Blueprints vereist dat elke sjabloon is verbonden met een Azure Key Vault. Deze beveiligingsmaatregel voorkomt de onveilige praktijk van het opslaan van geheimen samen met de blauwdruk en bevordert het gebruik van beveiligde patronen. Azure Blueprints ondersteunt deze beveiligingsmaatregel door het opnemen van een van beide beveiligde parameters in een ARM-sjabloonartefact te detecteren. De service vraagt tijdens de toewijzing om de volgende eigenschappen Key Vault per gedetecteerde beveiligde parameter:

  • Key Vault resource-id
  • Key Vault naam van het geheim
  • Key Vault geheime versie

Als de blauwdruktoewijzing gebruikmaakt van een door het systeem toegewezen beheerde identiteit, moet de Key Vault bestaan in hetzelfde abonnement waar de blauwdrukdefinitie aan is toegewezen.

Als de blauwdruktoewijzing gebruikmaakt van een door de gebruiker toegewezen beheerde identiteit, kan de Key Vault in een gecentraliseerd abonnement aanwezig zijn. Aan de beheerde identiteit moeten de juiste rechten worden verleend op de Key Vault blauwdruktoewijzing.

Belangrijk

In beide gevallen moet de Key Vault toegang tot de sjabloon inschakelen Azure Resource Manager sjabloonimplementatie is geconfigureerd op de pagina Toegangsbeleid. Zie voor meer aanwijzingen over het inschakelen van deze functie Key Vault - Sjabloonimplementatie inschakelen.

Zie Overzicht van Azure Key Vault voor Key Vault Azure Key Vault informatie.

Parametertypen

Statische parameters

Een parameterwaarde die is gedefinieerd in de definitie van een blauwdruk wordt een statische parameter genoemd, omdat bij elk gebruik van de blauwdruk het artefact wordt geïmplementeerd met behulp van die statische waarde. In het voorbeeld van de resourcegroep is dit niet logisch voor de naam van de resourcegroep, maar kan dit wel zinvol zijn voor de locatie. Vervolgens maakt elke toewijzing van de blauwdruk de resourcegroep, ongeacht hoe deze wordt aangeroepen tijdens de toewijzing, op dezelfde locatie. Met deze flexibiliteit kunt u selectief zijn in wat u definieert als vereist versus wat kan worden gewijzigd tijdens de toewijzing.

Statische parameters instellen in de portal

  1. Selecteer Alle services in het linkerdeelvenster. Zoek en selecteer Blauwdrukken.

  2. Selecteer Blauwdrukdefinities op de pagina aan de linkerkant.

  3. Selecteer een bestaande blauwdruk en selecteer vervolgens Blauwdruk bewerken OF selecteer + Blauwdruk maken en vul de gegevens in op het tabblad Basisinformatie.

  4. Selecteer Volgende: Artefacten OF selecteer het tabblad Artefacten.

  5. Artefacten die zijn toegevoegd aan de blauwdruk met parameteropties geven X van Y-parameters weer die zijn ingevuld in de kolom Parameters. Selecteer de artefactrij om de artefactparameters te bewerken.

    Schermopname van een blauwdrukdefinitie en de 'X van Y-parameters ingevuld' gemarkeerd.

  6. Op de pagina Artefact bewerken worden waardeopties weergegeven die geschikt zijn voor het geselecteerde artefact. Elke parameter in het artefact heeft een titel, een waardevak en een selectievakje. Stel het selectievakje in op uitgeschakeld om er een statische parameter van te maken. In het volgende voorbeeld is alleen Location een statische parameter omdat deze is uitgeschakeld en Resourcegroepnaam is ingeschakeld.

    Schermopname van statische parameters voor een blauwdrukartefact.

Statische parameters van REST API

In elke REST API-URI zijn er verschillende variabelen die worden gebruikt en die u moet vervangen door uw eigen waarden:

  • Vervang {YourMG} door de naam van uw beheergroep
  • Vervang {subscriptionId} door uw abonnements-ID
Parameter op blauwdrukniveau

Wanneer u een blauwdruk maakt via REST API, is het mogelijk om blauwdrukparameters te maken. Gebruik de volgende URI en de REST API om dit te doen:

  • REST API-URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
    
  • Aanvraagtekst

    {
        "properties": {
            "description": "This blueprint has blueprint level parameters.",
            "targetScope": "subscription",
            "parameters": {
                "owners": {
                    "type": "array",
                    "metadata": {
                        "description": "List of AAD object IDs that is assigned Owner role at the resource group"
                    }
                }
            },
            "resourceGroups": {
                "storageRG": {
                    "description": "Contains the resource template deployment and a role assignment."
                }
            }
        }
    }
    

Zodra een parameter op blauwdrukniveau is gemaakt, kan deze worden gebruikt voor artefacten die aan die blauwdruk zijn toegevoegd. In het REST API voorbeeld wordt een artefact voor roltoewijzing gemaakt op de blauwdruk en wordt de parameter op blauwdrukniveau gebruikt.

  • REST API-URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
    
  • Aanvraagtekst

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

In dit voorbeeld gebruikt de eigenschap principalIds de parameter van het blauwdrukniveau van de eigenaar met behulp van een waarde van [parameters('owners')] . Het instellen van een parameter voor een artefact met behulp van een parameter op blauwdrukniveau is nog steeds een voorbeeld van een statische parameter. De parameter op blauwdrukniveau kan niet worden ingesteld tijdens de blauwdruktoewijzing en heeft dezelfde waarde voor elke toewijzing.

Parameter op artefactniveau

Het maken van statische parameters voor een artefact is vergelijkbaar, maar gebruikt een rechte waarde in plaats van de functie te parameters() gebruiken. In het volgende voorbeeld worden twee statische parameters gemaakt: tagName en tagValue. De waarde voor elk wordt rechtstreeks opgegeven en maakt geen gebruik van een functie-aanroep.

  • REST API-URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
    
  • Aanvraagtekst

    {
        "kind": "policyAssignment",
        "properties": {
            "description": "Apply storage tag and the parameter also used by the template to resource groups",
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
            "parameters": {
                "tagName": {
                    "value": "StorageType"
                },
                "tagValue": {
                    "value": "Premium_LRS"
                }
            }
        }
    }
    

Dynamische parameters

Het tegenovergestelde van een statische parameter is een dynamische parameter. Deze parameter wordt niet gedefinieerd in de blauwdruk, maar wordt in plaats daarvan gedefinieerd tijdens elke toewijzing van de blauwdruk. In het voorbeeld van de resourcegroep is het gebruik van een dynamische parameter zinvol voor de naam van de resourcegroep. Het biedt een andere naam voor elke toewijzing van de blauwdruk. Zie de naslag voor blauwdrukfuncties voor een lijst met blauwdrukfuncties.

Dynamische parameters instellen in de portal

  1. Selecteer Alle services in het linkerdeelvenster. Zoek en selecteer Blauwdrukken.

  2. Selecteer Blauwdrukdefinities op de pagina aan de linkerkant.

  3. Klik met de rechtermuisknop op de blauwdruk die u wilt toewijzen. Selecteer Blauwdruk toewijzen OF selecteer de blauwdruk die u wilt toewijzen en gebruik vervolgens de knop Blauwdruk toewijzen.

  4. Zoek op de pagina Blauwdruk toewijzen de sectie Artefactparameters. Elk artefact met ten minste één dynamische parameter geeft het artefact en de configuratieopties weer. Geef de vereiste waarden op voor de parameters voordat u de blauwdruk toewijst. In het volgende voorbeeld is Naam een dynamische parameter die moet worden gedefinieerd om de blauwdruktoewijzing te voltooien.

    Schermopname van het instellen van dynamische parameters tijdens de blauwdruktoewijzing.

Dynamische parameters van REST API

Het instellen van dynamische parameters tijdens de toewijzing wordt uitgevoerd door de waarde rechtstreeks in te geven. In plaats van een functie te gebruiken, zoals parameters(),is de opgegeven waarde een geschikte tekenreeks. Artefacten voor een resourcegroep worden gedefinieerd met een sjabloonnaam, naam en locatie-eigenschappen. Alle andere parameters voor opgenomen artefact worden gedefinieerd onder parameters met een <name> en-waardesleutelpaar. Als de blauwdruk is geconfigureerd voor een dynamische parameter die niet is opgegeven tijdens de toewijzing, mislukt de toewijzing.

  • REST API-URI

    PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    
  • Aanvraagtekst

    {
        "properties": {
            "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}  /providers/Microsoft.Blueprint/blueprints/MyBlueprint",
            "resourceGroups": {
                "storageRG": {
                    "name": "StorageAccount",
                    "location": "eastus2"
                }
            },
            "parameters": {
                "storageAccountType": {
                    "value": "Standard_GRS"
                },
                "tagName": {
                    "value": "CostCenter"
                },
                "tagValue": {
                    "value": "ContosoIT"
                },
                "contributors": {
                    "value": [
                        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                        "38833b56-194d-420b-90ce-cff578296714"
                    ]
                  },
                "owners": {
                    "value": [
                        "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                        "316deb5f-7187-4512-9dd4-21e7798b0ef9"
                    ]
                }
            }
        },
        "identity": {
            "type": "systemAssigned"
        },
        "location": "westus"
    }
    

Volgende stappen