Objektumok használata paraméterekként egy másolási hurokban egy Azure Resource Manager-sablonban
Ha objektumokat használ paraméterekként az Azure Resource Manager-sablonokban (ARM-sablonokban), azokat beillesztheti egy másolási hurokba. Ez a technika nagyon hasznos, ha soros másolási hurokkal kombinálják, különösen a gyermekerőforrások üzembe helyezéséhez.
Ennek a megközelítésnek a bemutatásához tekintsünk meg egy sablont, amely egy hálózati biztonsági csoportot (NSG-t) helyez üzembe két biztonsági szabmánnyal.
Először nézzük meg a paramétereket. Amikor megvizsgáljuk a sablont, azt látjuk, hogy meghatároztunk egy nevű networkSecurityGroupsSettings
paramétert, amely tartalmaz egy nevű securityRules
tömböt. Ez a tömb két JSON-objektumot tartalmaz, amelyek mindegyike megadja a biztonsági szabályt meghatározó beállításokat.
{
"$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"
}
]
}
}
}
}
Most nézzük meg a sablont. Van egy nevű NSG1
erőforrásunk, amely üzembe helyezi az NSG-t. Emellett az ARM beépített tulajdonság iterációs funkcióját is használja. Ha másolási hurkot ad hozzá egy erőforrás tulajdonságok szakaszához a sablonban, dinamikusan beállíthatja egy tulajdonság elemeinek számát az üzembe helyezés során. A sablonszintaxis megismétlését sem kell megismételnie.
{
"$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": {
"name": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].name]",
"properties": {
"description": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].description]",
"priority": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].priority]",
"protocol": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].protocol]",
"sourcePortRange": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].sourcePortRange]",
"destinationPortRange": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].destinationPortRange]",
"sourceAddressPrefix": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].sourceAddressPrefix]",
"destinationAddressPrefix": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].destinationAddressPrefix]",
"access": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].access]",
"direction": "[parameters('networkSecurityGroupsSettings').securityRules[copyIndex('securityRules')].direction]"
}
}
}
]
}
}
]
}
Nézzük meg közelebbről, hogyan adhatja meg a tulajdonságértékeket a securityRules
gyermekerőforrásban. Az összes tulajdonságra a függvény hivatkozik parameters()
. Ezután a pont operátorral hivatkozunk a tömbre securityRules
, és indexeljük az iteráció aktuális értéke alapján. Végül egy másik pont operátort használunk az objektum nevére való hivatkozáshoz.
Próbálja ki a sablont
Egy példasablon érhető el a GitHubon. A sablon üzembe helyezéséhez klónozza az adattárat, és futtassa a következő Azure CLI-parancsokat :
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
Következő lépések
- Azure Resource Manager
- Mik azok az ARM-sablonok?
- Oktatóanyag: Az első ARM-sablon létrehozása és üzembe helyezése
- Oktatóanyag: Erőforrás hozzáadása ARM-sablonhoz
- AJÁNLOTT ELJÁRÁSOK AZ ARM-sablonhoz
- Az Azure Resource Manager dokumentációja
- ARM-sablon dokumentációja
Kapcsolódó források (lehet, hogy a cikkek angol nyelvűek)
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: