ARM şablonlarındaki değişkenler
Bu makalede Azure Resource Manager şablonunuzda (ARM şablonu) değişkenlerin nasıl tanımlanacağı ve kullanılacağı açıklanmaktadır. Şablonunuzu basitleştirmek için değişkenler kullanırsınız. Şablonunuz genelinde karmaşık ifadeler yinelemek yerine, karmaşık ifadeyi içeren bir değişken tanımlarsınız. Daha sonra bu değişkeni, şablonunuzun tamamında gereken şekilde kullanırsınız.
Kaynak Yöneticisi, dağıtım işlemlerini başlatmadan önce değişkenleri çözer. Değişken şablonun herhangi bir yerinde kullanıldığında Resource Manager bu değişkenin yerine çözümlenen değeri koyar.
Değişken tanımla
Bir 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 algılanır. Aşağıdaki örnek bir dize için bir değişken ayarlar.
"variables": {
"stringVar": "example value"
},
Değişkeni oluşturmak için, bir parametresinden veya başka bir değişkenden değeri kullanabilirsiniz.
"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 şablon işlevlerini kullanabilirsiniz.
Aşağıdaki örnek, depolama hesabı adı için bir dize değeri oluşturur. Bir parametre değeri almak için çeşitli şablon işlevleri kullanır ve onu benzersiz bir dizeye birleştirir.
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
Başvuru işlevini veya değişken bildiriminde herhangi bir liste işlevini 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 kullan
Aşağıdaki örnek, bir kaynak özelliği için değişkeninin nasıl kullanılacağını gösterir.
Değişkenin değerine başvurmak için, değişkenler işlevini kullanın.
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageName')]",
...
}
]
Örnek şablon
Aşağıdaki şablon hiçbir kaynak dağıtmaz. Farklı türlerde değişkenler 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şkeni değerleriyle bir nesne olarak tanımlarsınız. Aşağıdaki örnek, iki ortam için değerleri tutan bir nesne gösterir- Test ve Üretim. Dağıtım sırasında bu 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 bilgi edinmek için bkz. ARM şablonlarının yapısını ve sözdizimini anlayın.
- Değişken oluşturma hakkında öneriler için bkz. en iyi yöntemler-değişkenler.
- Ağ güvenlik grubuna güvenlik kuralları atayan örnek bir şablon için bkz. ağ güvenlik kuralları ve parametre dosyası.