Aracılığıyla paylaş


ARM şablonlarındaki parametreler

Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) parametreleri tanımlama ve kullanma işlemleri açıklanmaktadır. Parametreler için farklı değerler sağlayarak, farklı ortamlar için bir şablonu yeniden kullanabilirsiniz.

Resource Manager, dağıtım işlemlerini başlatmadan önce parametre değerlerini çözümler. Parametre şablonda nerede kullanılırsa kullansın Resource Manager, parametresini çözümlenen değerle değiştirir.

Her parametre veri türlerinden birine ayarlanmalıdır.

minValue, maxValue, minLength, maxLength ve allowedValues'a ek olarak, languageVersion 2.0 tanımlarda, parametrelerde ve çıkış tanımlarında kullanılacak bazı toplama türü doğrulama kısıtlamaları sağlar. Bu kısıtlamalar şunlardır:

Not

Visual Studio Code için Azure Resource Manager Araçları uzantısının geçerli sürümü languageVersion 2.0'da yapılan iyileştirmeleri tanımıyor.

İpucu

ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz . parametreler.

Şablonda 256 parametreyle sınırlısınız. Daha fazla bilgi için bkz . Şablon sınırları.

Parametre en iyi yöntemleri için bkz . Parametreler.

En az bildirim

En azından, her parametrenin bir ad ve türe ihtiyacı vardır.

Azure portalı aracılığıyla bir şablon dağıttığınızda, büyük/küçük harfli parametre adları boşlukla ayrılmış adlara dönüştürülür. Örneğin, aşağıdaki örnekte demoString, Tanıtım Dizesi olarak gösterilmiştir. Daha fazla bilgi için bkz . GitHub deposundan şablonları dağıtmak için dağıtım düğmesi kullanma ve ARM şablonları ve Azure portalı ile kaynakları dağıtma.

"parameters": {
  "demoString": {
    "type": "string"
  },
  "demoInt": {
    "type": "int"
  },
  "demoBool": {
    "type": "bool"
  },
  "demoObject": {
    "type": "object"
  },
  "demoArray": {
    "type": "array"
  }
}

Güvenli parametreler

Dize veya nesne parametrelerini güvenli olarak işaretleyebilirsiniz. Güvenli parametrenin değeri dağıtım geçmişine kaydedilmez ve günlüğe kaydedilmez.

"parameters": {
  "demoPassword": {
    "type": "secureString"
  },
  "demoSecretObject": {
    "type": "secureObject"
  }
}

İzin verilen değerler

Bir parametre için izin verilen değerler tanımlayabilirsiniz. Bir dizide izin verilen değerleri sağlarsınız. İzin verilen değerlerden biri olmayan parametre için bir değer geçirilirse dağıtım doğrulama sırasında başarısız olur.

"parameters": {
  "demoEnum": {
    "type": "string",
    "allowedValues": [
      "one",
      "two"
    ]
  }
}

Default value

Parametre için varsayılan bir değer belirtebilirsiniz. Varsayılan değer, dağıtım sırasında bir değer sağlanmayan durumlarda kullanılır.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso"
  }
}

Parametrenin diğer özellikleriyle birlikte varsayılan bir değer belirtmek için aşağıdaki söz dizimini kullanın.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso",
    "allowedValues": [
      "Contoso",
      "Fabrikam"
    ]
  }
}

İfadeleri varsayılan değerle kullanabilirsiniz. Parametreler bölümündeki başvuru işlevini veya liste işlevlerinden herhangi birini kullanamazsınız. Bu işlevler bir kaynağın çalışma zamanı durumunu alır ve parametreler çözümlendiğinde dağıtımdan önce yürütülemez.

İfadelere diğer parametre özellikleriyle izin verilmez.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

Varsayılan bir değer oluşturmak için başka bir parametre değeri kullanabilirsiniz. Aşağıdaki şablon, site adından bir konak planı adı oluşturur.

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]"
  }
}

Ancak, bir değişkene varsayılan değer olarak başvuramazsınız.

Uzunluk kısıtlamaları

Dize ve dizi parametreleri için en düşük ve en yüksek uzunlukları belirtebilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğe sayısını gösterir.

