Parametreler aracılığıyla dinamik planlar oluşturmaCreating dynamic blueprints through parameters

Çeşitli yapıtlar (örneğin, kaynak grupları, Kaynak Yöneticisi şablonları, ilkeler veya rol atamaları) ile tam olarak tanımlanmış bir şema, Azure 'da nesnelerin hızlı bir şekilde oluşturulmasını ve tutarlı olarak oluşturulmasını sağlar.A fully defined blueprint with various artifacts (such as resource groups, Resource Manager templates, policies, or role assignments) offers the rapid creation and consistent creation of objects within Azure. Bu yeniden kullanılabilir Tasarım desenlerinin ve kapsayıcılarının esnek kullanımını etkinleştirmek için, Azure şemaları parametreleri destekler.To enable flexible use of these reusable design patterns and containers, Azure Blueprints supports parameters. Parametresi, şeması tarafından dağıtılan yapıtların özelliklerini değiştirmek için hem tanım hem de atama sırasında esneklik oluşturur.The parameter creates flexibility, both during definition and assignment, to change properties on the artifacts deployed by the blueprint.

Kaynak grubu yapıtı basit bir örnektir.A simple example is the resource group artifact. Bir kaynak grubu oluşturulduğunda, sağlanması gereken iki zorunlu değer vardır: ad ve konum.When a resource group is created, it has two required values that must be provided: name and location. Blueprint verilerinize bir kaynak grubu eklerken, parametreler yoksa, Blueprint 'in her kullanımı için bu adı ve konumu tanımlarsınız.When adding a resource group to your blueprint, if parameters didn't exist, you would define that name and location for every use of the blueprint. Bu yineleme, aynı kaynak grubunda yapılar oluşturmak için şema 'in her kullanımına neden olur.This repetition would cause every use of the blueprint to create artifacts in the same resource group. Bu kaynak grubundaki kaynaklar çoğaltılır ve bir çakışmaya neden olur.Resources inside that resource group would become duplicated and cause a conflict.

Not

Aynı ada sahip bir kaynak grubu dahil olmak üzere iki farklı şema için bir sorun değildir.It isn't an issue for two different blueprints to include a resource group with the same name. Şemayı içeren bir kaynak grubu zaten mevcutsa, şema bu kaynak grubunda ilgili yapıtları oluşturmaya devam eder.If a resource group included in a blueprint already exists, the blueprint continues to create the related artifacts in that resource group. Bu, bir abonelikte aynı ada ve kaynak türüne sahip iki kaynak bulunmadığından bir çakışmaya neden olabilir.This could cause a conflict as two resources with the same name and resource type cannot exist within a subscription.

Bu sorunun çözümü parametrelerdir.The solution to this problem is parameters. Planlar, bir aboneliğe atama sırasında yapıtın her özelliğinin değerini tanımlamanızı sağlar.Blueprints allows you to define the value for each property of the artifact during assignment to a subscription. Parametresi, bir kaynak grubu ve diğer kaynakları çakışma olmadan tek bir abonelik içinde oluşturan bir şema yeniden kullanılmasını mümkün kılar.The parameter makes it possible to reuse a blueprint that creates a resource group and other resources within a single subscription without having conflict.

Şema parametreleriBlueprint parameters

REST API aracılığıyla parametreler, şema üzerinde oluşturulabilir.Through the REST API, parameters can be created on the blueprint itself. Bu parametreler, desteklenen yapıtların her birinde parametrelerden farklıdır.These parameters are different than the parameters on each of the supported artifacts. Şema üzerinde bir parametre oluşturulduğunda bu şema, bu şema içindeki yapıtlar tarafından kullanılabilir.When a parameter is created on the blueprint, it can be used by the artifacts in that blueprint. Kaynak grubunun adlandırılmasıyla ilgili önek bir örnek olabilir.An example might be the prefix for naming of the resource group. Yapıt, "çoğunlukla dinamik" bir parametre oluşturmak için şema parametresini kullanabilir.The artifact can use the blueprint parameter to create a "mostly dynamic" parameter. Parametresi atama sırasında da tanımlanabilir, bu model adlandırma kurallarına uygun olabilecek bir tutarlılık sağlar.As the parameter can also be defined during assignment, this pattern allows for a consistency that may adhere to naming rules. Adımlar için bkz. statik parametreleri ayarlama-şema level parametresi.For steps, see setting static parameters - blueprint level parameter.

