パラメーターを使用して動的ブループリントを作成するCreating dynamic blueprints through parameters

さまざまなアーティファクト (リソース グループ、Resource Manager テンプレート、ポリシー、またはロールの割り当てなど) で完全に定義されたブループリントは、Azure 内のオブジェクトの迅速な作成と一貫性のある作成を提供します。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. これらの再利用可能なデザイン パターンとコンテナーの柔軟な使用を可能にするため、Azure Blueprint ではパラメーターをサポートしています。To enable flexible use of these reusable design patterns and containers, Azure Blueprints supports parameters. パラメーターを使用することで、ブループリントによってデプロイされたアーティファクトでプロパティを変更するため、定義と割り当ての最中の柔軟性が得られます。The parameter creates flexibility, both during definition and assignment, to change properties on the artifacts deployed by the blueprint.

単純な例が、リソース グループ アーティファクトです。A simple example is the resource group artifact. リソース グループを作成すると、そのグループは指定する必要がある 2 つの必須値 (名前と場所) を持ちます。When a resource group is created, it has two required values that must be provided: name and location. リソース グループをブループリントに追加するときに、パラメーターが存在していないと、このブループリントを使用するたびにその名前と場所を定義することになります。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. この繰り返しでブループリントを使用するたびに、同じリソース グループ内にアーティファクトが作成されることになります。This repetition would cause every use of the blueprint to create artifacts in the same resource group. そのリソース グループ内でリソースが重複し、競合が発生する場合があります。Resources inside that resource group would become duplicated and cause a conflict.

注意

2 つの異なるブループリントに同じ名前のリソース グループを含めることには問題はありません。It isn't an issue for two different blueprints to include a resource group with the same name. ブループリントに含まれているリソース グループが既に存在している場合、ブループリントは関連するアーティファクトをそのリソース グループ内に引き続き作成します。If a resource group included in a blueprint already exists, the blueprint continues to create the related artifacts in that resource group. サブスクリプション内に同じ名前とリソースの種類を持つ 2 つのリソースが存在することはできないため、これにより競合が発生する可能性があります。This could cause a conflict as two resources with the same name and resource type cannot exist within a subscription.

この問題の解決策は、パラメーターです。The solution to this problem is parameters. ブループリントでは、サブスクリプションへの割り当て中に、アーティファクトの各プロパティの値を定義できます。Blueprints allows you to define the value for each property of the artifact during assignment to a subscription. パラメーターにより、1 つのサブスクリプション内で競合することなく、リソース グループとその他のリソースを作成するブループリントを再利用することができます。The parameter makes it possible to reuse a blueprint that creates a resource group and other resources within a single subscription without having conflict.

ブループリントのパラメーターBlueprint parameters

REST API を使って、パラメーターをブループリント自体に作成できます。Through the REST API, parameters can be created on the blueprint itself. これらのパラメーターは、サポートされている各アーティファクトの各パラメーターと異なります。These parameters are different than the parameters on each of the supported artifacts. ブループリントでパラメーターを作成すると、そのブループリント内のアーティファクトで使用できます。When a parameter is created on the blueprint, it can be used by the artifacts in that blueprint. リソース グループの名前付けのプレフィックスはその一例です。An example might be the prefix for naming of the resource group. アーティファクトは、ブループリント パラメーターを使用して、"ほぼ動的な" パラメーターを作成できます。The artifact can use the blueprint parameter to create a "mostly dynamic" parameter. パラメーターは割り当て中にも定義できるので、このパターンでは一貫性を考慮して、名前規則に従うことができます。As the parameter can also be defined during assignment, this pattern allows for a consistency that may adhere to naming rules. 手順については、静的パラメーターの設定の「Blueprint level parameter」(ブループリント レベルのパラメーター) を参照してください。For steps, see setting static parameters - blueprint level parameter.

secureString パラメーターと secureObject パラメーターを使用するUsing secureString and secureObject parameters

Resource Manager テンプレート アーティファクトsecureString 型と secureObject 型のパラメーターをサポートしていますが、Azure Blueprint は Azure Key Vault と接続するためにそれぞれを必要とします。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. このセキュリティ手法では、ブループリントとシークレットを一緒に格納する安全性の低い手法を防止して、安全なパターンの使用を促します。This security measure prevents the unsafe practice of storing secrets along with the Blueprint and encourages employment of secure patterns. Azure Blueprints ではこのセキュリティ手法をサポートし、Resource Manager テンプレートの "アーティファクト" にあるいずれかの安全なパラメーターのインクルージョンを検出します。Azure Blueprints supports this security measure, detecting the inclusion of either secure parameter in a Resource Manager template artifact. 検出された安全なパラメーターごとに次の Key Vault プロパティの割り当て時に、プロンプトが表示されます。The service then prompts during assignment for the following Key Vault properties per detected secure parameter:

  • Key Vault リソース IDKey Vault resource ID
  • Key Vault シークレット名Key Vault secret name
  • Key Vault シークレット バージョンKey Vault secret version