Aşağıdaki örnekte iki parametre bildirmektedir. Bir parametre, 3-24 karakter uzunluğunda olması gereken bir depolama hesabı adıdır. Diğer parametre, 1-5 öğeden olması gereken bir dizidir.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "appNames": {
    "type": "array",
    "minLength": 1,
    "maxLength": 5
  }
}

Tamsayı kısıtlamaları

Tamsayı parametreleri için en düşük ve en yüksek değerleri ayarlayabilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz.

"parameters": {
  "month": {
    "type": "int",
    "minValue": 1,
    "maxValue": 12
  }
}

Nesne kısıtlamaları

Nesne kısıtlamalarına yalnızca nesneler üzerinde izin verilir ve yalnızca languageVersion 2.0 ile kullanılabilir.

Properties

değeri properties , =>tür tanımının özellik adı eşlemesidir.

Aşağıdaki örnek , kabul eder, ancak , {"foo": "", "bar": 1}veya veya özelliği olmayan herhangi bir bar foo nesneyi reddeder{"foo": "string", "bar": 1}{"foo": "string", "bar": -1}.

"parameters": {
  "objectParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    }
  }
}

Özelliğin tür tanımında "null atanabilir": true kısıtlaması olmadığı sürece tüm özellikler gereklidir. Yukarıdaki örnekteki her iki özelliği de isteğe bağlı hale getirmek için şöyle görünür:

"parameters": {
  "objectParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    }
  }
}

additionalProperties

değeri additionalProperties bir tür tanımı veya boole değeridir. additionalProperties Hiçbir kısıtlama tanımlanmamışsa, varsayılan değer olurtrue.

Değer bir tür tanımıysa, değer kısıtlamada belirtilmeyen tüm özelliklere uygulanan şemayı properties açıklar. Aşağıdaki örnek kabul {"fizz": "buzz", "foo": "bar"} eder ancak reddeder {"property": 1}.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    },
    "additionalProperties": {
      "type": "string"
    }
  }
}

değer ise false, kısıtlamada properties tanımlananların ötesinde hiçbir özellik sağlanamaz. Aşağıdaki örnek kabul eder {"foo": "string", "bar": 1}, ancak reddeder {"foo": "string", "bar": 1, "fizz": "buzz"}.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": false
  }
}

Değer ise true, kısıtlamada tanımlanmayan properties herhangi bir özellik herhangi bir değeri kabul eder. Aşağıdaki örnek kabul {"foo": "string", "bar": 1, "fizz": "buzz"}eder.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": true
  }
}

Discriminator

değeri discriminator , ayrıştırıcı özelliğine göre hangi şemanın uygulanacağını tanımlar. Aşağıdaki örnek veya kabul eder {"type": "ints", "foo": 1, "bar": 2} ancak reddeder{"type": "ints", "fizz": "buzz"}.{"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}

"parameters": {
  "taggedUnionParameter": {
    "type": "object",
    "discriminator": {
      "propertyName": "type",
      "mapping": {
        "ints": {
          "type": "object",
          "additionalProperties": {"type": "int"}
        },
        "strings": {
          "type": "object",
          "additionalProperties": {"type": "string"}
          }
      }
    }
  }
}

Dizi kısıtlamaları

Dizi kısıtlamalarına yalnızca dizilerde izin verilir ve yalnızca languageVersion 2.0 ile kullanılabilir.

prefixItems

değeriprefixItems, tür tanımlarından oluşan bir dizidir. Değerdeki her tür tanımı, aynı dizindeki bir dizinin öğesini doğrulamak için kullanılacak şemadır. Aşağıdaki örnek veya [1]öğesini kabul [1, true] eder ancak reddeder[1, "string"]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}

öğe

değeri items bir tür tanımı veya boole değeridir. items Hiçbir kısıtlama tanımlanmamışsa, varsayılan değer olurtrue.

Değer bir tür tanımıysa, dizin kısıtlamanın en büyük dizininden prefixItems büyük olan dizinin tüm öğelerine uygulanan şemayı açıklar. Aşağıdaki örnek şunu kabul [1, true, 1] eder veya [1, true, 1, 1] reddeder [1, true, "foo"]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      { "type": "int" },
      { "type": "bool" }
    ],
    "items": { "type": "int" },
    "defaultValue": [1, true, "foo"]
  }
}

kullanmadan prefixItemskullanabilirsinizitems. Aşağıdaki örnek şunu kabul [1, 2] eder veya [1] reddeder ["foo"]:

"parameters": {
  "intArrayParameter": {
    "type": "array",
    "items": {"type": "int"}
  }
}

değer ise false, doğrulanan dizi kısıtlamayla tam olarak aynı uzunlukta prefixItems olmalıdır. Aşağıdaki örnek kabul eder, ancak ve 'yi [1, true, false, "foo", "bar"]reddeder.[1, true][1, true, 1]

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ],
    "items": false
  }
}

Değer true ise, dizini kısıtlamanın en büyük dizininden prefixItems büyük olan dizinin öğeleri herhangi bir değeri kabul eder. Aşağıdaki örneklerde , [1, true, 1] ve [1, true, false, "foo", "bar"]kabul [1, true]edilebilir.

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}
"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  },
  "items": true
}

null atanabilir kısıtlama

Null atanabilir kısıtlama yalnızca languageVersion 2.0 ile kullanılabilir. Değerin atlanmış veya atlanmış olabileceğini null gösterir. Bir örnek için bkz . Özellikler .

Açıklama

Şablonunuzun kullanıcılarının sağlayabilecekleri değeri anlamasına yardımcı olmak için parametreye açıklama ekleyebilirsiniz. Şablon portal aracılığıyla dağıtılırken, açıklamada sağladığınız metin otomatik olarak bu parametre için ipucu olarak kullanılır. Yalnızca metin parametre adından çıkarılabilenden daha fazla bilgi sağladığında açıklama ekleyin.

"parameters": {
  "virtualMachineSize": {
    "type": "string",
    "metadata": {
      "description": "Must be at least Standard_A3 to support 2 NICs."
    },
    "defaultValue": "Standard_DS1_v2"
  }
}

Parametre kullanma

Parametrenin değerine başvurmak için parameters işlevini kullanın. Aşağıdaki örnekte anahtar kasası adı için parametre değeri kullanılmaktadır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "defaultValue": "[format('keyVault{0}', uniqueString(resourceGroup().id))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-06-01-preview",
      "name": "[parameters('vaultName')]",
      ...
    }
  ]
}

Parametre olarak nesneler

İlişkili değerleri bir nesne olarak geçirerek düzenleyebilirsiniz. Bu yaklaşım şablondaki parametre sayısını da azaltır.

Aşağıdaki örnekte nesne olan bir parametre gösterilmektedir. Varsayılan değer, nesne için beklenen özellikleri gösterir. Bu özellikler, dağıtılacak kaynağı tanımlarken kullanılır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vNetSettings": {
      "type": "object",
      "defaultValue": {
        "name": "VNet1",
        "location": "eastus",
        "addressPrefixes": [
          {
            "name": "firstPrefix",
            "addressPrefix": "10.0.0.0/22"
          }
        ],
        "subnets": [
          {
            "name": "firstSubnet",
            "addressPrefix": "10.0.0.0/24"
          },
          {
            "name": "secondSubnet",
            "addressPrefix": "10.0.1.0/24"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-02-01",
      "name": "[parameters('vNetSettings').name]",
      "location": "[parameters('vNetSettings').location]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vNetSettings').addressPrefixes[0].addressPrefix]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('vNetSettings').subnets[0].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[0].addressPrefix]"
            }
          },
          {
            "name": "[parameters('vNetSettings').subnets[1].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[1].addressPrefix]"
            }
          }
        ]
      }
    }
  ]
}

Örnek şablonlar

Aşağıdaki örneklerde parametreleri kullanma senaryoları gösterilmektedir.

Şablon Açıklama
varsayılan değerler için işlevler içeren parametreler Parametreler için varsayılan değerleri tanımlarken şablon işlevlerinin nasıl kullanılacağını gösterir. Şablon herhangi bir kaynak dağıtmaz. Parametre değerlerini oluşturur ve bu değerleri döndürür.
parametre nesnesi Parametre için nesne kullanmayı gösterir. Şablon herhangi bir kaynak dağıtmaz. Parametre değerlerini oluşturur ve bu değerleri döndürür.

Sonraki adımlar