SecureString ve secureObject parametrelerini kullanmaUsing secureString and secureObject parameters

Kaynak Yöneticisi Şablon yapıtı SecureString ve secureobject türlerindeki parametreleri desteklese de Azure şemaları, her birinin bir Azure Key Vault bağlanmasını gerektirir.While a Resource Manager template artifact supports parameters of the secureString and secureObject types, Azure Blueprints requires each to be connected with an Azure Key Vault. Bu güvenlik önlemi, gizli dizileri depolar ve güvenli desenlerin çalışmasını teşvik eder.This security measure prevents the unsafe practice of storing secrets along with the Blueprint and encourages employment of secure patterns. Azure şemaları, Kaynak Yöneticisi şablonu _yapıtında_güvenli parametrelerin dahil edilmesini algılayan bu güvenlik ölçüsünü destekler.Azure Blueprints supports this security measure, detecting the inclusion of either secure parameter in a Resource Manager template artifact. Hizmet daha sonra, algılanan güvenli parametre başına aşağıdaki Key Vault özellikleri için atama sırasında uyarır:The service then prompts during assignment for the following Key Vault properties per detected secure parameter:

  • Key Vault kaynak KIMLIĞIKey Vault resource ID
  • Key Vault gizli dizi adıKey Vault secret name
  • Key Vault gizli sürümüKey Vault secret version

Şema ataması sistem tarafından atanan yönetilen kimlikkullanıyorsa, başvurulan Key Vault şema tanımının atandığı abonelikte aynı olması gerekir .If the blueprint assignment uses a system-assigned managed identity, the referenced Key Vault must exist in the same subscription the blueprint definition is assigned to.

Şema ataması Kullanıcı tarafından atanan yönetilen kimlikkullanıyorsa, başvurulan Key Vault merkezi bir abonelikte bulunabilir.If the blueprint assignment uses a user-assigned managed identity, the referenced Key Vault may exist in a centralized subscription. Yönetilen kimliğe, şema atamasından önce Key Vault uygun haklara sahip olmalıdır.The managed identity must be granted appropriate rights on the Key Vault prior to blueprint assignment.

Önemli

Her iki durumda da, Key Vault erişim ilkeleri sayfasında yapılandırılmış şablon dağıtımı Için Azure Resource Manager erişimi etkinleştir olmalıdır.In both cases, the Key Vault must have Enable access to Azure Resource Manager for template deployment configured on the Access policies page. Bu özelliğin nasıl etkinleştirileceği hakkında yönergeler için bkz. Key Vault-şablon dağıtımını etkinleştirme.For directions on how to enable this feature, see Key Vault - Enable template deployment.

Azure Key Vault hakkında daha fazla bilgi için bkz. Key Vault genel bakış.For more information about Azure Key Vault, see Key Vault Overview.

Parametre türleriParameter types

Statik parametrelerStatic parameters

Şema 'in tanımında tanımlanan bir parametre değerine statik parametredenir, çünkü şema 'in her kullanımı yapıyı bu statik değeri kullanarak dağıtacaktır.A parameter value defined in the definition of a blueprint is called a static parameter, because every use of the blueprint will deploy the artifact using that static value. Kaynak grubu örneğinde, kaynak grubunun adı için anlamlı olmasa da konum için anlamlı olabilir.In the resource group example, while it doesn't make sense for the name of the resource group, it might make sense for the location. Ardından, şema 'in her ataması, kaynak grubunu, atama sırasında her ne olursa olsun, aynı konumda oluşturur.Then, every assignment of the blueprint would create the resource group, whatever it's called during assignment, in the same location. Bu esneklik, atama sırasında nelerin değiştirilebileceklerini ve gerekli olarak tanımladıklarınızı seçmenize olanak sağlar.This flexibility allows you to be selective in what you define as required vs what can be changed during assignment.

