Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) değişkenleri tanımlama ve kullanma işlemleri açıklanmaktadır. Şablonunuzu basitleştirmek için değişkenleri kullanırsınız. Şablonunuzun tamamında karmaşık ifadeleri yinelemek yerine, karmaşık ifadeyi içeren bir değişken tanımlarsınız. Ardından bu değişkeni şablonunuzun tamamında gerektiği gibi kullanırsınız.
Resource Manager, dağıtım işlemlerini başlatmadan önce değişkenleri çözümler. Şablonda değişkenin kullanıldığı her yerde Resource Manager, değişkeni çözümlenen değerle değiştirir.
İpucu
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep önerilir. Daha fazla bilgi edinmek için bkz. değişkenler.
Şablonda 256 değişkenle sınırlısınız. Daha fazla bilgi için bkz. şablon sınırları.
Değişken tanımlama
Değişken tanımlarken, değişken için bir veri türü belirtmezsiniz. Bunun yerine bir değer veya şablon ifadesi sağlayın. Değişken türü çözümlenen değerden çıkarılır. Aşağıdaki örnek bir değişkeni bir dizeye ayarlar:
"variables": {
"stringVar": "example value"
},
Değişkeni oluşturmak için bir parametreden veya başka bir değişkenden değeri kullanın:
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]"
}
Değişken değerini oluşturmak için işlevleri kullanabilirsiniz template .
Aşağıdaki örnek, depolama hesabı adı için bir dize değeri oluşturur. Parametre değeri almak için birkaç template işlev kullanır ve bunu benzersiz bir dizeyle birleştirir:
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
değişken bildiriminde reference işlevini veya işlevlerden herhangi birini list kullanamazsınız. Bu işlevler bir kaynağın çalışma zamanı durumunu alır ve değişkenler çözümlendiğinde dağıtımdan önce yürütülemez.
Değişken kullanma
Aşağıdaki örnekte, bir kaynak özelliği için değişkenin nasıl kullanılacağı gösterilmektedir.
Değişkenin değerine başvurmak için işlevini kullanın variables :
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageName')]",
...
}
]
Örnek şablon
Aşağıdaki şablon herhangi bir kaynak dağıtmaz. Farklı değişken türlerini bildirmenin bazı yollarını gösterir:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]",
"arrayVar": [
1,
2,
3,
4
],
"objectVar": {
"property1": "value1",
"property2": "value2"
},
"copyWithinVar": {
"copy": [
{
"name": "disks",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
},
{
"name": "diskNames",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('diskNames', 1))]"
}
]
},
"copy": [
{
"name": "topLevelCopy1",
"count": 5,
"input": {
"name": "[concat('oneDataDisk', copyIndex('topLevelCopy1', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy1')]"
}
},
{
"name": "topLevelCopy2",
"count": 3,
"input": {
"name": "[concat('twoDataDisk', copyIndex('topLevelCopy2', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy2')]"
}
},
{
"name": "topLevelCopy3",
"count": 4,
"input": "[concat('stringValue', copyIndex('topLevelCopy3'))]"
},
{
"name": "topLevelCopy4",
"count": 4,
"input": "[copyIndex('topLevelCopy4')]"
}
]
},
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[variables('stringVar')]"
},
"concatToVariableOutput": {
"type": "string",
"value": "[variables('concatToVar')]"
},
"concatToParameterOutput": {
"type": "string",
"value": "[variables('concatToParam')]"
},
"arrayOutput": {
"type": "array",
"value": "[variables('arrayVar')]"
},
"arrayElementOutput": {
"type": "int",
"value": "[variables('arrayVar')[0]]"
},
"objectOutput": {
"type": "object",
"value": "[variables('objectVar')]"
},
"copyWithinVariableOutput": {
"type": "object",
"value": "[variables('copyWithinVar')]"
},
"topLevelCopyOutput1": {
"type": "array",
"value": "[variables('topLevelCopy1')]"
},
"topLevelCopyOutput2": {
"type": "array",
"value": "[variables('topLevelCopy2')]"
},
"topLevelCopyOutput3": {
"type": "array",
"value": "[variables('topLevelCopy3')]"
},
"topLevelCopyOutput4": {
"type": "array",
"value": "[variables('topLevelCopy4')]"
}
}
}
Yapılandırma değişkenleri
Bir ortamı yapılandırmak için ilgili değerleri tutan değişkenler tanımlayabilirsiniz. Değişkenini değerlerle bir nesne olarak tanımlarsınız. Aşağıdaki örnekte, test ve prod olmak üzere iki ortam için değerleri tutan bir nesne gösterilmektedir. Dağıtım sırasında şu değerlerden birini geçirin:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentName": {
"type": "string",
"allowedValues": [
"test",
"prod"
],
"metadata": {
"description": "Specify either test or prod for configuration values."
}
}
},
"variables": {
"environmentSettings": {
"test": {
"instanceSize": "Small",
"instanceCount": 1
},
"prod": {
"instanceSize": "Large",
"instanceCount": 4
}
}
},
"resources": [],
"outputs": {
"instanceSize": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceSize]",
"type": "string"
},
"instanceCount": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceCount]",
"type": "int"
}
}
}
Sonraki Adımlar
- Değişkenlerin kullanılabilir özellikleri hakkında daha fazla bilgi edinmek için BKZ. ARM şablonlarının yapısı ve söz dizimi.
- Değişken oluşturma hakkında öneriler için bkz. En iyi yöntemler - değişkenler.
- Bir ağ güvenlik grubuna güvenlik kuralları atayan örnek bir şablon için bkz. ağ güvenlik kuralları ve parametre dosyası.