Nesneleri bir kopyalama şablonunda kopyalama döngüsünde parametre Azure Resource Manager kullanma
Nesneleri şablonlarda parametre olarak Azure Resource Manager bir kopyalama döngüsüne dahil etmek istediğiniz için, bunları bu şekilde kullanan bir örnek burada ve dolayısıyla:
Bu yaklaşım, özellikle de alt kaynakları dağıtmak için seri kopyalamadöngüsüyle birlikte olduğunda çok yararlı olur.
Bunu göstermek için, iki güvenlik kuralıyla bir ağ güvenlik grubu (NSG) dağıtan bir şablona bakalım.
İlk olarak parametrelerimize bakalım. Şablonumuza bakarak adlı bir dizi içeren adlı bir parametre networkSecurityGroupsSettings tanımlandığımızı securityRules göreceğiz. Bu dizi, bir güvenlik kuralı için bir dizi ayar belirten iki JSON nesnesi içerir.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters":{
"networkSecurityGroupsSettings": {
"value": {
"securityRules": [
{
"name": "RDPAllow",
"description": "allow RDP connections",
"direction": "Inbound",
"priority": 100,
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "10.0.0.0/24",
"sourcePortRange": "*",
"destinationPortRange": "3389",
"access": "Allow",
"protocol": "Tcp"
},
{
"name": "HTTPAllow",
"description": "allow HTTP connections",
"direction": "Inbound",
"priority": 200,
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "10.0.1.0/24",
"sourcePortRange": "*",
"destinationPortRange": "80",
"access": "Allow",
"protocol": "Tcp"
}
]
}
}
}
}
Şimdi şablonumuza göz atabilirsiniz. NSG'yi dağıtan adlı bir kaynağımız var ve ARM'nin yerleşik özellik yineleme özelliği de var; şablonunuzdaki bir kaynağın özellikler bölümüne kopyalama döngüsü ekleyerek dağıtım sırasında bir özelliğin öğe sayısını dinamik olarak NSG1 ayarlayabilirsiniz. NSG1 Ayrıca şablon söz dizimlerini yinelemek zorunda kalmadan da kaçınabilirsiniz.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"VNetSettings": {
"type": "object"
},
"networkSecurityGroupsSettings": {
"type": "object"
}
},
"resources": [
{
"apiVersion": "2020-05-01",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('VNetSettings').name]",
"location": "[resourceGroup().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]"
}
}
]
}
},
{
"apiVersion": "2020-05-01",
"type": "Microsoft.Network/networkSecurityGroups",
"name": "NSG1",
"location": "[resourceGroup().location]",
"properties": {
"copy": [
{
"name": "securityRules",
"count": "[length(parameters('networkSecurityGroupsSettings').securityRules)]",
"input": {
"description": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].description]",
"priority": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].priority]",
"protocol": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].protocol]",
"sourcePortRange": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].sourcePortRange]",
"destinationPortRange": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].destinationPortRange]",
"sourceAddressPrefix": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].sourceAddressPrefix]",
"destinationAddressPrefix": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].destinationAddressPrefix]",
"access": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].access]",
"direction": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex()].direction]"
}
}
]
}
}
]
}
Şimdi alt kaynakta özellik değerlerimizi nasıl belirttiğinize daha yakından securityRules bakalım. Tüm özelliklerimize işlevi kullanılarak başvurulur ve ardından yinelemenin geçerli değerine göre dizine alan dizimize başvuru yapmak için parameters() nokta securityRules işleci kullanılır. Son olarak, nesnenin adına başvuru yapmak için başka bir nokta işleci kullanıruz.
Şablonu deneyin
üzerinde örnek bir şablon GitHub. Şablonu dağıtmak için, depolamayı kopya edin ve aşağıdaki Azure CLI komutlarını çalıştırın:
git clone https://github.com/mspnp/template-examples.git
cd template-examples/example3-object-param
az group create --location <location> --name <resource-group-name>
az deployment group create -g <resource-group-name> \
--template-uri https://raw.githubusercontent.com/mspnp/template-examples/master/example3-object-param/deploy.json \
--parameters deploy.parameters.json
Sonraki adımlar
- Bir nesne dizisini kullanarak bir JSON şemasına dönüştüren bir şablon oluşturma hakkında bilgi alın. Bkz. Bir özellik dönüştürücü ve toplayıcıyı Azure Resource Manager uygulama