Portalda statik parametreleri ayarlamaSetting static parameters in the portal

  1. Sol bölmedeki tüm hizmetler ' i seçin.Select All services in the left pane. Şemalarıarayın ve seçin.Search for and select Blueprints.

  2. Soldaki sayfadan Blueprint tanımlarını seçin.Select Blueprint definitions from the page on the left.

  3. Mevcut bir şema öğesine tıklayın ve ardından şemayı Düzenle ' ye tıklayın veya + şema oluştur ' a tıklayın ve temel bilgiler sekmesindeki bilgileri doldurun.Click on an existing blueprint and then click Edit blueprint OR click + Create blueprint and fill out the information on the Basics tab.

  4. İleri: yapıtlar ' e tıklayın veya yapılar sekmesine tıklayın.Click Next: Artifacts OR click on the Artifacts tab.

  5. Parametre seçeneklerine sahip şema öğesine eklenen yapılar, Parameters sütununda doldurulmuş X/Y parametrelerini görüntüler.Artifacts added to the blueprint that have parameter options display X of Y parameters populated in the Parameters column. Yapıt parametrelerini düzenlemek için yapıt satırına tıklayın.Click on the artifact row to edit the artifact parameters.

    Şema tanımında şema parametreleri

  6. Yapıtı Düzenle sayfası, tıklanan yapıya uygun değer seçeneklerini görüntüler.The Edit Artifact page displays value options appropriate to the artifact clicked on. Yapıtın üzerindeki her parametrenin bir başlığı, bir değer kutusu ve bir onay kutusu vardır.Each parameter on the artifact has a title, a value box, and a checkbox. Bir statik parametreyapmak için kutuyu işaretsiz olarak ayarlayın.Set the box to unchecked to make it a static parameter. Aşağıdaki örnekte, yalnızca konum işaretlenmemiştir ve kaynak grubu adı denetlendiğinden bir statik parametredir .In the example below, only Location is a static parameter as it's unchecked and Resource Group Name is checked.

    Şema yapıtı üzerinde şema statik parametrelerini Yazdır

REST API statik parametreleri ayarlamaSetting static parameters from REST API

Her bir REST API URI'sinde kendi değerlerinizle değiştirmeniz gereken değişkenler bulunur:In each REST API URI, there are variables that are used that you need to replace with your own values:

  • {YourMG} - Yönetim grubunuzun adıyla değiştirin{YourMG} - Replace with the name of your management group
  • {subscriptionId} - Abonelik kimliğinizle değiştirin{subscriptionId} - Replace with your subscription ID
Blueprint düzey parametresiBlueprint level parameter

REST API aracılığıyla bir şema oluştururken, şema parametrelerioluşturmak mümkündür.When creating a blueprint through REST API, it's possible to create blueprint parameters. Bunu yapmak için aşağıdaki REST API URI ve gövde biçimini kullanın:To do so, use the following REST API URI and body format:

  • REST API URI'siREST API URI

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

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

Şema level parametresi oluşturulduktan sonra, bu şema için eklenen yapıtlar üzerinde kullanılabilir.Once a blueprint level parameter is created, it can be used on artifacts added to that blueprint. Aşağıdaki REST API örnek, şema üzerinde bir rol atama yapıtı oluşturur ve şema Level parametresini kullanır.The following REST API example creates a role assignment artifact on the blueprint and uses the blueprint level parameter.

  • REST API URI'siREST 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
    
  • İstek GövdesiRequest Body

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

Bu örnekte, Prenalids özelliği [parameters('owners')] değerini kullanarak sahipler şeması düzeyi parametresini kullanır.In this example, the principalIds property uses the owners blueprint level parameter by using a value of [parameters('owners')]. Bir şema üzerinde bir parametre ayarlamak bir şema düzeyi parametresini kullanarak bir statik parametreörneği olmaya devam eder.Setting a parameter on an artifact using a blueprint level parameter is still an example of a static parameter. Şema level parametresi, şema atama sırasında ayarlanamaz ve her atamada aynı değer olacaktır.The blueprint level parameter can't be set during blueprint assignment and will be the same value on each assignment.

