Skapa dynamiska skisser via parametrar

En fullständigt definierad skiss med olika artefakter, till exempel resursgrupper, Azure Resource Manager-mallar (ARM-mallar), principer eller rolltilldelningar, ger ett snabbt skapande och konsekvent skapande av objekt i Azure. För att möjliggöra flexibel användning av dessa återanvändbara designmönster och containrar Azure Blueprints har stöd för parametrar. Parametern skapar flexibilitet, både under definition och tilldelning, för att ändra egenskaper på artefakterna som distribueras av skissen.

Ett enkelt exempel är resursgruppsartefakten. När en resursgrupp skapas har den två obligatoriska värden som måste anges: namn och plats. När du lägger till en resursgrupp i skissen skulle du, om parametrarna inte fanns, definiera namnet och platsen för varje användning av skissen. Den här upprepningen gör att varje användning av skissen skapas artefakter i samma resursgrupp. Resurser i resursgruppen skulle dupliceras och orsaka en konflikt.

Anteckning

Det är inte ett problem för två olika skisser att inkludera en resursgrupp med samma namn. Om det redan finns en resursgrupp som ingår i en skiss fortsätter skissen att skapa relaterade artefakter i resursgruppen. Detta kan orsaka en konflikt eftersom två resurser med samma namn och resurstyp inte kan finnas i en prenumeration.

Lösningen på det här problemet är parametrar. Azure Blueprints kan du definiera värdet för varje egenskap för artefakten under tilldelningen till en prenumeration. Parametern gör det möjligt att återanvända en skiss som skapar en resursgrupp och andra resurser i en enskild prenumeration utan konflikter.

Skissparametrar

Via REST API kan parametrar skapas på själva skissen. Dessa parametrar skiljer sig från parametrarna på var och en av de artefakter som stöds. När en parameter skapas på skissen kan den användas av artefakterna i skissen. Ett exempel kan vara prefixet för namngivning av resursgruppen. Artefakten kan använda skissparametern för att skapa en "mestadels dynamisk" parameter. Eftersom parametern också kan definieras under tilldelningen möjliggör det här mönstret en konsekvens som kan följa namngivningsregler. Anvisningar finns i Ange statiska parametrar – parameter på skissnivå.

Använda secureString- och secureObject-parametrar

Även om en ARM-mallartefakt stöder parametrar för typerna secureString och secureObject Azure Blueprints kräver att var och en är ansluten med en Azure Key Vault. Den här säkerhetsåtgärden förhindrar osäker praxis att lagra hemligheter tillsammans med skissen och uppmuntrar till anställning av säkra mönster. Azure Blueprints har stöd för det här säkerhetsmåttet och identifierar inkluderingen av en säker parameter i en ARM-mallartefakt. Tjänsten frågar sedan under tilldelningen efter följande egenskaper Key Vault identifierade säkra parametern:

  • Key Vault resurs-ID
  • Key Vault hemligt namn
  • Key Vault hemlig version

Om skisstilldelningen använder en system tilldelad hanterad identitet måste den refererade identiteten Key Vault finnas i samma prenumeration som skissdefinitionen är tilldelad till.

Om skisstilldelningen använder en användar tilldelad hanterad identitet kan den refererade Key Vault finnas i en centraliserad prenumeration. Den hanterade identiteten måste beviljas lämpliga rättigheter för Key Vault före skisstilldelningen.

Viktigt

I båda fallen måste Key Vault ha Aktivera åtkomst till Azure Resource Manager för malldistribution konfigurerad på sidan Åtkomstprinciper. Anvisningar om hur du aktiverar den här funktionen finns i Key Vault – Aktivera malldistribution.

Mer information om Azure Key Vault finns i Key Vault Översikt.

Parametertyper

Statiska parametrar

Ett parametervärde som definieras i definitionen av en skiss kallas för en statisk parameter, eftersom varje användning av skissen distribuerar artefakten med det statiska värdet. I exemplet med resursgruppen kan det vara logiskt för platsen, även om det inte är meningsfullt för namnet på resursgruppen. Sedan skulle varje tilldelning av skissen skapa resursgruppen, oavsett vad den anropas under tilldelningen, på samma plats. Med den här flexibiliteten kan du vara selektiv i det du definierar som obligatoriskt jämfört med vad som kan ändras under tilldelningen.