ブループリント割り当てにおいてシステム割り当てマネージド ID が使用されている場合、参照された Key Vault はブループリント定義が割り当てられている同じサブスクリプションに存在する_必要があります_。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.

ブループリント割り当てにおいてユーザー割り当てマネージド ID が使用されている場合、参照された Key Vault は一元化されたサブスクリプションに存在する_可能性があります_。If the blueprint assignment uses a user-assigned managed identity, the referenced Key Vault may exist in a centralized subscription. ブループリント割り当て前に、マネージド ID には Key Vault に対する適切な権利が付与されている必要があります。The managed identity must be granted appropriate rights on the Key Vault prior to blueprint assignment.

重要

いずれの場合も、Key Vault ではアクセス ポリシー ページに構成されているテンプレート デプロイの Azure Resource Manager にアクセスできる必要があります。In both cases, the Key Vault must have Enable access to Azure Resource Manager for template deployment configured on the Access policies page. この機能を有効にする方法については、Key Vault の「テンプレートのデプロイを有効にする」を参照してください。For directions on how to enable this feature, see Key Vault - Enable template deployment.

Azure Key Vault の詳細については、Key Vault の概要ページを参照してください。For more information about Azure Key Vault, see Key Vault Overview.

パラメーターの種類Parameter types

静的パラメーターStatic parameters

どのブループリントを使用しても、静的な値を使用しているアーティファクトがデプロイされるので、ブループリントの定義の中で定義されたパラメーター値は、静的パラメーターと呼ばれます。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. リソース グループの例では、リソース グループの名前には有効ではありませんが、場所には有効です。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. ブループリントのすべての割り当てでは、割り当て時に呼び出されたものが何であれ、同じ場所にリソース グループが作成されます。Then, every assignment of the blueprint would create the resource group, whatever it's called during assignment, in the same location. この柔軟性により、必要なときに定義するものと、割り当て時に変更できるものを選択できるようになります。This flexibility allows you to be selective in what you define as required vs what can be changed during assignment.

ポータルで静的パラメーターを設定するSetting static parameters in the portal

  1. 左側のウィンドウにある [すべてのサービス] を選択します。Select All services in the left pane. [ブループリント] を探して選択します。Search for and select Blueprints.

  2. 左側のページから [ブループリントの定義] を選択します。Select Blueprint definitions from the page on the left.

  3. 既存のブループリントをクリックし、 [ブループリントを編集する] をクリックするか、 [+ ブループリントを作成する] をクリックして、 [基本] タブに情報を入力します。Click on an existing blueprint and then click Edit blueprint OR click + Create blueprint and fill out the information on the Basics tab.

  4. [次へ: アーティファクト] をクリックするか、 [アーティファクト] タブをクリックします。Click Next: Artifacts OR click on the Artifacts tab.

  5. パラメーター オプションを持つブループリントに追加されたアーティファクトの [パラメーター] 列に、 [X of Y parameters populated](X/Y のパラメーターが設定されました) が表示されます。Artifacts added to the blueprint that have parameter options display X of Y parameters populated in the Parameters column. パラメーターを編集するには、そのアーティファクト行をクリックします。Click on the artifact row to edit the artifact parameters.

    ブループリント定義でのブループリントのパラメーター

  6. [成果物の編集] ページには、クリックしたアーティファクトに適した値オプションが表示されます。The Edit Artifact page displays value options appropriate to the artifact clicked on. アーティファクトの各パラメーターには、タイトル、値ボックス、チェックボックスがあります。Each parameter on the artifact has a title, a value box, and a checkbox. 静的パラメーターにするには、チェックボックスをオフに設定します。Set the box to unchecked to make it a static parameter. 次の例では、 [場所] のチェックボックスがオフで、 [リソース グループ名] のチェックボックスはオンになっているため、場所のみが静的パラメーターです。In the example below, only Location is a static parameter as it's unchecked and Resource Group Name is checked.

    ブループリント アーティファクトでのブループリントの静的パラメーター

REST API で静的パラメーターを設定するSetting static parameters from REST API

各 REST API URI には、独自の値で置き換える必要のある変数があります。In each REST API URI, there are variables that are used that you need to replace with your own values:

  • {YourMG} - 実際の管理グループの名前に置き換えます{YourMG} - Replace with the name of your management group
  • {subscriptionId} - サブスクリプション ID で置き換えます{subscriptionId} - Replace with your subscription ID
ブループリント レベルのパラメーターBlueprint level parameter

REST API を使用してブループリントを作成するときに、ブループリントのパラメーターを作成することができます。When creating a blueprint through REST API, it's possible to create blueprint parameters. これを行うには、次の REST API URI と本文の形式を使用します。To do so, use the following REST API URI and body format:

  • REST API URIREST API URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
    
  • 要求本文Request 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."
                }
            }
        }
    }
    