Yapıt düzeyi parametresiArtifact level parameter

Bir yapıtın üzerinde statik parametreler oluşturmak benzerdir, ancak parameters() işlevini kullanmak yerine düz bir değer alır.Creating static parameters on an artifact is similar, but takes a straight value instead of using the parameters() function. Aşağıdaki örnek iki statik parametre, TagName ve tagvalueoluşturur.The following example creates two static parameters, tagName and tagValue. Her bir üzerinde değer doğrudan sağlanır ve bir işlev çağrısı kullanmaz.The value on each is directly provided and doesn't use a function call.

  • REST API URI'siREST 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
    
  • İstek GövdesiRequest Body

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

Dinamik parametrelerDynamic parameters

Statik parametrenin tersi, dinamik bir parametredir.The opposite of a static parameter is a dynamic parameter. Bu parametre Blueprint üzerinde tanımlanmamıştır, ancak bunun yerine Blueprint 'in her ataması sırasında tanımlanmıştır.This parameter isn't defined on the blueprint, but instead is defined during each assignment of the blueprint. Kaynak grubu örneğinde, dinamik bir parametre kullanımı, kaynak grubu adı için anlamlı hale gelir.In the resource group example, use of a dynamic parameter makes sense for the resource group name. Blueprint 'in her ataması için farklı bir ad sağlar.It provides a different name for every assignment of the blueprint. Şema işlevlerinin bir listesi için, bkz. şema işlevleri başvurusu.For a list of blueprint functions, see the blueprint functions reference.

Portalda dinamik parametreleri ayarlamaSetting dynamic parameters in the portal

  1. Sol bölmedeki tüm hizmetler ' i seçin.Select All services in the left pane. Şemalarıarayın ve seçin.Search for and select Blueprints.

  2. Soldaki sayfadan Blueprint tanımlarını seçin.Select Blueprint definitions from the page on the left.

  3. Atamak istediğiniz şema öğesine sağ tıklayın.Right-click on the blueprint that you want to assign. Şema ata veya atamak istediğiniz şema ' i seçin, ardından şema ata düğmesine tıklayın.Select Assign blueprint OR click on the blueprint you want to assign, then click the Assign blueprint button.

  4. Şeması ata sayfasında, yapıt parametreleri bölümünü bulun.On the Assign blueprint page, find the Artifact parameters section. En az bir dinamik parametresi olan her yapıt yapıt ve yapılandırma seçeneklerini görüntüler.Each artifact with at least one dynamic parameter displays the artifact and the configuration options. Blueprint 'i atamadan önce parametrelere gerekli değerler sağlayın.Provide required values to the parameters before assigning the blueprint. Aşağıdaki örnekte ad , şema atamasını tamamlayacak şekilde tanımlanması gereken dinamik bir parametredir .In the example below, Name is a dynamic parameter that must be defined to complete blueprint assignment.

    Şema ataması sırasında şema dinamik parametresi

REST API dinamik parametreleri ayarlamaSetting dynamic parameters from REST API

Atama sırasında dinamik parametrelerin ayarlanması, doğrudan değer girilerek yapılır.Setting dynamic parameters during the assignment is done by entering the value directly. Parametreler ()gibi bir işlev kullanmak yerine, belirtilen değer uygun bir dizedir.Instead of using a function, such as parameters(), the value provided is an appropriate string. Bir kaynak grubunun yapıtları, "şablon adı", adve konum özellikleriyle tanımlanır.Artifacts for a resource group are defined with a "template name", name, and location properties. Dahil edilen yapıt için diğer tüm parametreler, <name @ no__t-3 ve değer anahtarı çiftiyle Parametreler altında tanımlanmıştır.All other parameters for included artifact are defined under parameters with a <name> and value key pair. Şema, atama sırasında sağlanmayan dinamik bir parametre için yapılandırılmışsa, atama başarısız olur.If the blueprint is configured for a dynamic parameter that isn't provided during assignment, the assignment will fail.

  • REST API URI'siREST API URI

    PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    
  • İstek GövdesiRequest Body

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

Sonraki adımlarNext steps