Ange statiska parametrar i portalen

  1. Välj Alla tjänster i den vänstra rutan. Sök efter och välj Skisser.

  2. Välj Skissdefinitioner till vänster på sidan.

  3. Välj en befintlig skiss och välj sedan Redigera skiss ELLER välj + Skapa skiss och fyll i informationen på fliken Grundläggande.

  4. Välj Nästa: Artefakter ELLER välj fliken Artefakter.

  5. Artefakter som har lagts till i skissen och som har parameteralternativ visar X av Y-parametrar som fyllts i i kolumnen Parametrar. Välj artefaktraden för att redigera artefaktparametrarna.

    Skärmbild av en skissdefinition och "X av Y-parametrarna ifyllda" markerade.

  6. Sidan Redigera artefakt visar de värdealternativ som är lämpliga för den valda artefakten. Varje parameter på artefakten har en rubrik, en värderuta och en kryssruta. Ställ in rutan på avmarkerad för att göra den till en statisk parameter. I följande exempel är endast Plats en statisk parameter eftersom den är avmarkerad och Resursgruppsnamn är markerat.

    Skärmbild av statiska parametrar på en skissartefakt.

Ange statiska parametrar från REST API

I varje REST API-URI finns det variabler som används och som du måste ersätta med egna värden:

  • {YourMG} – Ersätt med namnet på din hanteringsgrupp
  • {subscriptionId} – Ersätt med ditt prenumerations-ID
Parameter på skissnivå

När du skapar en skiss REST API en skiss kan du skapa skissparametrar . Det gör du genom att använda följande REST API URI och brödtextformat:

  • REST API-URI

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

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

När en parameter på skissnivå har skapats kan den användas på artefakter som läggs till i skissen. Följande exempel REST API skapar en rolltilldelningsartefakt på skissen och använder parametern på skissnivå.

  • 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
    
  • Begärandetext

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

I det här exemplet använder egenskapen principalIds parametern på skissnivå för ägare med hjälp av värdet [parameters('owners')] . Att ange en parameter på en artefakt med en parameter på skissnivå är fortfarande ett exempel på en statisk parameter. Parametern på skissnivå kan inte anges under skisstilldelningen och kommer att ha samma värde för varje tilldelning.

Parameter på artefaktnivå

Att skapa statiska parametrar på en artefakt liknar varandra, men tar ett stege värde i stället för att använda parameters() funktionen . I följande exempel skapas två statiska parametrar, tagName och tagValue. Värdet för varje anges direkt och använder inte ett funktionsanrop.

  • 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
    
  • Begärandetext

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

Dynamiska parametrar

Motsatsen till en statisk parameter är en dynamisk parameter. Den här parametern definieras inte på skissen, utan definieras i stället under varje tilldelning av skissen. I resursgruppsexempel är det klokt att använda en dynamisk parameter för resursgruppens namn. Det ger ett annat namn för varje tilldelning av skissen. En lista över skissfunktioner finns i referensen för skissfunktioner.

Ange dynamiska parametrar i portalen

  1. Välj Alla tjänster i den vänstra rutan. Sök efter och välj Skisser.

  2. Välj Skissdefinitioner till vänster på sidan.

  3. Högerklicka på den skiss som du vill tilldela. Välj Tilldela skiss ELLER välj den skiss som du vill tilldela och använd sedan knappen Tilldela skiss.

  4. På sidan Tilldela skiss hittar du avsnittet Artefaktparametrar. Varje artefakt med minst en dynamisk parameter visar artefakten och konfigurationsalternativen. Ange obligatoriska värden för parametrarna innan du tilldelar skissen. I följande exempel är Name en dynamisk parameter som måste definieras för att slutföra skisstilldelningen.

    Skärmbild av inställning av dynamiska parametrar under skisstilldelning.

Ange dynamiska parametrar från REST API

Du anger dynamiska parametrar under tilldelningen genom att ange värdet direkt. I stället för att använda en funktion, till exempel parameters(), är det angivna värdet en lämplig sträng. Artefakter för en resursgrupp definieras med egenskaperna "mallnamn", namn och plats. Alla andra parametrar för inkluderade artefakter definieras under parametrar med ett <name> värdenyckelpar och . Om skissen har konfigurerats för en dynamisk parameter som inte anges under tilldelningen misslyckas tilldelningen.

  • REST API-URI

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

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

Nästa steg