ブループリント レベルのパラメーターを作成すると、そのブループリントに追加されるアーティファクトで使用できるようになります。Once a blueprint level parameter is created, it can be used on artifacts added to that blueprint. 次の REST API の例では、ブループリントでロールの割り当てアーティファクトを作成し、ブループリント レベルのパラメーターを使用します。The following REST API example creates a role assignment artifact on the blueprint and uses the blueprint level parameter.

  • REST API URIREST 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
    
  • 要求本文Request Body

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

この例では、[parameters('owners')] の値を利用することで、principalIds プロパティで owners ブループリント レベルのパラメーターを使用しています。In this example, the principalIds property uses the owners blueprint level parameter by using a value of [parameters('owners')]. ブループリント レベルのパラメーターを使用してアーティファクト上にパラメーターを設定しても、やはり静的パラメーターの 1 例になります。Setting a parameter on an artifact using a blueprint level parameter is still an example of a static parameter. ブループリント レベルのパラメーターは、ブループリントの割り当て中に設定することはできず、割り当てごとに同じ値になります。The blueprint level parameter can't be set during blueprint assignment and will be the same value on each assignment.

アーティファクト レベルのパラメーターArtifact level parameter

アーティファクトでの静的パラメーターの作成は似ていますが、parameters() 関数を使用する代わりに、直接値を受け取ります。Creating static parameters on an artifact is similar, but takes a straight value instead of using the parameters() function. 次の例では、2 つの静的パラメーター tagNametagValue を作成します。The following example creates two static parameters, tagName and tagValue. 各値は直接提供され、関数呼び出しは使用しません。The value on each is directly provided and doesn't use a function call.

  • REST API URIREST 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
    
  • 要求本文Request 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"
                }
            }
        }
    }
    

動的パラメーターDynamic parameters

静的パラメーターの逆が動的パラメーターです。The opposite of a static parameter is a dynamic parameter. このパラメーターは、ブループリント上に定義されるのではなく、ブループリントの割り当てのたびに定義されます。This parameter isn't defined on the blueprint, but instead is defined during each assignment of the blueprint. リソース グループの例では、リソース グループ名には、動的パラメーターの使用が有効です。In the resource group example, use of a dynamic parameter makes sense for the resource group name. ブループリントの割り当てごとに、別の名前を指定します。It provides a different name for every assignment of the blueprint. ブルー プリントの関数の一覧は、「blueprint functions」 (ブループリント関数) を参照してください。For a list of blueprint functions, see the blueprint functions reference.

ポータルで動的パラメーターを設定するSetting dynamic parameters in the portal

  1. 左側のウィンドウにある [すべてのサービス] を選択します。Select All services in the left pane. [ブループリント] を探して選択します。Search for and select Blueprints.

  2. 左側のページから [ブループリントの定義] を選択します。Select Blueprint definitions from the page on the left.

  3. 割り当てるブループリントを右クリックします。Right-click on the blueprint that you want to assign. [ブループリントの割り当て] を選択するか、割り当てるブループリントをクリックして、 [ブループリントの割り当て] ボタンをクリックします。Select Assign blueprint OR click on the blueprint you want to assign, then click the Assign blueprint button.

  4. [ブループリントの割り当て] ページで、 [アーティファクト パラメーター] セクションを見つけます。On the Assign blueprint page, find the Artifact parameters section. 少なくとも 1 つ以上の動的パラメーターを持つアーティファクトごとに、アーティファクトと構成オプションが表示されます。Each artifact with at least one dynamic parameter displays the artifact and the configuration options. ブループリントを割り当てる前に、パラメーターに必要な値を指定します。Provide required values to the parameters before assigning the blueprint. 次の例では、Name がブループリント割り当てを完了するために定義する必要がある動的パラメーターです。In the example below, Name is a dynamic parameter that must be defined to complete blueprint assignment.

    ブループリント割り当て時のブループリントの動的パラメーター

REST API で動的パラメーターを設定するSetting dynamic parameters from REST API

割り当て時に動的パラメーターを設定するには、値を直接指定します。Setting dynamic parameters during the assignment is done by entering the value directly. パラメータ () などの関数を使用する代わりに、指定した値が適切な文字列になります。Instead of using a function, such as parameters(), the value provided is an appropriate string. リソース グループのアーティファクトは、"テンプレート名" と name および location プロパティで定義されます。Artifacts for a resource group are defined with a "template name", name, and location properties. 含まれているアーティファクトのその他すべてのパラメーターは、parameters の下で <name>value のキー ペアで定義されます。All other parameters for included artifact are defined under parameters with a <name> and value key pair. 割り当て時に指定されていない動的パラメーターにブループリントを構成すると、割り当ては失敗します。If the blueprint is configured for a dynamic parameter that isn't provided during assignment, the assignment will fail.

  • REST API URIREST API URI

    PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    
  • 要求本文Request 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"
    }
    

次の手順Next steps